forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
301 lines
9.0 KiB
301 lines
9.0 KiB
============================================ |
|
The Intel Assabet (SA-1110 evaluation) board |
|
============================================ |
|
|
|
Please see: |
|
http://developer.intel.com |
|
|
|
Also some notes from John G Dorsey <[email protected]>: |
|
http://www.cs.cmu.edu/~wearable/software/assabet.html |
|
|
|
|
|
Building the kernel |
|
------------------- |
|
|
|
To build the kernel with current defaults:: |
|
|
|
make assabet_defconfig |
|
make oldconfig |
|
make zImage |
|
|
|
The resulting kernel image should be available in linux/arch/arm/boot/zImage. |
|
|
|
|
|
Installing a bootloader |
|
----------------------- |
|
|
|
A couple of bootloaders able to boot Linux on Assabet are available: |
|
|
|
BLOB (http://www.lartmaker.nl/lartware/blob/) |
|
|
|
BLOB is a bootloader used within the LART project. Some contributed |
|
patches were merged into BLOB to add support for Assabet. |
|
|
|
Compaq's Bootldr + John Dorsey's patch for Assabet support |
|
(http://www.handhelds.org/Compaq/bootldr.html) |
|
(http://www.wearablegroup.org/software/bootldr/) |
|
|
|
Bootldr is the bootloader developed by Compaq for the iPAQ Pocket PC. |
|
John Dorsey has produced add-on patches to add support for Assabet and |
|
the JFFS filesystem. |
|
|
|
RedBoot (http://sources.redhat.com/redboot/) |
|
|
|
RedBoot is a bootloader developed by Red Hat based on the eCos RTOS |
|
hardware abstraction layer. It supports Assabet amongst many other |
|
hardware platforms. |
|
|
|
RedBoot is currently the recommended choice since it's the only one to have |
|
networking support, and is the most actively maintained. |
|
|
|
Brief examples on how to boot Linux with RedBoot are shown below. But first |
|
you need to have RedBoot installed in your flash memory. A known to work |
|
precompiled RedBoot binary is available from the following location: |
|
|
|
- ftp://ftp.netwinder.org/users/n/nico/ |
|
- ftp://ftp.arm.linux.org.uk/pub/linux/arm/people/nico/ |
|
- ftp://ftp.handhelds.org/pub/linux/arm/sa-1100-patches/ |
|
|
|
Look for redboot-assabet*.tgz. Some installation infos are provided in |
|
redboot-assabet*.txt. |
|
|
|
|
|
Initial RedBoot configuration |
|
----------------------------- |
|
|
|
The commands used here are explained in The RedBoot User's Guide available |
|
on-line at http://sources.redhat.com/ecos/docs.html. |
|
Please refer to it for explanations. |
|
|
|
If you have a CF network card (my Assabet kit contained a CF+ LP-E from |
|
Socket Communications Inc.), you should strongly consider using it for TFTP |
|
file transfers. You must insert it before RedBoot runs since it can't detect |
|
it dynamically. |
|
|
|
To initialize the flash directory:: |
|
|
|
fis init -f |
|
|
|
To initialize the non-volatile settings, like whether you want to use BOOTP or |
|
a static IP address, etc, use this command:: |
|
|
|
fconfig -i |
|
|
|
|
|
Writing a kernel image into flash |
|
--------------------------------- |
|
|
|
First, the kernel image must be loaded into RAM. If you have the zImage file |
|
available on a TFTP server:: |
|
|
|
load zImage -r -b 0x100000 |
|
|
|
If you rather want to use Y-Modem upload over the serial port:: |
|
|
|
load -m ymodem -r -b 0x100000 |
|
|
|
To write it to flash:: |
|
|
|
fis create "Linux kernel" -b 0x100000 -l 0xc0000 |
|
|
|
|
|
Booting the kernel |
|
------------------ |
|
|
|
The kernel still requires a filesystem to boot. A ramdisk image can be loaded |
|
as follows:: |
|
|
|
load ramdisk_image.gz -r -b 0x800000 |
|
|
|
Again, Y-Modem upload can be used instead of TFTP by replacing the file name |
|
by '-y ymodem'. |
|
|
|
Now the kernel can be retrieved from flash like this:: |
|
|
|
fis load "Linux kernel" |
|
|
|
or loaded as described previously. To boot the kernel:: |
|
|
|
exec -b 0x100000 -l 0xc0000 |
|
|
|
The ramdisk image could be stored into flash as well, but there are better |
|
solutions for on-flash filesystems as mentioned below. |
|
|
|
|
|
Using JFFS2 |
|
----------- |
|
|
|
Using JFFS2 (the Second Journalling Flash File System) is probably the most |
|
convenient way to store a writable filesystem into flash. JFFS2 is used in |
|
conjunction with the MTD layer which is responsible for low-level flash |
|
management. More information on the Linux MTD can be found on-line at: |
|
http://www.linux-mtd.infradead.org/. A JFFS howto with some infos about |
|
creating JFFS/JFFS2 images is available from the same site. |
|
|
|
For instance, a sample JFFS2 image can be retrieved from the same FTP sites |
|
mentioned below for the precompiled RedBoot image. |
|
|
|
To load this file:: |
|
|
|
load sample_img.jffs2 -r -b 0x100000 |
|
|
|
The result should look like:: |
|
|
|
RedBoot> load sample_img.jffs2 -r -b 0x100000 |
|
Raw file loaded 0x00100000-0x00377424 |
|
|
|
Now we must know the size of the unallocated flash:: |
|
|
|
fis free |
|
|
|
Result:: |
|
|
|
RedBoot> fis free |
|
0x500E0000 .. 0x503C0000 |
|
|
|
The values above may be different depending on the size of the filesystem and |
|
the type of flash. See their usage below as an example and take care of |
|
substituting yours appropriately. |
|
|
|
We must determine some values:: |
|
|
|
size of unallocated flash: 0x503c0000 - 0x500e0000 = 0x2e0000 |
|
size of the filesystem image: 0x00377424 - 0x00100000 = 0x277424 |
|
|
|
We want to fit the filesystem image of course, but we also want to give it all |
|
the remaining flash space as well. To write it:: |
|
|
|
fis unlock -f 0x500E0000 -l 0x2e0000 |
|
fis erase -f 0x500E0000 -l 0x2e0000 |
|
fis write -b 0x100000 -l 0x277424 -f 0x500E0000 |
|
fis create "JFFS2" -n -f 0x500E0000 -l 0x2e0000 |
|
|
|
Now the filesystem is associated to a MTD "partition" once Linux has discovered |
|
what they are in the boot process. From Redboot, the 'fis list' command |
|
displays them:: |
|
|
|
RedBoot> fis list |
|
Name FLASH addr Mem addr Length Entry point |
|
RedBoot 0x50000000 0x50000000 0x00020000 0x00000000 |
|
RedBoot config 0x503C0000 0x503C0000 0x00020000 0x00000000 |
|
FIS directory 0x503E0000 0x503E0000 0x00020000 0x00000000 |
|
Linux kernel 0x50020000 0x00100000 0x000C0000 0x00000000 |
|
JFFS2 0x500E0000 0x500E0000 0x002E0000 0x00000000 |
|
|
|
However Linux should display something like:: |
|
|
|
SA1100 flash: probing 32-bit flash bus |
|
SA1100 flash: Found 2 x16 devices at 0x0 in 32-bit mode |
|
Using RedBoot partition definition |
|
Creating 5 MTD partitions on "SA1100 flash": |
|
0x00000000-0x00020000 : "RedBoot" |
|
0x00020000-0x000e0000 : "Linux kernel" |
|
0x000e0000-0x003c0000 : "JFFS2" |
|
0x003c0000-0x003e0000 : "RedBoot config" |
|
0x003e0000-0x00400000 : "FIS directory" |
|
|
|
What's important here is the position of the partition we are interested in, |
|
which is the third one. Within Linux, this correspond to /dev/mtdblock2. |
|
Therefore to boot Linux with the kernel and its root filesystem in flash, we |
|
need this RedBoot command:: |
|
|
|
fis load "Linux kernel" |
|
exec -b 0x100000 -l 0xc0000 -c "root=/dev/mtdblock2" |
|
|
|
Of course other filesystems than JFFS might be used, like cramfs for example. |
|
You might want to boot with a root filesystem over NFS, etc. It is also |
|
possible, and sometimes more convenient, to flash a filesystem directly from |
|
within Linux while booted from a ramdisk or NFS. The Linux MTD repository has |
|
many tools to deal with flash memory as well, to erase it for example. JFFS2 |
|
can then be mounted directly on a freshly erased partition and files can be |
|
copied over directly. Etc... |
|
|
|
|
|
RedBoot scripting |
|
----------------- |
|
|
|
All the commands above aren't so useful if they have to be typed in every |
|
time the Assabet is rebooted. Therefore it's possible to automate the boot |
|
process using RedBoot's scripting capability. |
|
|
|
For example, I use this to boot Linux with both the kernel and the ramdisk |
|
images retrieved from a TFTP server on the network:: |
|
|
|
RedBoot> fconfig |
|
Run script at boot: false true |
|
Boot script: |
|
Enter script, terminate with empty line |
|
>> load zImage -r -b 0x100000 |
|
>> load ramdisk_ks.gz -r -b 0x800000 |
|
>> exec -b 0x100000 -l 0xc0000 |
|
>> |
|
Boot script timeout (1000ms resolution): 3 |
|
Use BOOTP for network configuration: true |
|
GDB connection port: 9000 |
|
Network debug at boot time: false |
|
Update RedBoot non-volatile configuration - are you sure (y/n)? y |
|
|
|
Then, rebooting the Assabet is just a matter of waiting for the login prompt. |
|
|
|
|
|
|
|
Nicolas Pitre |
|
[email protected] |
|
|
|
June 12, 2001 |
|
|
|
|
|
Status of peripherals in -rmk tree (updated 14/10/2001) |
|
------------------------------------------------------- |
|
|
|
Assabet: |
|
Serial ports: |
|
Radio: TX, RX, CTS, DSR, DCD, RI |
|
- PM: Not tested. |
|
- COM: TX, RX, CTS, DSR, DCD, RTS, DTR, PM |
|
- PM: Not tested. |
|
- I2C: Implemented, not fully tested. |
|
- L3: Fully tested, pass. |
|
- PM: Not tested. |
|
|
|
Video: |
|
- LCD: Fully tested. PM |
|
|
|
(LCD doesn't like being blanked with neponset connected) |
|
|
|
- Video out: Not fully |
|
|
|
Audio: |
|
UDA1341: |
|
- Playback: Fully tested, pass. |
|
- Record: Implemented, not tested. |
|
- PM: Not tested. |
|
|
|
UCB1200: |
|
- Audio play: Implemented, not heavily tested. |
|
- Audio rec: Implemented, not heavily tested. |
|
- Telco audio play: Implemented, not heavily tested. |
|
- Telco audio rec: Implemented, not heavily tested. |
|
- POTS control: No |
|
- Touchscreen: Yes |
|
- PM: Not tested. |
|
|
|
Other: |
|
- PCMCIA: |
|
- LPE: Fully tested, pass. |
|
- USB: No |
|
- IRDA: |
|
- SIR: Fully tested, pass. |
|
- FIR: Fully tested, pass. |
|
- PM: Not tested. |
|
|
|
Neponset: |
|
Serial ports: |
|
- COM1,2: TX, RX, CTS, DSR, DCD, RTS, DTR |
|
- PM: Not tested. |
|
- USB: Implemented, not heavily tested. |
|
- PCMCIA: Implemented, not heavily tested. |
|
- CF: Implemented, not heavily tested. |
|
- PM: Not tested. |
|
|
|
More stuff can be found in the -np (Nicolas Pitre's) tree.
|
|
|