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