1The Intel Assabet (SA-1110 evaluation) board 2============================================ 3 4Please see: 5http://developer.intel.com/design/strong/quicklist/eval-plat/sa-1110.htm 6http://developer.intel.com/design/strong/guides/278278.htm 7 8Also some notes from John G Dorsey <jd5q@andrew.cmu.edu>: 9http://www.cs.cmu.edu/~wearable/software/assabet.html 10 11 12Building the kernel 13------------------- 14 15To build the kernel with current defaults: 16 17 make assabet_config 18 make oldconfig 19 make dep 20 make zImage 21 22The resulting kernel image should be available in linux/arch/arm/boot/zImage. 23 24 25Installing a bootloader 26----------------------- 27 28A couple of bootloaders able to boot Linux on Assabet are available: 29 30BLOB (http://www.lart.tudelft.nl/lartware/blob/) 31 32 BLOB is a bootloader used within the LART project. Some contributed 33 patches were merged into BLOB to add support for Assabet. 34 35Compaq's Bootldr + John Dorsey's patch for Assabet support 36(http://www.handhelds.org/Compaq/bootldr.html) 37(http://www.wearablegroup.org/software/bootldr/) 38 39 Bootldr is the bootloader developed by Compaq for the iPAQ Pocket PC. 40 John Dorsey has produced add-on patches to add support for Assabet and 41 the JFFS filesystem. 42 43RedBoot (http://sources.redhat.com/redboot/) 44 45 RedBoot is a bootloader developed by Red Hat based on the eCos RTOS 46 hardware abstraction layer. It supports Assabet amongst many other 47 hardware platforms. 48 49RedBoot is currently the recommended choice since it's the only one to have 50networking support, and is the most actively maintained. 51 52Brief examples on how to boot Linux with RedBoot are shown below. But first 53you need to have RedBoot installed in your flash memory. A known to work 54precompiled RedBoot binary is available from the following location: 55 56ftp://ftp.netwinder.org/users/n/nico/ 57ftp://ftp.arm.linux.org.uk/pub/linux/arm/people/nico/ 58ftp://ftp.handhelds.org/pub/linux/arm/sa-1100-patches/ 59 60Look for redboot-assabet*.tgz. Some installation infos are provided in 61redboot-assabet*.txt. 62 63 64Initial RedBoot configuration 65----------------------------- 66 67The commands used here are explained in The RedBoot User's Guide available 68on-line at http://sources.redhat.com/ecos/docs-latest/redboot/redboot.html. 69Please refer to it for explanations. 70 71If you have a CF network card (my Assabet kit contained a CF+ LP-E from 72Socket Communications Inc.), you should strongly consider using it for TFTP 73file transfers. You must insert it before RedBoot runs since it can't detect 74it dynamically. 75 76To initialize the flash directory: 77 78 fis init -f 79 80To initialize the non-volatile settings, like whether you want to use BOOTP or 81a static IP address, etc, use this command: 82 83 fconfig -i 84 85 86Writing a kernel image into flash 87--------------------------------- 88 89First, the kernel image must be loaded into RAM. If you have the zImage file 90available on a TFTP server: 91 92 load zImage -r -b 0x100000 93 94If you rather want to use Y-Modem upload over the serial port: 95 96 load -m ymodem -r -b 0x100000 97 98To write it to flash: 99 100 fis create "Linux kernel" -b 0x100000 -l 0xc0000 101 102 103Booting the kernel 104------------------ 105 106The kernel still requires a filesystem to boot. A ramdisk image can be loaded 107as follows: 108 109 load ramdisk_image.gz -r -b 0x800000 110 111Again, Y-Modem upload can be used instead of TFTP by replacing the file name 112by '-y ymodem'. 113 114Now the kernel can be retrieved from flash like this: 115 116 fis load "Linux kernel" 117 118or loaded as described previously. To boot the kernel: 119 120 exec -b 0x100000 -l 0xc0000 121 122The ramdisk image could be stored into flash as well, but there are better 123solutions for on-flash filesystems as mentioned below. 124 125 126Using JFFS2 127----------- 128 129Using JFFS2 (the Second Journalling Flash File System) is probably the most 130convenient way to store a writable filesystem into flash. JFFS2 is used in 131conjunction with the MTD layer which is responsible for low-level flash 132management. More information on the Linux MTD can be found on-line at: 133http://www.linux-mtd.infradead.org/. A JFFS howto with some infos about 134creating JFFS/JFFS2 images is available from the same site. 135 136For instance, a sample JFFS2 image can be retrieved from the same FTP sites 137mentioned below for the precompiled RedBoot image. 138 139To load this file: 140 141 load sample_img.jffs2 -r -b 0x100000 142 143The result should look like: 144 145RedBoot> load sample_img.jffs2 -r -b 0x100000 146Raw file loaded 0x00100000-0x00377424 147 148Now we must know the size of the unallocated flash: 149 150 fis free 151 152Result: 153 154RedBoot> fis free 155 0x500E0000 .. 0x503C0000 156 157The values above may be different depending on the size of the filesystem and 158the type of flash. See their usage below as an example and take care of 159substituting yours appropriately. 160 161We must determine some values: 162 163size of unallocated flash: 0x503c0000 - 0x500e0000 = 0x2e0000 164size of the filesystem image: 0x00377424 - 0x00100000 = 0x277424 165 166We want to fit the filesystem image of course, but we also want to give it all 167the remaining flash space as well. To write it: 168 169 fis unlock -f 0x500E0000 -l 0x2e0000 170 fis erase -f 0x500E0000 -l 0x2e0000 171 fis write -b 0x100000 -l 0x277424 -f 0x500E0000 172 fis create "JFFS2" -n -f 0x500E0000 -l 0x2e0000 173 174Now the filesystem is associated to a MTD "partition" once Linux has discovered 175what they are in the boot process. From Redboot, the 'fis list' command 176displays them: 177 178RedBoot> fis list 179Name FLASH addr Mem addr Length Entry point 180RedBoot 0x50000000 0x50000000 0x00020000 0x00000000 181RedBoot config 0x503C0000 0x503C0000 0x00020000 0x00000000 182FIS directory 0x503E0000 0x503E0000 0x00020000 0x00000000 183Linux kernel 0x50020000 0x00100000 0x000C0000 0x00000000 184JFFS2 0x500E0000 0x500E0000 0x002E0000 0x00000000 185 186However Linux should display something like: 187 188SA1100 flash: probing 32-bit flash bus 189SA1100 flash: Found 2 x16 devices at 0x0 in 32-bit mode 190Using RedBoot partition definition 191Creating 5 MTD partitions on "SA1100 flash": 1920x00000000-0x00020000 : "RedBoot" 1930x00020000-0x000e0000 : "Linux kernel" 1940x000e0000-0x003c0000 : "JFFS2" 1950x003c0000-0x003e0000 : "RedBoot config" 1960x003e0000-0x00400000 : "FIS directory" 197 198What's important here is the position of the partition we are interested in, 199which is the third one. Within Linux, this correspond to /dev/mtdblock2. 200Therefore to boot Linux with the kernel and its root filesystem in flash, we 201need this RedBoot command: 202 203 fis load "Linux kernel" 204 exec -b 0x100000 -l 0xc0000 -c "root=/dev/mtdblock2" 205 206Of course other filesystems than JFFS might be used, like cramfs for example. 207You might want to boot with a root filesystem over NFS, etc. It is also 208possible, and sometimes more convenient, to flash a filesystem directly from 209within Linux while booted from a ramdisk or NFS. The Linux MTD repository has 210many tools to deal with flash memory as well, to erase it for example. JFFS2 211can then be mounted directly on a freshly erased partition and files can be 212copied over directly. Etc... 213 214 215RedBoot scripting 216----------------- 217 218All the commands above aren't so useful if they have to be typed in every 219time the Assabet is rebooted. Therefore it's possible to automatize the boot 220process using RedBoot's scripting capability. 221 222For example, I use this to boot Linux with both the kernel and the ramdisk 223images retrieved from a TFTP server on the network: 224 225RedBoot> fconfig 226Run script at boot: false true 227Boot script: 228Enter script, terminate with empty line 229>> load zImage -r -b 0x100000 230>> load ramdisk_ks.gz -r -b 0x800000 231>> exec -b 0x100000 -l 0xc0000 232>> 233Boot script timeout (1000ms resolution): 3 234Use BOOTP for network configuration: true 235GDB connection port: 9000 236Network debug at boot time: false 237Update RedBoot non-volatile configuration - are you sure (y/n)? y 238 239Then, rebooting the Assabet is just a matter of waiting for the login prompt. 240 241 242 243Nicolas Pitre 244nico@cam.org 245June 12, 2001 246 247 248Status of peripherals in -rmk tree (updated 14/10/2001) 249------------------------------------------------------- 250 251Assabet: 252 Serial ports: 253 Radio: TX, RX, CTS, DSR, DCD, RI 254 PM: Not tested. 255 COM: TX, RX, CTS, DSR, DCD, RTS, DTR, PM 256 PM: Not tested. 257 I2C: Implemented, not fully tested. 258 L3: Fully tested, pass. 259 PM: Not tested. 260 261 Video: 262 LCD: Fully tested. PM 263 (LCD doesn't like being blanked with 264 neponset connected) 265 Video out: Not fully 266 267 Audio: 268 UDA1341: 269 Playback: Fully tested, pass. 270 Record: Implemented, not tested. 271 PM: Not tested. 272 273 UCB1200: 274 Audio play: Implemented, not heavily tested. 275 Audio rec: Implemented, not heavily tested. 276 Telco audio play: Implemented, not heavily tested. 277 Telco audio rec: Implemented, not heavily tested. 278 POTS control: No 279 Touchscreen: Yes 280 PM: Not tested. 281 282 Other: 283 PCMCIA: 284 LPE: Fully tested, pass. 285 USB: No 286 IRDA: 287 SIR: Fully tested, pass. 288 FIR: Fully tested, pass. 289 PM: Not tested. 290 291Neponset: 292 Serial ports: 293 COM1,2: TX, RX, CTS, DSR, DCD, RTS, DTR 294 PM: Not tested. 295 USB: Implemented, not heavily tested. 296 PCMCIA: Implemented, not heavily tested. 297 PM: Not tested. 298 CF: Implemented, not heavily tested. 299 PM: Not tested. 300 301More stuff can be found in the -np (Nicolas Pitre's) tree. 302 303