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