This chapter introduces the reader to the Linux Advanced Radio Terminal (LART) by describing hardware specifications and a range of relevant resources.
The LART is part of a project at the Technical University of Delft to do wearable computer research. The first aspect of this was building a suitable platform as nothing with the right combination of low-power, high-performance and low cost existed at the time. The result is offically the 'Linux Advanced Radio Terminal' but a look at the Canonical Abbreviation/Acronym List suggests this may be a contrived acronym.
Part of the design philosophy was that it could be built without expensive facilities and it was easy to add bits of hardware for your own purposes. This combined with its power/performance ratio makes it an excellent development tool. In practice buying the parts to make them yourself is a time-consuming and difficult process, so Aleph One and Remote12 Systems have made it available as an assembled tested development kit. We hope this document will get you going in LART/ARMLinux development quickly and reasonably painlessly.
Many users of this chapter will have bought the Aleph One LART development kit. If you haven't, the information here will still be useful but references to the supplied connectors and cables will need to be adjusted to whatever equipment you are using. The Aleph One kit comprises:
LART main board with blob bootloader installed;
This Guide to ARMLinux for Developers book on paper and CD ROM;
Aleph ARMLinux distribution for LART including suitable kernels, RAMdisks and tools for the LART, as well as all the Debian 2.2release2 packages in binary and source form on 5 CDs;
JTAG adaptor board;
Parallel extension cable;
Twin-headed serial cable;
Power cable.
This is everything you need to get going (apart from a host machine); we hope you enjoy developing on it.
(We no longer sell LART kits, but you may be interested in our Balloon Board Development Kit.)
The specifications for the LART mainboard are as follows:
220 MHz Digital SA-1100 StrongARM CPU;
32 MB EDO RAM;
4 MB Intel Fast boot block Flash memory;
power usage of less than 1W;
performance in excess of 200 MIPS.
The board can run standalone, booting an OS from Flash.
The 4MB Flash is sufficient for a:
bootloader;
compressed kernel;
compressed RAMdisk.
The LART accepts an input voltage of between 3.5 and 10 Volts, although it can be modified to accept up to 16V. The on-board DC-DC converters have an efficiency of between 90 and 95%.
Almost all signals from the SA-1100 are available on the external connectors.
The High-speed Connector is an SMD with 0.8mm pitch and offers:
access to the 32-bit data bus;
access to all 26 address lines;
high-speed peripherals with a data rate in excess of 400 MB/second.
The Low-speed Connector is actually three separate through-hole connectors with a 2mm pitch which:
export General Purpose (GP) I/O pins and most of the data/address buses to implement ISA or PCMCIA-based peripherals;
are ideal for connecting to low-speed devices.
Additional connectors include a:
reset connector;
voltage/current measurement point;
power connector;
JTAG connector.
The Kitchen Sink Board (KSB) provides the LART with a:
stereo 16-bit 44k1 audio output at line and headphone levels;
44-pin 2mm IDE/ATA interface;
connector for a single or quad Ethernet board;
two PS/2 connectors for keyboard and mouse;
mono audio I/O from an UCB1200;
connectors for POTS, IrDA, USB clients, video and touchscreens.
The Ethernet is a 10Base-T adaptor that connects through the Kitchen Sink Board.
The core of the board is a Crystal CS8900A Ethernet chip with :
facilities for a bootROM;
an 8-bit parallel output port.
Refer to the diagram and picture to familiarise yourself with the device. The view showing the StrongARM CPU and large inductors is the 'top' of the board throughout this document.
Power is supplied to the four pin connector in the top right. The supplied power lead is wired such that it doesn't matter which way round you plug it in - polarity will be correct. (The two central pins are +ve, the two outer -ve). The red LED next to the crystals in the lower left hand corner should glow when power is applied. At 5V, initial start-up current for a lone LART is ~160mA, dropping to ~80mA after a few seconds. Note that the supply voltage is between 4V and 10V. Some documents (including the LART website at the time of writing) give an upper limit of 16V but this will damage your LART! The LT1266 can take 20V nominal, but the design uses voltage doubling so the input voltage must remain below 10V unless the PSU is changed around (which can be quite easily done)
The serial connection is the 2x3 header. This supplies two simple serial ports (ground, data out, data in). The supplied cable should be plugged in so that the lip on the blue 2x3 connector points downwards. The white 9-pin-D connector is serial port 1; the blue 9-pin-D connector is serial port 2. Plug the white connector into your host computer.
If you need to re-flash the blob loader then you need to attach the JTAG dongle to the 1x8 header. The JTAG board should be attached so that the components on it are on top - i.e. components are on the same side as the StrongARM CPU on the LART.
It is possible to program flash memory through the SA-1100 JTAG interface. A utility to do this is provided. Aleph One supplied LARTs will already have had this done so you can skip to the next section.
In order to use the JTAG programmer, take the following steps:
connect the parallel cable to your computer's printer port;
connect the JTAG dongle to the cable;
connect the other end of the JTAG dongle to the LART, with the JTAG component side the same way up as the LART main board;
turn the LART on.
You can then issue the following command as root:
./Jflash-linux blob-1.0.7b
and you should see something like the following after which the LART will reset itself before running blob.
using printer port at 378 |
Output like this is typical of the 'JTAG reset problem':
error, failed to read device ID |
This is solved by putting a 100 OHM resistor between pins 6 (+3.3V) and 7 (nTRST) on the JTAG connector. nTRST will thereby be pulled to +3.3V so the JTAG bus won't be able to reset itself. This modification is already done on Aleph One supplied JTAG boards as they don't work without it. You can make other modifications to have the same effect (eg connect the JTAG reset pin to the MAX811 reset chip on the LART).
The only means of communicating with a bare LART is via its serial port. You should run a suitable piece of terminal software on your host. For a GNU/Linux host we recommend Minicom, which is very capable and easy to use.
In order to configure Minicom, take the following steps:
Run it with minicom -o to get to setup.
Set it to VT102, serial port ttyS0 (or ttyS1 if you are using that port) 9600baud 8N1 (8 data bits, No parity, 1 stop bit), no modem init string, no hardware handshaking.
Save that as lart config. Running Minicom as minicom lart will run it up with these options.
If you don't use Minicom for anything else then you can make these settings the overall default - Minicom calls it dfl - settings.
If you aren't sure which serial port you are using for the device, but your mouse or modem is in the other one then look at these thing to determine where the mouse or modem are plugged in:
/etc/gpm.conf will show what device gpm is using as your mouse
ls -l /dev/mouse is normally a link to the serial port your mouse is plugged into if you have a serial mouse
ls -l /dev/modem will give the same info for your modem.
If you don't have anything in either port then just try both with the following boot proceedure.
OK, now we're ready to go.
The reset pins are at the bottom left of the board, and a jumper is supplied to do a reset. The board will remain in reset as long as the two pins are connected. You may wish to attach a switch to these pins if you are resetting a lot!
On reset you should then see (from within your serial monitor) something like:
Consider yourself LARTed! |
Note: It always says Loading kernel/ramdisk whether or not a kernel and RAMdisk are actually present. It will just hang if it tries to boot a 'blank' kernel.
Blob version 1.0.8-pre2, |
Now press Enter within 10 seconds, otherwise it will go on to try and boot a kernel it doesn't yet have and will just hang. This should get you a blob prompt:
Autoboot aborted |
There are several pre-compiled kernels available on the CD and on-line. When you want to compile your own refer to the section called Compiling a Kernel in Chapter 7. The correct default config setting for LART is: make lart_config.
In order to upload kernels via the serial port to blob you need to put them in the correct format. Blob expects uucoded files. uuencode's syntax is:
uuencode {input filename} {name in uucoded file}>
output filename
so you uucode a kernel called zImage-2.4.1-rmk1-np2 like this:
uuencode zImage-2.4.1-rmk1-np2 zImage > zImage-2.4.1-rmk1-np2.uu
At the blob prompt enter 'download kernel' to upload a kernel. Blob will respond with:
Switching to 115200 baud |
Switch to 115200 like it tells you (otherwise the upload would take hours). If using Minicom this is done by ALT-O, select 'Serial port setup', then E for 'Bps/Par/Bits', I for '115200'. Then Enter,Enter,Escape to get back to the prompt.
You ought to be able to use Minicom's 'ASCII upload' at this stage, but it doesn't seem to work reliably with no flow control, so we recommend you use a second virtual terminal and do:
cat zImage-2.4.1-rmk1-np2.uu > /dev/ttyS0
which simply copies the uucoded kernel to your serial port. Switch back the Minicom virtual termainl and you should see a line of dots printed as the kernel loads.Once the upload is complete blob will print something like:
(Please switch your terminal back to 9600 baud) |
Switch your terminal back as directed and hit return to get a blob prompt. You can check the size of the uploaded kernel by typing 'status'.
Now you need to do the same proceedure again to upload a RAMdisk. The only difference is that the blob command is 'download ramdisk' instead, and obviously you use the filename for the (uucoded) RAMdisk.
Blob has the facility to save uploaded kernels and RAMdisks into its flash RAM. However at the time of writing it is not capable of writing to the flash it is itself running from so this function only works if you have a separate bit of flash memory containing blob to plug in. It needs modifying to be able to copy itself to SRAM first and then execute from there.
There are several kernels and RAMdisks supplied on the CD, and these will be updated along with the releases. We have found that a good set of software to use at the time of writing is: blob v1.0.7b, zImage-2.4.0-rmk5-np2, and either ramdisk-lart-glibc-2.1.2.gz (for a basic RAMdisk), or ramdisk-2.4.0-rmk5-np2.gz for a bigger one including an mp3 file (which needs a KSB to play).
So finally we are ready to go. At the blob prompt enter 'boot'. It says
Starting kernel... |
Uncompressing Linux........ |
A number of useful schematics for the mainboard, kitchen sink, ethernet board and JTAG programmer are available in PDF format on the CD and from the LART website. On the CD they are all in LART/Hardware/ and only the schematics for the version of hardware in production are present. If you want to see the older schematics then you'll need to go to the website.
Mainboard
CD: /hardware/LART/Lart-rev-4.pdf.
Web: Lart-rev-4.pdf.
Kitchen Sink Board (KSB)
Ethernet Board
JTAG