]> git.kernelconcepts.de Git - karo-tx-redboot.git/blob - doc/html/ref/nano.html
RedBoot TX53 Release 2012-02-15
[karo-tx-redboot.git] / doc / html / ref / nano.html
1 <!-- Copyright (C) 2003 Red Hat, Inc.                                -->
2 <!-- This material may be distributed only subject to the terms      -->
3 <!-- and conditions set forth in the Open Publication License, v1.0  -->
4 <!-- or later (the latest version is presently available at          -->
5 <!-- http://www.opencontent.org/openpub/).                           -->
6 <!-- Distribution of the work or derivative of the work in any       -->
7 <!-- standard (paper) book form is prohibited unless prior           -->
8 <!-- permission is obtained from the copyright holder.               -->
9 <HTML
10 ><HEAD
11 ><TITLE
12 >ARM/StrongARM(SA11X0) Bright Star Engineering commEngine and nanoEngine</TITLE
13 ><meta name="MSSmartTagsPreventParsing" content="TRUE">
14 <META
15 NAME="GENERATOR"
16 CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
17 "><LINK
18 REL="HOME"
19 TITLE="eCos Reference Manual"
20 HREF="ecos-ref.html"><LINK
21 REL="UP"
22 TITLE="Installation and Testing"
23 HREF="installation-and-testing.html"><LINK
24 REL="PREVIOUS"
25 TITLE="ARM/StrongARM(SA1110) Intel SA1110 (Assabet) "
26 HREF="assabet.html"><LINK
27 REL="NEXT"
28 TITLE="ARM/StrongARM(SA11X0) Compaq iPAQ PocketPC"
29 HREF="ipaq.html"></HEAD
30 ><BODY
31 CLASS="SECT1"
32 BGCOLOR="#FFFFFF"
33 TEXT="#000000"
34 LINK="#0000FF"
35 VLINK="#840084"
36 ALINK="#0000FF"
37 ><DIV
38 CLASS="NAVHEADER"
39 ><TABLE
40 SUMMARY="Header navigation table"
41 WIDTH="100%"
42 BORDER="0"
43 CELLPADDING="0"
44 CELLSPACING="0"
45 ><TR
46 ><TH
47 COLSPAN="3"
48 ALIGN="center"
49 >eCos Reference Manual</TH
50 ></TR
51 ><TR
52 ><TD
53 WIDTH="10%"
54 ALIGN="left"
55 VALIGN="bottom"
56 ><A
57 HREF="assabet.html"
58 ACCESSKEY="P"
59 >Prev</A
60 ></TD
61 ><TD
62 WIDTH="80%"
63 ALIGN="center"
64 VALIGN="bottom"
65 >Chapter 5. Installation and Testing</TD
66 ><TD
67 WIDTH="10%"
68 ALIGN="right"
69 VALIGN="bottom"
70 ><A
71 HREF="ipaq.html"
72 ACCESSKEY="N"
73 >Next</A
74 ></TD
75 ></TR
76 ></TABLE
77 ><HR
78 ALIGN="LEFT"
79 WIDTH="100%"></DIV
80 ><DIV
81 CLASS="SECT1"
82 ><H1
83 CLASS="SECT1"
84 ><A
85 NAME="NANO">ARM/StrongARM(SA11X0) Bright Star Engineering commEngine and nanoEngine</H1
86 ><DIV
87 CLASS="SECT2"
88 ><H2
89 CLASS="SECT2"
90 ><A
91 NAME="AEN5802">Overview</H2
92 ><P
93 >RedBoot supports a serial port and the built in ethernet port
94 for communication and downloads. The default serial port settings are 38400,8,N,1.
95 RedBoot runs from and supports flash management for the system flash
96 region.</P
97 ><P
98 >The following RedBoot configurations are supported:
99
100       <DIV
101 CLASS="INFORMALTABLE"
102 ><A
103 NAME="AEN5818"><P
104 ></P
105 ><TABLE
106 BORDER="1"
107 CLASS="CALSTABLE"
108 ><THEAD
109 ><TR
110 ><TH
111 ALIGN="LEFT"
112 VALIGN="TOP"
113 >Configuration</TH
114 ><TH
115 ALIGN="LEFT"
116 VALIGN="TOP"
117 >Mode</TH
118 ><TH
119 ALIGN="LEFT"
120 VALIGN="TOP"
121 >Description</TH
122 ><TH
123 ALIGN="LEFT"
124 VALIGN="TOP"
125 >File</TH
126 ></TR
127 ></THEAD
128 ><TBODY
129 ><TR
130 ><TD
131 ALIGN="LEFT"
132 VALIGN="TOP"
133 >POST</TD
134 ><TD
135 ALIGN="LEFT"
136 VALIGN="TOP"
137 >[ROM]</TD
138 ><TD
139 ALIGN="LEFT"
140 VALIGN="TOP"
141 >RedBoot running from the first free flash block
142               at 0x40000.</TD
143 ><TD
144 ALIGN="LEFT"
145 VALIGN="TOP"
146 >redboot_ROM.ecm</TD
147 ></TR
148 ><TR
149 ><TD
150 ALIGN="LEFT"
151 VALIGN="TOP"
152 >RAM</TD
153 ><TD
154 ALIGN="LEFT"
155 VALIGN="TOP"
156 >[RAM]</TD
157 ><TD
158 ALIGN="LEFT"
159 VALIGN="TOP"
160 >RedBoot running from RAM with RedBoot in the
161               flash boot sector.</TD
162 ><TD
163 ALIGN="LEFT"
164 VALIGN="TOP"
165 >redboot_RAM.ecm</TD
166 ></TR
167 ></TBODY
168 ></TABLE
169 ><P
170 ></P
171 ></DIV
172 ></P
173 ></DIV
174 ><DIV
175 CLASS="SECT2"
176 ><H2
177 CLASS="SECT2"
178 ><A
179 NAME="AEN5837">Initial Installation</H2
180 ><P
181 >Unlike other targets, the nanoEngine comes equipped with boot firmware
182 which you cannot modify.  See chapter 5, "nanoEngine Firmware" of the <I
183 CLASS="CITETITLE"
184 >nanoEngine Hardware Reference Manual</I
185 > (we refer to "July 17, 2000
186 Rev 0.6") from Bright Star Engineering. </P
187 ><P
188 >Because of this, eCos, and therefore Redboot, only supports a
189 special configuration of the ROM mode, starting at offset 0x40000 in
190 the flash.</P
191 ><P
192 >Briefly, the POST-configuration RedBoot image lives in flash following the
193 BSE firmware. The BSE firmware is configured, using its standard <B
194 CLASS="COMMAND"
195 >bootcmd</B
196 > command, to run RedBoot at startup.</P
197 ></DIV
198 ><DIV
199 CLASS="SECT2"
200 ><H2
201 CLASS="SECT2"
202 ><A
203 NAME="AEN5844">Download Instructions</H2
204 ><P
205 >You can perform the initial load of the POST-configuration RedBoot image into
206 flash using the BSE firmware's <B
207 CLASS="COMMAND"
208 >load</B
209 > command.
210 This will load a binary file, using TFTP, and program it into flash in one
211 operation. Because no memory management is used in the BSE firmware, flash
212 is mapped from address zero upwards, so the address for the RedBoot POST image
213 is 0x40000.  You must use the binary version of RedBoot for this,
214 <TT
215 CLASS="FILENAME"
216 >redboot-post.bin</TT
217 >.</P
218 ><P
219 >This assumes you have set up the other BSE firmware config
220 parameters such that it can communicate over your network to your TFTP
221 server.
222 <TABLE
223 BORDER="5"
224 BGCOLOR="#E0E0F0"
225 WIDTH="70%"
226 ><TR
227 ><TD
228 ><PRE
229 CLASS="SCREEN"
230 >&#62;<TT
231 CLASS="USERINPUT"
232 ><B
233 >load redboot-post.bin 40000</B
234 ></TT
235 >
236 loading ... erasing blk at 00040000
237 erasing blk at 00050000
238 94168 bytes loaded cksum 00008579
239 done
240 &#62;
241 &#62; <TT
242 CLASS="USERINPUT"
243 ><B
244 >set bootcmd "go 40000"</B
245 ></TT
246 >
247 &#62; <TT
248 CLASS="USERINPUT"
249 ><B
250 >get</B
251 ></TT
252 >
253 myip = 10.16.19.198
254 netmask = 255.255.255.0
255 eth = 0
256 gateway = 10.16.19.66
257 serverip = 10.16.19.66
258 bootcmd = go 40000
259 &#62;</PRE
260 ></TD
261 ></TR
262 ></TABLE
263 >
264
265 <DIV
266 CLASS="NOTE"
267 ><BLOCKQUOTE
268 CLASS="NOTE"
269 ><P
270 ><B
271 >NOTE: </B
272 >the BSE firmware runs its serial IO at 9600 Baud; RedBoot runs instead
273 at 38400 Baud. You must select the right baud rate in your terminal program
274 to be able to set up the BSE firmware.</P
275 ></BLOCKQUOTE
276 ></DIV
277 >
278
279 After a reset, the BSE firmware will print
280
281 <TABLE
282 BORDER="5"
283 BGCOLOR="#E0E0F0"
284 WIDTH="70%"
285 ><TR
286 ><TD
287 ><PRE
288 CLASS="SCREEN"
289 >Boot: BSE 2000 Sep 12 2000 14:00:30
290 autoboot: "go 40000" [hit ESC to abort]</PRE
291 ></TD
292 ></TR
293 ></TABLE
294 >
295
296 and then RedBoot starts, switching to 38400 Baud.</P
297 ><P
298 >Once you have installed a bootable RedBoot in the system in this
299 manner, we advise re-installing using the generic method described in
300 <A
301 HREF="updating-redboot.html"
302 >Chapter 4</A
303 > in order that the Flash Image System
304 contains an appropriate description of the flash entries.</P
305 ></DIV
306 ><DIV
307 CLASS="SECT2"
308 ><H2
309 CLASS="SECT2"
310 ><A
311 NAME="AEN5860">Cohabiting with POST in Flash</H2
312 ><P
313 >The configuration file named <TT
314 CLASS="FILENAME"
315 >redboot_POST.ecm</TT
316 >
317 configures RedBoot to build for execution at address 0x50040000 (or, during
318 bootup, 0x00040000). This is to allow power-on self-test (POST) code or immutable
319 firmware to live in the lower addresses of the flash and to run before RedBoot
320 gets control. The assumption is that RedBoot will be entered at its base address
321 in physical memory, that is 0x00040000.</P
322 ><P
323 >Alternatively, for testing, you can call it in an already running system
324 by using <TT
325 CLASS="USERINPUT"
326 ><B
327 >go 0x50040040</B
328 ></TT
329 > at another RedBoot prompt, or
330 a branch to that address. The address is where the reset vector
331 points. It is reported by RedBoot's <B
332 CLASS="COMMAND"
333 >load</B
334 > command
335 and listed
336 by the <B
337 CLASS="COMMAND"
338 >fis list</B
339 > command, amongst other
340 places.</P
341 ><P
342 >Using the POST configuration enables a normal config option which causes
343 linking and initialization against memory layout files called "...post..."
344 rather than "...rom..." or "...ram..." in the <TT
345 CLASS="FILENAME"
346 >include/pkgconf</TT
347 > directory. Specifically:<P
348 CLASS="LITERALLAYOUT"
349 ><TT
350 CLASS="FILENAME"
351 >include/pkgconf/mlt_arm_sa11x0_nano_post.h</TT
352 ><br>
353 <TT
354 CLASS="FILENAME"
355 >include/pkgconf/mlt_arm_sa11x0_nano_post.ldi</TT
356 ><br>
357 <TT
358 CLASS="FILENAME"
359 >include/pkgconf/mlt_arm_sa11x0_nano_post.mlt</TT
360 ></P
361 >
362
363 It is these you should edit if you wish to move the execution address
364 from 0x50040000 in the POST configuration.  Startup mode naturally
365 remains ROM in this configuration.</P
366 ><P
367 >Because the nanoEngine contains immutable boot firmware at the start
368 of flash, RedBoot for this target is configured to reserve that area in the
369 Flash Image System, and to create by default an entry for the POST
370 mode RedBoot.      
371 <TABLE
372 BORDER="5"
373 BGCOLOR="#E0E0F0"
374 WIDTH="70%"
375 ><TR
376 ><TD
377 ><PRE
378 CLASS="SCREEN"
379 >RedBoot&#62; <TT
380 CLASS="USERINPUT"
381 ><B
382 >fis list</B
383 ></TT
384 >
385 Name              FLASH addr  Mem addr    Length      Entry point
386 (reserved)        0x50000000  0x50000000  0x00040000  0x00000000
387 RedBoot[post]     0x50040000  0x00100000  0x00020000  0x50040040
388 RedBoot config    0x503E0000  0x503E0000  0x00010000  0x00000000
389 FIS directory     0x503F0000  0x503F0000  0x00010000  0x00000000
390 RedBoot&#62;</PRE
391 ></TD
392 ></TR
393 ></TABLE
394 >    
395 The entry "(reserved)" ensures that the FIS cannot attempt
396 to overwrite the BSE firmware, thus ensuring that the board remains bootable
397 and recoverable even after installing a broken RedBoot image.</P
398 ></DIV
399 ><DIV
400 CLASS="SECT2"
401 ><H2
402 CLASS="SECT2"
403 ><A
404 NAME="AEN5877">Special RedBoot Commands</H2
405 ><P
406 >The nanoEngine/commEngine has one or two Intel i82559 Ethernet controllers
407 installed, but these have no associated serial EEPROM in which to record their
408 Ethernet Station Address (ESA, or MAC address). The BSE firmware records an
409 ESA for the device it uses, but this information is not available to RedBoot;
410 we cannot share it.</P
411 ><P
412 >To keep the ESAs for the two ethernet interfaces, two new items of RedBoot
413 configuration data are introduced.  You can list them with the RedBoot command <B
414 CLASS="COMMAND"
415 >fconfig -l</B
416 > thus:     
417 <TABLE
418 BORDER="5"
419 BGCOLOR="#E0E0F0"
420 WIDTH="70%"
421 ><TR
422 ><TD
423 ><PRE
424 CLASS="SCREEN"
425 >RedBoot&#62; <TT
426 CLASS="USERINPUT"
427 ><B
428 >fconfig -l</B
429 ></TT
430 >
431 Run script at boot: false
432 Use BOOTP for network configuration: false
433 Local IP address: 10.16.19.91
434 Default server IP address: 10.16.19.66
435 Network hardware address [MAC] for eth0: 0x00:0xB5:0xE0:0xB5:0xE0:0x99
436 Network hardware address [MAC] for eth1: 0x00:0xB5:0xE0:0xB5:0xE0:0x9A
437 GDB connection port: 9000
438 Network debug at boot time: false
439 RedBoot&#62;</PRE
440 ></TD
441 ></TR
442 ></TABLE
443 >
444
445 You should set them before running RedBoot or eCos applications with
446 the board connected to a network. The <B
447 CLASS="COMMAND"
448 >fconfig </B
449 >
450 command can be used as for any configuration data item; the entire ESA
451 is entered in one line.</P
452 ></DIV
453 ><DIV
454 CLASS="SECT2"
455 ><H2
456 CLASS="SECT2"
457 ><A
458 NAME="AEN5885">Memory Maps</H2
459 ><P
460 >The first level page table is located at physical address 0xc0004000.
461  No second level tables are used.   <DIV
462 CLASS="NOTE"
463 ><BLOCKQUOTE
464 CLASS="NOTE"
465 ><P
466 ><B
467 >NOTE: </B
468 >The virtual memory maps in this section use a C and B column to indicate
469 whether or not the region is cached (C) or buffered (B).</P
470 ></BLOCKQUOTE
471 ></DIV
472 ><TABLE
473 BORDER="5"
474 BGCOLOR="#E0E0F0"
475 WIDTH="70%"
476 ><TR
477 ><TD
478 ><PRE
479 CLASS="PROGRAMLISTING"
480 >Physical Address Range     Description
481 -----------------------    ----------------------------------
482 0x00000000 - 0x003fffff    4Mb FLASH (nCS0)
483 0x18000000 - 0x18ffffff    Internal PCI bus - 2 x i82559 ethernet
484 0x40000000 - 0x4fffffff    External IO or PCI bus
485 0x80000000 - 0xbfffffff    SA-1110 Internal Registers
486 0xc0000000 - 0xc7ffffff    DRAM Bank 0 - 32Mb SDRAM
487 0xc8000000 - 0xcfffffff    DRAM Bank 1 - empty
488 0xe0000000 - 0xe7ffffff    Cache Clean
489
490 Virtual Address Range    C B  Description
491 -----------------------  - -  ----------------------------------
492 0x00000000 - 0x001fffff  Y Y  DRAM - 8Mb to 32Mb
493 0x18000000 - 0x180fffff  N N  Internal PCI bus - 2 x i82559 ethernet
494 0x40000000 - 0x4fffffff  N N  External IO or PCI bus
495 0x50000000 - 0x51ffffff  Y Y  Up to 32Mb FLASH (nCS0)
496 0x80000000 - 0xbfffffff  N N  SA-1110 Internal Registers
497 0xc0000000 - 0xc0ffffff  N Y  DRAM Bank 0: 8 or 16Mb
498 0xc8000000 - 0xc8ffffff  N Y  DRAM Bank 1: 8 or 16Mb or absent
499 0xe0000000 - 0xe7ffffff  Y Y  Cache Clean</PRE
500 ></TD
501 ></TR
502 ></TABLE
503 ></P
504 ><P
505 >The ethernet devices use a "PCI window" to communicate with the CPU.
506 This is 1Mb of SDRAM which is shared with the ethernet devices that are on
507 the PCI bus. It is neither cached nor buffered, to ensure that CPU and PCI
508 accesses see correct data in the correct order. By default it is configured
509 to be megabyte number 30, at addresses 0x01e00000-0x01efffff. This can be
510 modified, and indeed must be, if less than 32Mb of SDRAM is installed, via
511 the memory layout tool, or by moving the section <TT
512 CLASS="COMPUTEROUTPUT"
513 >__pci_window</TT
514 > referred to by symbols <TT
515 CLASS="COMPUTEROUTPUT"
516 >CYGMEM_SECTION_pci_window*</TT
517 > in the linker script.   </P
518 ><P
519 >Though the nanoEngine ships with 32Mb of SDRAM all attached to DRAM
520 bank 0, the code can cope with any of these combinations also; "2 x " in this
521 context means one device in each DRAM Bank.     <P
522 CLASS="LITERALLAYOUT"
523 >1&nbsp;x&nbsp;8Mb&nbsp;=&nbsp;8Mb&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;x&nbsp;8Mb&nbsp;=&nbsp;16Mb<br>
524 1&nbsp;x&nbsp;16Mb&nbsp;=&nbsp;16Mb&nbsp;&nbsp;&nbsp;2&nbsp;x&nbsp;16Mb&nbsp;=&nbsp;32Mb</P
525 >All are programmed the same
526 in the memory controller.   </P
527 ><P
528 >Startup code detects which is fitted and programs the memory map accordingly.
529 If the device(s) is 8Mb, then there are gaps in the physical memory map, because
530 a high order address bit is not connected. The gaps are the higher 2Mb out
531 of every 4Mb.</P
532 ><P
533 > The SA11x0 OS timer is used as a polled timer to provide timeout
534 support within RedBoot.</P
535 ></DIV
536 ><DIV
537 CLASS="SECT2"
538 ><H2
539 CLASS="SECT2"
540 ><A
541 NAME="AEN5899">Nano Platform Port</H2
542 ><P
543 >The nano is in the set of SA11X0-based platforms. It uses the arm architectural
544 HAL, the sa11x0 variant HAL, plus the nano platform hal. These are components
545         <P
546 CLASS="LITERALLAYOUT"
547 >CYGPKG_HAL_ARM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hal/arm/arch/<br>
548 CYGPKG_HAL_ARM_SA11X0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hal/arm/sa11x0/var<br>
549 CYGPKG_HAL_ARM_SA11X0_NANO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hal/arm/sa11x0/nano</P
550 > respectively.
551   </P
552 ><P
553 >The target name is "nano" which includes all these, plus the ethernet
554 driver packages, flash driver, and so on.</P
555 ></DIV
556 ><DIV
557 CLASS="SECT2"
558 ><H2
559 CLASS="SECT2"
560 ><A
561 NAME="AEN5904">Ethernet Driver</H2
562 ><P
563 >The ethernet driver is in two parts:   </P
564 ><P
565 >A generic ether driver for Intel i8255x series devices, specifically
566 the i82559, is <TT
567 CLASS="COMPUTEROUTPUT"
568 >devs/eth/intel/i82559</TT
569 >.  Its
570 package name is <TT
571 CLASS="COMPUTEROUTPUT"
572 >CYGPKG_DEVS_ETH_INTEL_I82559</TT
573 >.
574   </P
575 ><P
576 >The platform-specific ether driver is <TT
577 CLASS="COMPUTEROUTPUT"
578 >devs/eth/arm/nano</TT
579 >.  Its package is <TT
580 CLASS="COMPUTEROUTPUT"
581 >CYGPKG_DEVS_ETH_ARM_NANO</TT
582 >.  This tells the generic driver the address in IO memory
583 of the chip, for example, and other configuration details. This driver picks
584 up the ESA from RedBoot's configuration data - unless configured to use a
585 static ESA in the usual manner. </P
586 ></DIV
587 ><DIV
588 CLASS="SECT2"
589 ><H2
590 CLASS="SECT2"
591 ><A
592 NAME="AEN5913">Rebuilding RedBoot</H2
593 ><P
594 >These shell variables provide the platform-specific information
595 needed for building RedBoot according to the procedure described in
596 <A
597 HREF="rebuilding-redboot.html"
598 >Chapter 3</A
599 >:
600 <TABLE
601 BORDER="5"
602 BGCOLOR="#E0E0F0"
603 WIDTH="70%"
604 ><TR
605 ><TD
606 ><PRE
607 CLASS="PROGRAMLISTING"
608 >export TARGET=nano
609 export ARCH_DIR=arm
610 export PLATFORM_DIR=sa11x0/nano</PRE
611 ></TD
612 ></TR
613 ></TABLE
614 ></P
615 ><P
616 >The names of configuration files are listed above with the
617 description of the associated modes.</P
618 ></DIV
619 ></DIV
620 ><DIV
621 CLASS="NAVFOOTER"
622 ><HR
623 ALIGN="LEFT"
624 WIDTH="100%"><TABLE
625 SUMMARY="Footer navigation table"
626 WIDTH="100%"
627 BORDER="0"
628 CELLPADDING="0"
629 CELLSPACING="0"
630 ><TR
631 ><TD
632 WIDTH="33%"
633 ALIGN="left"
634 VALIGN="top"
635 ><A
636 HREF="assabet.html"
637 ACCESSKEY="P"
638 >Prev</A
639 ></TD
640 ><TD
641 WIDTH="34%"
642 ALIGN="center"
643 VALIGN="top"
644 ><A
645 HREF="ecos-ref.html"
646 ACCESSKEY="H"
647 >Home</A
648 ></TD
649 ><TD
650 WIDTH="33%"
651 ALIGN="right"
652 VALIGN="top"
653 ><A
654 HREF="ipaq.html"
655 ACCESSKEY="N"
656 >Next</A
657 ></TD
658 ></TR
659 ><TR
660 ><TD
661 WIDTH="33%"
662 ALIGN="left"
663 VALIGN="top"
664 >ARM/StrongARM(SA1110) Intel SA1110 (Assabet)</TD
665 ><TD
666 WIDTH="34%"
667 ALIGN="center"
668 VALIGN="top"
669 ><A
670 HREF="installation-and-testing.html"
671 ACCESSKEY="U"
672 >Up</A
673 ></TD
674 ><TD
675 WIDTH="33%"
676 ALIGN="right"
677 VALIGN="top"
678 >ARM/StrongARM(SA11X0) Compaq iPAQ PocketPC</TD
679 ></TR
680 ></TABLE
681 ></DIV
682 ></BODY
683 ></HTML
684 >