Chapter 4. Installing ARMLinux on the Assabet
This chapter describes how to get your Assabet running ARMLinux.
The Assabet is an SA-1110 evaluation board which may be repackaged as a PDA. Notable features include:
The availability of programming utilities like the JTAG Programming Software V0.3 (for Windows) and Jflash-Linux (for Linux), and the bootloader Angelboot.
Neponset - a SA-1111 Development module with many additional interfaces.
Use of the 2.4 kernel series with support for the Assabet and Neponset via a patch chain.
The capacity to run MicroWindows although a backlight power source needs to be added on 'build phase 4' or earlier boards.
There is also support for Compact Flash on the Assabet and on PCMCIA support for the Neponset. In addition, the Socket LP-E CF + Card is now operative as is the IBM Microdrive.
Note: The behaviour of the hardware, bootloader and kernel can vary because of the presence of Neponset - the Microprocessor Development Module. Readers who intend to use Neponset with Assabet should therefore refer to the section called Install Neponset.
Carefully remove the Li-ion battery and LCD/touchscreen by releasing the fasteners on the board receptacles.
On Assabet (and Neponset), the bootloader can be installed by physically inserting the pre-programmed flash chips supplied with the kit.
Determine whether the board has a WindowsCE bootloader pre-installed by opening the StrataFlash sockets and examining the labels on each memory component. For precise details of the process of manipulating memories, refer to The Intel StrongARM SA-1110 Microprocessor Development Board Users' Guide section 2.3. (See the section called Useful Resources for the appropriate URL).
Remove all power from the board and remove the jumper from the master power clip if it is installed (this disconnects the battery power). Open Socket E11 (StrataFlash) by sliding the middle panel away from the notch before lifting the doors. Socket E12 can also be opened in a similar way. (E12 is directly opposite to E11 on the other side of the board).
The WindowsCE parts have a label which is similar to "WinCE E-Boot V3.0 L". Remove these parts with the suction part selector (similar to a pen supplied within a tube) and replace them with the parts which are labelled "Angel DB1110B 207D L".
Power, JTAG, RS232 and POTS connections are made through base station - a 14-pin header. Connect the serial cable to your development workstation which - on a SA-1110 - means that the header should be attached to serial port 1.
LED D4 should light up when the power is applied. Angel will then activate LED D8. After interrupt initialisation, Angel will strobe LED D9 four times. Supplementary information on the reset sequence can be obtained from DB1110_diag.txt which is bundled with Angel (http://developer.intel.com/design/strong/swsup/SA1110AngelKit.htm).
It is possible to attach the SA-1111 Development Module by using either of the 140-pin connectors which are found on the Assabet.
Make a record of the switchpack SW2 settings because these affect selection, bus speed and other important parameters. A comprehensive explanation of switch meanings can be found in the readme.txt which is included in the Angel distribution although a summary of switch meanings is provided in the following table.
Table 4-1. Switch Options for Switchpack SW2
|SW2-3||debug port is UART3||debug port is UART1b (on Neponset)|
|SW2-4||bus speed is 103MHz||bus speed is 51MHz (clamped to 51MHz if PLL==147MHz)|
|SW2-5||flash device page mode enabled||flash device page mode disabled|
|SW2-6||Angel fast boot mode||Angel debug mode (see DB1110_diag.txt)|
|SW2-8||boot from flash on Neponset||boot from flash on Assabet|
Note: All switches can be left in the off position except for the SW2-8 which can be left on.
Some copies of Neponset may contain a bug involving the on-board Philips UDA1341 audio codec. The bug involves the L3 MODE signal coming from the SA-1111 which is available from PWM1 - the dual-function pin. Phase 4 Neponset boards incorrectly route this signal to PWMO which prevents any configuration of the codec from software. However, this problem may be solved by unsoldering the jumper wire at J7 and moving it immediately adjacent to J4.
We recommend that you install the emdebian cross-development environment supplied. See the section called Emdebian in Chapter 8.
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 Assabet is: make assabet_config, and if you are using Assabet and Neponset together than it is make neponset_config.
Power it up and connect to the serial port.
Get the Angelboot code. The precompiled version should work but you will need to be root.
Copy dot.angelrc and angelboot from Assabet/tools/angelboot on the CD your development directory and rename dot.angelrc to .angelrc. Then .angelrc becomes classified as a hidden file so your filer may hide it from you. You will however, need to edit .angelrc so that it has the following settings:
Note: You should change device /dev/ttyS1 if your cable is plugged into ttyS0.
In order to configure Minicom, take the following steps:
Run it with minicom -o to get to setup.
Set it to VT102, serial port ttyS1 (matching the .angelrc file) 9600baud 8N1 (8 data bits, no parity, 1 stop bit), no modem init string, no hardware handshaking.
Save that as assabet config. Running Minicom as minicom assabet 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.
OK. Now we are ready to go. Make sure the Assabet is powered, reset, that you have the 4 flashes on the orange LED and that the serial port is connected. Run:
This will read the config from .angelrc before uploading the kernel and RAMdisk images. You should see the upload indicated, followed by several lines of stars during the kernel upload, then dots during the RAMdisk upload. See the section called Angel and Angelboot in Chapter 6 for more details on how angelboot is configured.
If everything works OK you should see a penguin and a login prompt on the touchscreen which will disappear after a few minutes. Hitting Return in Minicom (start it if it hasn't already with minicom assabet) should get you to a root prompt from where you can login as root. You will not need a password.
If your angelboot copy in strataflash becomes corrupt for any reason you can put angelboot back again by using the JTAG interface.
To use the JTAG interface, you will need:
To connect the custom 14-pin connector on the JTAG/serial/phone cable to the Assabet.
To connect the JTAG part (25-pin D connector) of the JTAG/serial/phone cable to your parallel port. Nothing else should be using the parallel port at the same time and you will need to be root as well.
To connect the power supply to the Assabet and power it up.
The Jflash-linux code (or Jflash - the Windows version). The pre-compiled binary suplied on the CD in Assabet/tools/Jflash/should work OK.
The binary of the bootloader which you will be putting in flash. Angel.bin is supplied with the Jflash distro.
To place the bootloader in flash, type:
When this process has finished, reset the Assabet and the LEDs should show everything is working OK.
A selection of useful RAMdisks is provided on the CD in Assabet/RAMdisks. These are the files that you upload using the 'otherfiles' entry in Angelboot.
See the section called Making a RAMdisk in Chapter 7 for details of making your own.
Using the ramdisk_ks RAMdisk it is possible to play a sound by issuing the following command:
cp <file> /dev/dsp
Where file is 44kHz stereo WAV file. Well, you can play any file you like this way, but it'll sound horrid if it's not a WAV file.
For PCMCIA to work you need kernel PCMCIA support compiled in and the cardmgr daemon in the RAMdisk and running. This is included on ramdisk_ks (2.5MB - expands to 6.8MB) which is on the CD. Use this RAMdisk if you want to use the CF slot on the Assabet.
To get a cf disk recognised, simply plug it in. You can then check it with the cat /proc/bus/pcmcia/00/stat command.
The disk can then be mounted in the following manner:
mount /dev/hda1 /mnt
Note: If you just pull disks out then things can get rather broken (and you may have to reset). You therefore need to umount the disk first.
You need to configure the card for your network environment in /etc/pcmcia/network.opts. You can then fill in IP and gateway details or simply use DHCP if it is available. Then, when you plug in the card, the eth0 interface is automatically created and the script is run to ifconfig the device. If you fill in an NFS mount in etc/fstab and specify the mount option in /etc/pcmcia/network.opts, the NFS mount is automatically done when you plug the card in and suddenly the network is available to you, making development and testing much easier.
It is possible to copy things off the CF disk in a situation where they won't fit onto the RAMdisk.
You can use the rest of the RAM (if some is free) by doing:
mke2fs /dev/ram1 (creates an ext2 filing system in ram)
mount /dev/ram1 /mnt/ram (mounts the ramdisk)
This defaults to creating an 8MB RAMdisk. Now you have 8Mb of 'disk' available to copy things into which will remain until you power down. You can just copy things out of /dev/hda1/<path>/<file> to /mnt/ram/<file> up to the size of the new RAMdisk.
Additional information can be obtained from:
The Intel StrongARM SA-1110 Microprocessor Development Board Users' Guide (http://developer.intel.com/design/strong/guides/278278.htm).
The Intel StrongARM SA-1110 Microprocessor Developers' Manual (http://developer.intel.com/design/strong/manuals/278278.htm).
The Institute for Complex Engineering (ICES) Technical Report (http://www.ices.edu).