This commit was manufactured by cvs2svn to create branch 'vserver'.
[linux-2.6.git] / Documentation / arm / XScale / IOP3XX / IQ80310
1
2 Board Overview
3 -----------------------------
4
5 The Cyclone IQ80310 board is an evaluation platform for Intel's 80200 Xscale
6 CPU and 80312 Intelligent I/O chipset (collectively called IOP310 chipset).
7
8 The 80312 contains dual PCI hoses (called the ATUs), a PCI-to-PCI bridge,
9 three DMA channels (1 on secondary PCI, one on primary PCI ), I2C, I2O
10 messaging unit, XOR unit for RAID operations, a bus performance monitoring
11 unit, and a memory controller with ECC features.
12
13 For more information on the board, see http://developer.intel.com/iio
14
15 Port Status
16 -----------------------------
17
18 Supported:
19
20 - MTD/JFFS/JFFS2
21 - NFS root
22 - RAMDISK root
23 - 2ndary PCI slots
24 - Onboard ethernet
25 - Serial ports (ttyS0/S1)
26 - Cache/TLB locking on 80200 CPU
27 - Performance monitoring unit on 80200 CPU
28 - 80200 Performance Monitoring Unit
29 - Acting as a system controller on Cyclone 80303BP PCI backplane
30 - DMA engines (EXPERIMENTAL)
31 - 80312 Bus Performance Monitor (EXPERIMENTAL)
32 - Application Accelerator Unit (XOR engine for RAID) (EXPERIMENTAL)
33 - Messaging Unit (EXPERIMENTAL)
34
35 TODO:
36 - I2C
37
38 Building the Kernel
39 -----------------------------
40 make iq80310_config
41 make oldconfig
42 make zImage
43
44 This will build an image setup for BOOTP/NFS root support.  To change this,
45 just run make menuconfig and disable nfs root or add a "root=" option.
46
47 Preparing the Hardware
48 -----------------------------
49
50 This document assumes you're using a Rev D or newer board running
51 Redboot as the bootloader.  Note that the version of RedBoot provided
52 with the boards has a major issue and you need to replace it with the
53 latest RedBoot. You can grab the source from the ECOS CVS or you can
54 get a prebuilt image and burn it in using FRU at:
55
56    ftp://source.mvista.com/pub/xscale/iq80310/redboot.bin
57
58 Make sure you do an 'fis init' command once you boot with the new
59 RedBoot image.
60
61
62
63 Downloading Linux
64 -----------------------------
65
66 Assuming you have your development system setup to act as a bootp/dhcp
67 server and running tftp:
68
69    RedBoot> load -r -b 0xa1008000 /tftpboot/zImage.xs
70    Raw file loaded 0xa1008000-0xa1094bd8
71
72 If you're not using dhcp/tftp, you can use y-modem instead:
73
74    RedBoot> load -r -b 0xa1008000 -m y
75
76 Note that on Rev D. of the board, tftp does not work due to intermittent
77 interrupt issues, so you need to download using ymodem.
78
79 Once the download is completed:
80
81    RedBoot> go 0xa1008000
82
83 Root Devices
84 -----------------------------
85
86 A kernel is not useful without a root filesystem, and you have several
87 choices with this board:  NFS root, RAMDISK, or JFFS/JFFS2.  For development
88 purposes, it is suggested that you use NFS root for easy access to various
89 tools.  Once you're ready to deploy, probably want to utilize JFFS/JFFS2 on
90 the flash device.
91
92 MTD on the IQ80310
93 -----------------------------
94
95 Linux on the IQ80310 supports RedBoot FIS paritioning if it is enabled.
96 Out of the box, once you've done 'fis init' on RedBoot, you will get
97 the following partitioning scheme:
98
99    root@192.168.0.14:~# cat /proc/mtd
100    dev:    size   erasesize  name
101    mtd0: 00040000 00020000 "RedBoot"
102    mtd1: 00040000 00020000 "RedBoot[backup]"
103    mtd2: 0075f000 00020000 "unallocated space"
104    mtd3: 00001000 00020000 "RedBoot config"
105    mtd4: 00020000 00020000 "FIS directory"
106
107 To create an FIS directory, you need to use the fis command in RedBoot.
108 As an example, you can burn the kernel into the flash once it's downloaded:
109
110    RedBoot> fis create -b 0xa1008000 -l 0x8CBAC -r 0xa1008000 -f 0x80000 kernel
111    ... Erase from 0x00080000-0x00120000: .....
112    ... Program from 0xa1008000-0xa1094bac at 0x00080000: .....
113    ... Unlock from 0x007e0000-0x00800000: .
114    ... Erase from 0x007e0000-0x00800000: .
115    ... Program from 0xa1fdf000-0xa1fff000 at 0x007e0000: .
116    ... Lock from 0x007e0000-0x00800000: .
117
118    RedBoot> fis list
119    Name              FLASH addr  Mem addr    Length      Entry point
120    RedBoot           0x00000000  0x00000000  0x00040000  0x00000000
121    RedBoot[backup]   0x00040000  0x00040000  0x00040000  0x00000000
122    RedBoot config    0x007DF000  0x007DF000  0x00001000  0x00000000
123    FIS directory     0x007E0000  0x007E0000  0x00020000  0x00000000
124    kernel            0x00080000  0xA1008000  0x000A0000  0x00000000
125
126 This leads to the following Linux MTD setup:
127
128    mtroot@192.168.0.14:~# cat /proc/mtd
129    dev:    size   erasesize  name
130    mtd0: 00040000 00020000 "RedBoot"
131    mtd1: 00040000 00020000 "RedBoot[backup]"
132    mtd2: 000a0000 00020000 "kernel"
133    mtd3: 006bf000 00020000 "unallocated space"
134    mtd4: 00001000 00020000 "RedBoot config"
135    mtd5: 00020000 00020000 "FIS directory"
136
137 Note that there is not a 1:1 mapping to the number of RedBoot paritions to
138 MTD partitions as unused space also gets allocated into MTD partitions.
139
140 As an aside, the -r option when creating the Kernel entry allows you to
141 simply do an 'fis load kernel' to copy the image from flash into memory.
142 You can then do an 'fis go 0xa1008000' to start Linux.
143
144 If you choose to use static partitioning instead of the RedBoot partioning:
145
146    /dev/mtd0  0x00000000 - 0x0007ffff: Boot Monitor     (512k)
147    /dev/mtd1  0x00080000 - 0x0011ffff: Kernel Image     (640K)
148    /dev/mtd2  0x00120000 - 0x0071ffff: File System      (6M)
149    /dev/mtd3  0x00720000 - 0x00800000: RedBoot Reserved (896K)
150
151 To use a JFFS1/2 root FS, you need to donwload the JFFS image using either
152 tftp or ymodem, and then copy it to flash:
153
154    RedBoot> load -r -b 0xa1000000 /tftpboot/jffs.img
155    Raw file loaded 0xa1000000-0xa1600000
156    RedBoot> fis create -b 0xa1000000 -l 0x600000 -f 0x120000 jffs
157    ... Erase from 0x00120000-0x00720000: ..................................
158    ... Program from 0xa1000000-0xa1600000 at 0x00120000: ..................
159    ......................
160    ... Unlock from 0x007e0000-0x00800000: .
161    ... Erase from 0x007e0000-0x00800000: .
162    ... Program from 0xa1fdf000-0xa1fff000 at 0x007e0000: .
163    ... Lock from 0x007e0000-0x00800000: .
164    RedBoot> fis list
165    Name              FLASH addr  Mem addr    Length      Entry point
166    RedBoot           0x00000000  0x00000000  0x00040000  0x00000000
167    RedBoot[backup]   0x00040000  0x00040000  0x00040000  0x00000000
168    RedBoot config    0x007DF000  0x007DF000  0x00001000  0x00000000
169    FIS directory     0x007E0000  0x007E0000  0x00020000  0x00000000
170    kernel            0x00080000  0xA1008000  0x000A0000  0xA1008000
171    jffs              0x00120000  0x00120000  0x00600000  0x00000000
172
173 This looks like this in Linux:
174
175    root@192.168.0.14:~# cat /proc/mtd
176    dev:    size   erasesize  name
177    mtd0: 00040000 00020000 "RedBoot"
178    mtd1: 00040000 00020000 "RedBoot[backup]"
179    mtd2: 000a0000 00020000 "kernel"
180    mtd3: 00600000 00020000 "jffs"
181    mtd4: 000bf000 00020000 "unallocated space"
182    mtd5: 00001000 00020000 "RedBoot config"
183    mtd6: 00020000 00020000 "FIS directory"
184
185 You need to boot the kernel once and watch the boot messages to see how the
186 JFFS RedBoot partition mapped into the MTD partition scheme.
187
188 You can grab a pre-built JFFS image to use as a root file system at:
189
190    ftp://source.mvista.com/pub/xscale/iq80310/jffs.img
191
192 For detailed info on using MTD and creating a JFFS image go to:
193
194    http://www.linux-mtd.infradead.org.
195
196 For details on using RedBoot's FIS commands, type 'fis help' or consult
197 your RedBoot manual.
198
199 Contributors
200 -----------------------------
201
202 Thanks to Intel Corporation for providing the hardware.
203
204 John Clark <jclark@teamasa.com> - Initial discovery of RedBoot issues
205 Dave Jiang <dave.jiang@intel.com> - IRQ demux fixes, AAU, DMA, MU
206 Nicolas Pitre <nico@cam.org> - Initial port, cleanup, debugging
207 Matt Porter <mporter@mvista.com> - PCI subsystem development, debugging
208 Tim Sanders <tsanders@sanders.org> - Initial PCI code
209 Mark Salter <msalter@redhat.com> - RedBoot fixes
210 Deepak Saxena <dsaxena@mvista.com> - Cleanup, debug, cache lock, PMU
211
212 -----------------------------
213 Enjoy.
214
215 If you have any problems please contact Deepak Saxena <dsaxena@mvista.com>
216
217 A few notes from rmk
218 -----------------------------
219
220 These are notes of my initial experience getting the IQ80310 Rev D up and
221 running.  In total, it has taken many hours to work out what's going on...
222 The version of redboot used is:
223
224  RedBoot(tm) bootstrap and debug environment, version UNKNOWN - built 14:58:21, Aug 15 2001
225
226
227 1. I've had a corrupted download of the redboot.bin file from Montavista's
228    FTP site.  It would be a good idea if there were md5sums, sum or gpg
229    signatures available to ensure the integrity of the downloaded files.
230    The result of this was an apparantly 100% dead card.
231
232 2. RedBoot Intel EtherExpress Pro 100 driver seems to be very unstable -
233    I've had it take out the whole of a 100mbit network for several minutes.
234    The Hub indiates ZERO activity, despite machines attempting to communicate.
235    Further to this, while tftping the kernel, the transfer will stall regularly,
236    and might even drop the link LED.
237
238 3. There appears to be a bug in the Intel Documentation Pack that comes with
239    the IQ80310 board.  Serial port 1, which is the socket next to the LEDs
240    is address 0xfe810000, not 0xfe800000.
241
242    Note that RedBoot uses either serial port 1 OR serial port 2, so if you
243    have your console connected to the wrong port, you'll see redboot messages
244    but not kernel boot messages.
245
246 4. Trying to use fconfig to setup a boot script fails - it hangs when trying
247    to erase the flash.