blob: 08b885d35674aa4a37512a05059bd04c483bc120 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001The Intel Assabet (SA-1110 evaluation) board
2============================================
3
4Please see:
Justin P. Mattock0ea6e612010-07-23 20:51:24 -07005http://developer.intel.com
Linus Torvalds1da177e2005-04-16 15:20:36 -07006
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
Erik Mouwc8c4b932006-03-27 15:32:30 +010028BLOB (http://www.lartmaker.nl/lartware/blob/)
Linus Torvalds1da177e2005-04-16 15:20:36 -070029
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
Justin P. Mattock0ea6e612010-07-23 20:51:24 -070066on-line at http://sources.redhat.com/ecos/docs.html.
Linus Torvalds1da177e2005-04-16 15:20:36 -070067Please 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
Nicolas Pitre2f82af02009-09-14 03:25:28 -0400242nico@fluxnic.net
Linus Torvalds1da177e2005-04-16 15:20:36 -0700243June 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