0001 ============================================
0002 The Intel Assabet (SA-1110 evaluation) board
0003 ============================================
0004
0005 Please see:
0006 http://developer.intel.com
0007
0008 Also some notes from John G Dorsey <jd5q@andrew.cmu.edu>:
0009 http://www.cs.cmu.edu/~wearable/software/assabet.html
0010
0011
0012 Building the kernel
0013 -------------------
0014
0015 To build the kernel with current defaults::
0016
0017 make assabet_defconfig
0018 make oldconfig
0019 make zImage
0020
0021 The resulting kernel image should be available in linux/arch/arm/boot/zImage.
0022
0023
0024 Installing a bootloader
0025 -----------------------
0026
0027 A couple of bootloaders able to boot Linux on Assabet are available:
0028
0029 BLOB (http://www.lartmaker.nl/lartware/blob/)
0030
0031 BLOB is a bootloader used within the LART project. Some contributed
0032 patches were merged into BLOB to add support for Assabet.
0033
0034 Compaq's Bootldr + John Dorsey's patch for Assabet support
0035 (http://www.handhelds.org/Compaq/bootldr.html)
0036 (http://www.wearablegroup.org/software/bootldr/)
0037
0038 Bootldr is the bootloader developed by Compaq for the iPAQ Pocket PC.
0039 John Dorsey has produced add-on patches to add support for Assabet and
0040 the JFFS filesystem.
0041
0042 RedBoot (http://sources.redhat.com/redboot/)
0043
0044 RedBoot is a bootloader developed by Red Hat based on the eCos RTOS
0045 hardware abstraction layer. It supports Assabet amongst many other
0046 hardware platforms.
0047
0048 RedBoot is currently the recommended choice since it's the only one to have
0049 networking support, and is the most actively maintained.
0050
0051 Brief examples on how to boot Linux with RedBoot are shown below. But first
0052 you need to have RedBoot installed in your flash memory. A known to work
0053 precompiled RedBoot binary is available from the following location:
0054
0055 - ftp://ftp.netwinder.org/users/n/nico/
0056 - ftp://ftp.arm.linux.org.uk/pub/linux/arm/people/nico/
0057 - ftp://ftp.handhelds.org/pub/linux/arm/sa-1100-patches/
0058
0059 Look for redboot-assabet*.tgz. Some installation infos are provided in
0060 redboot-assabet*.txt.
0061
0062
0063 Initial RedBoot configuration
0064 -----------------------------
0065
0066 The commands used here are explained in The RedBoot User's Guide available
0067 on-line at http://sources.redhat.com/ecos/docs.html.
0068 Please refer to it for explanations.
0069
0070 If you have a CF network card (my Assabet kit contained a CF+ LP-E from
0071 Socket Communications Inc.), you should strongly consider using it for TFTP
0072 file transfers. You must insert it before RedBoot runs since it can't detect
0073 it dynamically.
0074
0075 To initialize the flash directory::
0076
0077 fis init -f
0078
0079 To initialize the non-volatile settings, like whether you want to use BOOTP or
0080 a static IP address, etc, use this command::
0081
0082 fconfig -i
0083
0084
0085 Writing a kernel image into flash
0086 ---------------------------------
0087
0088 First, the kernel image must be loaded into RAM. If you have the zImage file
0089 available on a TFTP server::
0090
0091 load zImage -r -b 0x100000
0092
0093 If you rather want to use Y-Modem upload over the serial port::
0094
0095 load -m ymodem -r -b 0x100000
0096
0097 To write it to flash::
0098
0099 fis create "Linux kernel" -b 0x100000 -l 0xc0000
0100
0101
0102 Booting the kernel
0103 ------------------
0104
0105 The kernel still requires a filesystem to boot. A ramdisk image can be loaded
0106 as follows::
0107
0108 load ramdisk_image.gz -r -b 0x800000
0109
0110 Again, Y-Modem upload can be used instead of TFTP by replacing the file name
0111 by '-y ymodem'.
0112
0113 Now the kernel can be retrieved from flash like this::
0114
0115 fis load "Linux kernel"
0116
0117 or loaded as described previously. To boot the kernel::
0118
0119 exec -b 0x100000 -l 0xc0000
0120
0121 The ramdisk image could be stored into flash as well, but there are better
0122 solutions for on-flash filesystems as mentioned below.
0123
0124
0125 Using JFFS2
0126 -----------
0127
0128 Using JFFS2 (the Second Journalling Flash File System) is probably the most
0129 convenient way to store a writable filesystem into flash. JFFS2 is used in
0130 conjunction with the MTD layer which is responsible for low-level flash
0131 management. More information on the Linux MTD can be found on-line at:
0132 http://www.linux-mtd.infradead.org/. A JFFS howto with some infos about
0133 creating JFFS/JFFS2 images is available from the same site.
0134
0135 For instance, a sample JFFS2 image can be retrieved from the same FTP sites
0136 mentioned below for the precompiled RedBoot image.
0137
0138 To load this file::
0139
0140 load sample_img.jffs2 -r -b 0x100000
0141
0142 The result should look like::
0143
0144 RedBoot> load sample_img.jffs2 -r -b 0x100000
0145 Raw file loaded 0x00100000-0x00377424
0146
0147 Now we must know the size of the unallocated flash::
0148
0149 fis free
0150
0151 Result::
0152
0153 RedBoot> fis free
0154 0x500E0000 .. 0x503C0000
0155
0156 The values above may be different depending on the size of the filesystem and
0157 the type of flash. See their usage below as an example and take care of
0158 substituting yours appropriately.
0159
0160 We must determine some values::
0161
0162 size of unallocated flash: 0x503c0000 - 0x500e0000 = 0x2e0000
0163 size of the filesystem image: 0x00377424 - 0x00100000 = 0x277424
0164
0165 We want to fit the filesystem image of course, but we also want to give it all
0166 the remaining flash space as well. To write it::
0167
0168 fis unlock -f 0x500E0000 -l 0x2e0000
0169 fis erase -f 0x500E0000 -l 0x2e0000
0170 fis write -b 0x100000 -l 0x277424 -f 0x500E0000
0171 fis create "JFFS2" -n -f 0x500E0000 -l 0x2e0000
0172
0173 Now the filesystem is associated to a MTD "partition" once Linux has discovered
0174 what they are in the boot process. From Redboot, the 'fis list' command
0175 displays them::
0176
0177 RedBoot> fis list
0178 Name FLASH addr Mem addr Length Entry point
0179 RedBoot 0x50000000 0x50000000 0x00020000 0x00000000
0180 RedBoot config 0x503C0000 0x503C0000 0x00020000 0x00000000
0181 FIS directory 0x503E0000 0x503E0000 0x00020000 0x00000000
0182 Linux kernel 0x50020000 0x00100000 0x000C0000 0x00000000
0183 JFFS2 0x500E0000 0x500E0000 0x002E0000 0x00000000
0184
0185 However Linux should display something like::
0186
0187 SA1100 flash: probing 32-bit flash bus
0188 SA1100 flash: Found 2 x16 devices at 0x0 in 32-bit mode
0189 Using RedBoot partition definition
0190 Creating 5 MTD partitions on "SA1100 flash":
0191 0x00000000-0x00020000 : "RedBoot"
0192 0x00020000-0x000e0000 : "Linux kernel"
0193 0x000e0000-0x003c0000 : "JFFS2"
0194 0x003c0000-0x003e0000 : "RedBoot config"
0195 0x003e0000-0x00400000 : "FIS directory"
0196
0197 What's important here is the position of the partition we are interested in,
0198 which is the third one. Within Linux, this correspond to /dev/mtdblock2.
0199 Therefore to boot Linux with the kernel and its root filesystem in flash, we
0200 need this RedBoot command::
0201
0202 fis load "Linux kernel"
0203 exec -b 0x100000 -l 0xc0000 -c "root=/dev/mtdblock2"
0204
0205 Of course other filesystems than JFFS might be used, like cramfs for example.
0206 You might want to boot with a root filesystem over NFS, etc. It is also
0207 possible, and sometimes more convenient, to flash a filesystem directly from
0208 within Linux while booted from a ramdisk or NFS. The Linux MTD repository has
0209 many tools to deal with flash memory as well, to erase it for example. JFFS2
0210 can then be mounted directly on a freshly erased partition and files can be
0211 copied over directly. Etc...
0212
0213
0214 RedBoot scripting
0215 -----------------
0216
0217 All the commands above aren't so useful if they have to be typed in every
0218 time the Assabet is rebooted. Therefore it's possible to automate the boot
0219 process using RedBoot's scripting capability.
0220
0221 For example, I use this to boot Linux with both the kernel and the ramdisk
0222 images retrieved from a TFTP server on the network::
0223
0224 RedBoot> fconfig
0225 Run script at boot: false true
0226 Boot script:
0227 Enter script, terminate with empty line
0228 >> load zImage -r -b 0x100000
0229 >> load ramdisk_ks.gz -r -b 0x800000
0230 >> exec -b 0x100000 -l 0xc0000
0231 >>
0232 Boot script timeout (1000ms resolution): 3
0233 Use BOOTP for network configuration: true
0234 GDB connection port: 9000
0235 Network debug at boot time: false
0236 Update RedBoot non-volatile configuration - are you sure (y/n)? y
0237
0238 Then, rebooting the Assabet is just a matter of waiting for the login prompt.
0239
0240
0241
0242 Nicolas Pitre
0243 nico@fluxnic.net
0244
0245 June 12, 2001
0246
0247
0248 Status of peripherals in -rmk tree (updated 14/10/2001)
0249 -------------------------------------------------------
0250
0251 Assabet:
0252 Serial ports:
0253 Radio: TX, RX, CTS, DSR, DCD, RI
0254 - PM: Not tested.
0255 - COM: TX, RX, CTS, DSR, DCD, RTS, DTR, PM
0256 - PM: Not tested.
0257 - I2C: Implemented, not fully tested.
0258 - L3: Fully tested, pass.
0259 - PM: Not tested.
0260
0261 Video:
0262 - LCD: Fully tested. PM
0263
0264 (LCD doesn't like being blanked with neponset connected)
0265
0266 - Video out: Not fully
0267
0268 Audio:
0269 UDA1341:
0270 - Playback: Fully tested, pass.
0271 - Record: Implemented, not tested.
0272 - PM: Not tested.
0273
0274 UCB1200:
0275 - Audio play: Implemented, not heavily tested.
0276 - Audio rec: Implemented, not heavily tested.
0277 - Telco audio play: Implemented, not heavily tested.
0278 - Telco audio rec: Implemented, not heavily tested.
0279 - POTS control: No
0280 - Touchscreen: Yes
0281 - PM: Not tested.
0282
0283 Other:
0284 - PCMCIA:
0285 - LPE: Fully tested, pass.
0286 - USB: No
0287 - IRDA:
0288 - SIR: Fully tested, pass.
0289 - FIR: Fully tested, pass.
0290 - PM: Not tested.
0291
0292 Neponset:
0293 Serial ports:
0294 - COM1,2: TX, RX, CTS, DSR, DCD, RTS, DTR
0295 - PM: Not tested.
0296 - USB: Implemented, not heavily tested.
0297 - PCMCIA: Implemented, not heavily tested.
0298 - CF: Implemented, not heavily tested.
0299 - PM: Not tested.
0300
0301 More stuff can be found in the -np (Nicolas Pitre's) tree.