Mercurial > ecos
view packages/redboot/current/doc/redboot_installing.sgml @ 208:e0c0827131d1 ecos
Merge from eCos master repository on 2002-05-20-20:11:54-BST
| author | jlarmour |
|---|---|
| date | Mon, 20 May 2002 22:19:26 +0000 |
| parents | |
| children | d2c90368aeef |
line wrap: on
line source
<chapter id="Installation-and-Testing"> <title>Installation and Testing</title> <indexterm><primary>installing and testing RedBoot</primary></indexterm><indexterm> <primary>RedBoot</primary><secondary>installing and testing</secondary></indexterm> <sect1 id="iq80310"> <title>Cyclone IQ80310</title> <sect2> <title>Overview</title> <para><indexterm><primary>Cyclone IQ80310</primary><secondary>installing and testing</secondary></indexterm><indexterm><primary>installing and testing </primary><secondary>Cyclone IQ80310</secondary></indexterm>RedBoot supports both serial ports and the built-in ethernet port for communication and downloads. The default serial port settings are 115200,8,N,1. RedBoot also supports flash management for the onboard 8MB flash. Several basic RedBoot configurations are supported: </para> <itemizedlist> <listitem><para>RedBoot running from the board's flash boot sector.</para> </listitem> <listitem><para>RedBoot running from flash address 0x40000, with ARM bootloader in flash boot sector.</para> </listitem> <listitem><para>RedBoot running from RAM with RedBoot in the flash boot sector. </para> </listitem> <listitem><para>RedBoot running from RAM with ARM bootloader in flash boot sector.</para> </listitem> </itemizedlist> <para>A special RedBoot command: <command>diag</command> is used to access a set of hardware diagnostics provided by the board manufacturer. </para> </sect2> <sect2> <title>Initial Installation Method</title> <para>The board manufacturer provides a DOS application which is capable of programming the flash over the PCI bus, and this is required for initial installations of RedBoot. Please see the board manual for information on using this utility. In general, the process involves programming one of the two flash based RedBoot configurations to flash. The RedBoot which runs from the flash boot sector should be programmed to flash address 0x00000000. RedBoot that has been configured to be started by the ARM bootloader should be programmed to flash address 0x00004000. </para> <para>Four sets of prebuilt files are provided in a tarball and zip format. Each set corresponds to one of the four supported configurations and includes an ELF file (.elf), a binary image (.bin), and an S-record file (.srec). <programlisting> For RedBoot running from the flash boot sector: bins/cyclone-rom.bin bins/cyclone-rom.elf bins/cyclone-rom.srec For RedBoot running from flash address 0x40000: bins/cyclone-roma.bin bins/cyclone-roma.elf bins/cyclone-roma.srec For RedBoot running from RAM with RedBoot in the flash boot sector: bins/cyclone-ram.bin bins/cyclone-ram.elf bins/cyclone-ram.srec For RedBoot running from RAM with ARM bootloader in the flash boot sector: bins/cyclone-rama.bin bins/cyclone-rama.elf bins/cyclone-rama.srec</programlisting>Initial installations deal with the flash-based RedBoots. Installation and use of RAM based RedBoots is documented elsewhere.</para> <para> To install RedBoot to run from the flash boot sector, use the manufacturer's flash utility to install the bins/cyclone-rom.bin image at address zero. </para> <para>To install RedBoot to run from address 0x40000 with the ARM bootloader in the flash boot sector, use the manufacturer's flash utility to install the bins/cyclone-roma.bin image at address 0x40000. </para> <para>After booting the initial installation of RedBoot, this warning may be printed: <programlisting>flash configuration checksum error or invalid key </programlisting>This is normal, and indicates that the flash must be configured for use by RedBoot. Even if the above message is not printed, it may be a good idea to reinitialize the flash anyway. Do this with the <command> fis</command> command: <programlisting>RedBoot> <userinput>fis init</userinput> About to initialize [format] flash image system - continue (y/n)? y *** Initialize flash Image System Warning: device contents not erased, some blocks may not be usable ... Unlock from 0x007e0000-0x00800000: . ... Erase from 0x007e0000-0x00800000: . ... Program from 0xa1fd0000-0xa1fd0400 at 0x007e0000: . ... Lock from 0x007e0000-0x00800000: . Followed by the fconfig command: RedBoot> <userinput>fconfig</userinput> Run script at boot: <userinput>false</userinput> Use BOOTP for network configuration: <userinput>false</userinput> Local IP address: <userinput>192.168.1.153</userinput> Default server IP address: <userinput>192.168.1.10</userinput> GDB connection port: <userinput>1000</userinput> Network debug at boot time: <userinput>false</userinput> Update RedBoot non-volatile configuration - continue (y/n)? <userinput>y</userinput> ... Unlock from 0x007c0000-0x007e0000: . ... Erase from 0x007c0000-0x007e0000: . ... Program from 0xa0013018-0xa0013418 at 0x007c0000: . ... Lock from 0x007c0000-0x007e0000: .</programlisting></para> </sect2> <sect2> <title>Error codes</title> <para>RedBoot uses the two digit LED display to indicate errors during board initialization. Possible error codes are: <programlisting>88 - Unknown Error 55 - I2C Error FF - SDRAM Error 01 - No Error </programlisting></para> </sect2> <sect2> <title>Using RedBoot with ARM Bootloader </title> <para>RedBoot can coexist with ARM tools in flash on the IQ80310 board. In this configuration, the ARM bootloader will occupy the flash boot sector while RedBoot is located at flash address 0x40000. The sixteen position rotary switch is used to tell the ARM bootloader to jump to the RedBoot image located at address 0x40000. RedBoot is selected by switch position 0 or 1. Other switch positions are used by the ARM firmware and RedBoot will not be started. </para> </sect2> <sect2> <title>Flash management</title> <sect3> <title>Updating the primary RedBoot image</title> <para>To update the primary RedBoot images, follow the procedures detailed in <xref linkend="update-primary-image">, but the actual numbers used with the flags in the sample commands should be: </para> <bridgehead>ARM bootloader in flash boot sector</bridgehead> <para><programlisting>-f 0x40000 -b 0xa0100000 -l 0x40000</programlisting></para> <bridgehead>RedBoot in flash boot sector</bridgehead> <para><programlisting>-f 0 -b 0xa0100000 -l 0x40000</programlisting></para> </sect3> <sect3> <title>Updating the secondary RedBoot image</title> <bridgehead>ARM bootloader in flash boot sector</bridgehead> <programlisting>-f 0x80000 -b 0xa0020000 -r 0xa0020000 -l 0x40000</programlisting> <bridgehead>RedBoot in flash boot sector</bridgehead> <programlisting>-f 0x40000 -b 0xa0020000 -r 0xa0020000 -l 0x40000</programlisting> </sect3></sect2> <sect2> <title>Special RedBoot Commands </title> <para>A special RedBoot command, diag, is used to access a set of hardware diagnostics provided by the board manufacturer. To access the diagnostic menu, enter diag at the RedBoot prompt: <programlisting> RedBoot> <userinput>diag</userinput> Entering Hardware Diagnostics - Disabling Data Cache! 1 - Memory Tests 2 - Repeating Memory Tests 3 - 16C552 DUART Serial Port Tests 4 - Rotary Switch S1 Test for positions 0-3 5 - seven Segment LED Tests 6 - Backplane Detection Test 7 - Battery Status Test 8 - External Timer Test 9 - i82559 Ethernet Configuration 10 - i82559 Ethernet Test 11 - Secondary PCI Bus Test 12 - Primary PCI Bus Test 13 - i960Rx/303 PCI Interrupt Test 14 - Internal Timer Test 15 - GPIO Test 0 - quit Enter the menu item number (0 to quit): </programlisting> Tests for various hardware subsystems are provided, and some tests require special hardware in order to execute normally. The Ethernet Configuration item may be used to set the board ethernet address.</para> </sect2> <sect2> <title>IQ80310 Hardware Tests</title> <para><screen>1 - Memory Tests 2 - Repeating Memory Tests 3 - 16C552 DUART Serial Port Tests 4 - Rotary Switch S1 Test for positions 0-3 5 - 7 Segment LED Tests 6 - Backplane Detection Test 7 - Battery Status Test 8 - External Timer Test 9 - i82559 Ethernet Configuration 10 - i82559 Ethernet Test 11 - i960Rx/303 PCI Interrupt Test 12 - Internal Timer Test 13 - Secondary PCI Bus Test 14 - Primary PCI Bus Test 15 - Battery Backup SDRAM Memory Test 16 - GPIO Test 17 - Repeat-On-Fail Memory Test 18 - Coyonosa Cache Loop (No return) 19 - Show Software and Hardware Revision 0 - quit Enter the menu item number (0 to quit): </screen></para> <para>Tests for various hardware subsystems are provided, and some tests require special hardware in order to execute normally. The Ethernet Configuration item may be used to set the board ethernet address.</para> </sect2> <sect2> <title>Rebuilding RedBoot </title> <para>The build process is nearly identical for the four supported configurations. Assuming that the provided RedBoot source tree is located in the current directory and that we want to build a RedBoot that runs from the flash boot sector, the build process is: <programlisting>% export TOPDIR=`pwd` % export ECOS_REPOSITORY=\ ${TOPDIR}/src/ecos-monitors/redboot-<replaceable>DATE</replaceable>-intel/packages % mkdir ${TOPDIR}/build % cd ${TOPDIR}/build % ecosconfig new iq80310 redboot % ecosconfig import \ ${ECOS_REPOSITORY}/hal/arm/iq80310/<replaceable>VERSION</replaceable>/misc/redboot_ROM.ecm % ecosconfig tree % make</programlisting>If a different configuration is desired, simply use the above build process but substitute an alternate configuration file for the ecosconfig import command, e.g.:</para> <para>For a RedBoot that runs from flash address 0x40000 with the ARM booloader in the flash boot sector, use: <programlisting>% ecosconfig import \ ${ECOS_REPOSITORY}/hal/arm/iq80310/<replaceable>VERSION</replaceable>/misc/redboot_ROMA.ecm</programlisting>For a RedBoot which runs from RAM with RedBoot located in the flash boot sector, use:<programlisting>% ecosconfig import \ ${ECOS_REPOSITORY}/hal/arm/iq80310/<replaceable>VERSION</replaceable>/misc/redboot_RAM.ecm</programlisting>For a RedBoot which runs from RAM with ARM bootloader located in the flash boot sector, use: <programlisting>% ecosconfig import \ ${ECOS_REPOSITORY}/hal/arm/iq80310/<replaceable>VERSION</replaceable>/misc/redboot_RAMA.ecm</programlisting></para> </sect2> <sect2> <title>Interrupts</title> <para>RedBoot uses an interrupt vector table which is located at address 0xA000A004. Entries in this table are pointers to functions with this protoype:: <programlisting> int irq_handler( unsigned vector, unsigned data )</programlisting>On an IQ80310 board, the vector argument is one of 49 interrupts defined in <computeroutput> hal/arm/iq80310/current/include/hal_platform_ints.h:</computeroutput>: <programlisting> // *** 80200 CPU *** #define CYGNUM_HAL_INTERRUPT_reserved0 0 #define CYGNUM_HAL_INTERRUPT_PMU_PMN0_OVFL 1 // See Ch.12 - Performance Mon. #define CYGNUM_HAL_INTERRUPT_PMU_PMN1_OVFL 2 // PMU counter 0/1 overflow #define CYGNUM_HAL_INTERRUPT_PMU_CCNT_OVFL 3 // PMU clock overflow #define CYGNUM_HAL_INTERRUPT_BCU_INTERRUPT 4 // See Ch.11 - Bus Control Unit #define CYGNUM_HAL_INTERRUPT_NIRQ 5 // external IRQ #define CYGNUM_HAL_INTERRUPT_NFIQ 6 // external FIQ // *** XINT6 interrupts *** #define CYGNUM_HAL_INTERRUPT_DMA_0 7 #define CYGNUM_HAL_INTERRUPT_DMA_1 8 #define CYGNUM_HAL_INTERRUPT_DMA_2 9 #define CYGNUM_HAL_INTERRUPT_GTSC 10 // Global Time Stamp Counter #define CYGNUM_HAL_INTERRUPT_PEC 11 // Performance Event Counter #define CYGNUM_HAL_INTERRUPT_AAIP 12 // application accelerator unit // *** XINT7 interrupts *** // I2C interrupts #define CYGNUM_HAL_INTERRUPT_I2C_TX_EMPTY 13 #define CYGNUM_HAL_INTERRUPT_I2C_RX_FULL 14 #define CYGNUM_HAL_INTERRUPT_I2C_BUS_ERR 15 #define CYGNUM_HAL_INTERRUPT_I2C_STOP 16 #define CYGNUM_HAL_INTERRUPT_I2C_LOSS 17 #define CYGNUM_HAL_INTERRUPT_I2C_ADDRESS 18 // Messaging Unit interrupts #define CYGNUM_HAL_INTERRUPT_MESSAGE_0 19 #define CYGNUM_HAL_INTERRUPT_MESSAGE_1 20 #define CYGNUM_HAL_INTERRUPT_DOORBELL 21 #define CYGNUM_HAL_INTERRUPT_NMI_DOORBELL 22 #define CYGNUM_HAL_INTERRUPT_QUEUE_POST 23 #define CYGNUM_HAL_INTERRUPT_OUTBOUND_QUEUE_FULL 24 #define CYGNUM_HAL_INTERRUPT_INDEX_REGISTER 25 // PCI Address Translation Unit #define CYGNUM_HAL_INTERRUPT_BIST 26 // *** External board interrupts (XINT3) *** #define CYGNUM_HAL_INTERRUPT_TIMER 27 // external timer #define CYGNUM_HAL_INTERRUPT_ETHERNET 28 // onboard enet #define CYGNUM_HAL_INTERRUPT_SERIAL_A 29 // 16x50 uart A #define CYGNUM_HAL_INTERRUPT_SERIAL_B 30 // 16x50 uart B #define CYGNUM_HAL_INTERRUPT_PCI_S_INTD 31 // secondary PCI INTD // The hardware doesn't (yet?) provide masking or status for these // even though they can trigger cpu interrupts. ISRs will need to // poll the device to see if the device actually triggered the // interrupt. #define CYGNUM_HAL_INTERRUPT_PCI_S_INTC 32 // secondary PCI INTC #define CYGNUM_HAL_INTERRUPT_PCI_S_INTB 33 // secondary PCI INTB #define CYGNUM_HAL_INTERRUPT_PCI_S_INTA 34 // secondary PCI INTA // *** NMI Interrupts go to FIQ *** #define CYGNUM_HAL_INTERRUPT_MCU_ERR 35 #define CYGNUM_HAL_INTERRUPT_PATU_ERR 36 #define CYGNUM_HAL_INTERRUPT_SATU_ERR 37 #define CYGNUM_HAL_INTERRUPT_PBDG_ERR 38 #define CYGNUM_HAL_INTERRUPT_SBDG_ERR 39 #define CYGNUM_HAL_INTERRUPT_DMA0_ERR 40 #define CYGNUM_HAL_INTERRUPT_DMA1_ERR 41 #define CYGNUM_HAL_INTERRUPT_DMA2_ERR 42 #define CYGNUM_HAL_INTERRUPT_MU_ERR 43 #define CYGNUM_HAL_INTERRUPT_reserved52 44 #define CYGNUM_HAL_INTERRUPT_AAU_ERR 45 #define CYGNUM_HAL_INTERRUPT_BIU_ERR 46 // *** ATU FIQ sources *** #define CYGNUM_HAL_INTERRUPT_P_SERR 47 #define CYGNUM_HAL_INTERRUPT_S_SERR 48</programlisting>The data passed to the ISR is pulled from a data table <computeroutput>(hal_interrupt_data) </computeroutput> which immediately follows the interrupt vector table. With 49 interrupts, the data table starts at address 0xA000A0C8. </para> <para>An application may create a normal C function with the above prototype to be an ISR. Just poke its address into the table at the correct index and enable the interrupt at its source. The return value of the ISR is ignored by RedBoot.</para> </sect2> <sect2> <title>Memory Maps</title> <para>The first level page table is located at 0xa0004000. Two second level tables are also used. One second level table is located at 0xa0008000 and maps the first 1MB of flash. The other second level table is at 0xa0008400, and maps the first 1MB of SDRAM. <note><title>NOTE</title> <para>The virtual memory maps in this section use a C and B column to indicate whether or not the region is cached (C) or buffered (B).</para> </note></para> <para><programlisting>Physical Address Range Description ----------------------- ---------------------------------- 0x00000000 - 0x00000fff flash Memory 0x00001000 - 0x00001fff 80312 Internal Registers 0x00002000 - 0x007fffff flash Memory 0x00800000 - 0x7fffffff PCI ATU Outbound Direct Window 0x80000000 - 0x83ffffff Primary PCI 32-bit Memory 0x84000000 - 0x87ffffff Primary PCI 64-bit Memory 0x88000000 - 0x8bffffff Secondary PCI 32-bit Memory 0x8c000000 - 0x8fffffff Secondary PCI 64-bit Memory 0x90000000 - 0x9000ffff Primary PCI IO Space 0x90010000 - 0x9001ffff Secondary PCI IO Space 0x90020000 - 0x9fffffff Unused 0xa0000000 - 0xbfffffff SDRAM 0xc0000000 - 0xefffffff Unused 0xf0000000 - 0xffffffff 80200 Internal Registers Virtual Address Range C B Description ----------------------- - - ---------------------------------- 0x00000000 - 0x00000fff Y Y SDRAM 0x00001000 - 0x00001fff N N 80312 Internal Registers 0x00002000 - 0x007fffff Y N flash Memory 0x00800000 - 0x7fffffff N N PCI ATU Outbound Direct Window 0x80000000 - 0x83ffffff N N Primary PCI 32-bit Memory 0x84000000 - 0x87ffffff N N Primary PCI 64-bit Memory 0x88000000 - 0x8bffffff N N Secondary PCI 32-bit Memory 0x8c000000 - 0x8fffffff N N Secondary PCI 64-bit Memory 0x90000000 - 0x9000ffff N N Primary PCI IO Space 0x90010000 - 0x9001ffff N N Secondary PCI IO Space 0xa0000000 - 0xbfffffff Y Y SDRAM 0xc0000000 - 0xcfffffff Y Y Cache Flush Region 0xd0000000 - 0xd0000fff Y N first 4k page of flash 0xf0000000 - 0xffffffff N N 80200 Internal Registers </programlisting></para> </sect2> <sect2> <title>Resource Usage</title> <para>The standalone flash based RedBoot image (no ARM bootloader) occupies flash addresses 0x00000000 - 0x0003ffff. </para> <para>The flash based RedBoot configured to be booted by the ARM bootloader occupies flash addresses 0x00040000 - 0x0007ffff. Both of these also reserve RAM (0xa0000000 - 0xa001ffff) for RedBoot runtime uses. </para> <para>Both RAM based RedBoot configurations are designed to run from RAM at addresses 0xa0020000 - 0xa005ffff. RAM addresses from 0xa0060000 to the end of RAM are available for general use, such as a temporary scratchpad for downloaded images before they are written to flash. </para> <para>The external timer is used as a polled timer to provide timeout support for networking and XModem file transfers.</para> </sect2></sect1> <?Pub _newpage> <sect1 id="iq80321"> <title>Intel IQ80321</title> <sect2> <title>Overview</title> <para><indexterm><primary>Intel IQ80321</primary><secondary>installing and testing</secondary></indexterm><indexterm><primary>installing and testing </primary><secondary>Intel IQ80321</secondary></indexterm>RedBoot supports the serial port and the built-in ethernet port for communication and downloads. The default serial port settings are 115200,8,N,1. RedBoot also supports flash management for the onboard 8MB flash. Several basic RedBoot configurations are supported: </para> <itemizedlist> <listitem><para>RedBoot running from the board's flash boot sector.</para> </listitem> <listitem><para>RedBoot running from RAM with RedBoot in the flash boot sector. </para> </listitem> </itemizedlist> <para>A special RedBoot command: <command>diag</command> is used to access a set of hardware diagnostics. </para> </sect2> <sect2> <title>Initial Installation Method</title> <para>The board manufacturer provides a DOS application which is capable of programming the flash over the PCI bus, and this is required for initial installations of RedBoot. Please see the board manual for information on using this utility. In general, the process involves programming the flash based RedBoot to flash. RedBoot should be programmed to flash address 0x00000000 using the DOS utility. </para> <para>Two sets of prebuilt files are provided in a tarball and zip format. Each set corresponds to one of the supported configurations and includes an ELF file (.elf), a binary image (.bin), and an S-record file (.srec). <programlisting> For RedBoot running from the flash boot sector: loaders/iq80321/iq80321-rom.bin loaders/iq80321/iq80321-rom.elf loaders/iq80321/iq80321-rom.srec For RedBoot running from RAM with RedBoot in the flash boot sector: loaders/iq80321/iq80321-ram.bin loaders/iq80321/iq80321-ram.elf loaders/iq80321/iq80321-ram.srec </programlisting>Initial installations deal with the flash-based RedBoots. Installation and use of RAM based RedBoots is documented elsewhere.</para> <para> To install RedBoot to run from the flash boot sector, use the manufacturer's flash utility to install the <filename>loaders/iq80321/iq80321-rom.bin</filename> image at address zero. </para> <para>After booting the initial installation of RedBoot, this warning may be printed: <programlisting>flash configuration checksum error or invalid key </programlisting>This is normal, and indicates that the flash must be configured for use by RedBoot. Even if the above message is not printed, it may be a good idea to reinitialize the flash anyway. Do this with the <command> fis</command> command: <programlisting>RedBoot> <userinput>fis init</userinput> About to initialize [format] FLASH image system - continue (y/n)? y *** Initialize FLASH Image System Warning: device contents not erased, some blocks may not be usable ... Unlock from 0xf07e0000-0xf0800000: . ... Erase from 0xf07e0000-0xf0800000: . ... Program from 0x01ddf000-0x01ddf400 at 0xf07e0000: . ... Lock from 0xf07e0000-0xf0800000: . </programlisting></para></sect2> <sect2> <title>Switch Settings</title> <para>The 80321 board is highly configurable through a number of switches and jumpers. RedBoot makes some assumptions about board configuration and attention must be paid to these assumptions for reliable RedBoot operation: <itemizedlist> <listitem><para>The onboard ethernet and the secondary slot may be placed in a private space so that they are not seen by a PC BIOS. If the board is to be used in a PC with BIOS, then the ethernet should be placed in this private space so that RedBoot and the BIOS do not conflict. </para></listitem> <listitem><para>RedBoot assumes that the board is plugged into a PC with BIOS. This requires RedBoot to detect when the BIOS has configured the PCI-X secondary bus. If the board is placed in a backplane, RedBoot will never see the BIOS configure the secondary bus. To prevent this wait, set switch S7E1-3 to ON when using the board in a backplane.</para></listitem> <listitem><para>For the remaining switch settings, the following is a known good configuration: <informaltable frame=all> <tgroup cols=2> <tbody> <row><entry>S1D1</entry><entry>All OFF</entry></row> <row><entry>S7E1</entry><entry>7 is ON, all others OFF</entry></row> <row><entry>S8E1</entry><entry>2,3,5,6 are ON, all others OFF</entry></row> <row><entry>S8E2</entry><entry>2,3 are ON, all others OFF</entry></row> <row><entry>S9E1</entry><entry>3 is ON, all others OFF</entry></row> <row><entry>S4D1</entry><entry>1,3 are ON, all others OFF</entry></row> <row><entry>J9E1</entry><entry>2,3 jumpered</entry></row> <row><entry>J9F1</entry><entry>2,3 jumpered</entry></row> <row><entry>J3F1</entry><entry>Nothing jumpered</entry></row> <row><entry>J3G1</entry><entry>2,3 jumpered</entry></row> <row><entry>J1G2</entry><entry>2,3 jumpered</entry></row> </tbody></tgroup></informaltable></para></listitem> </itemizedlist> </para> </sect2> <sect2> <title>LED Codes</title> <para>RedBoot uses the two digit LED display to indicate status during board initialization. Possible codes are:</para> <programlisting width=72> LED Actions ------------------------------------------------------------- Power-On/Reset 88 Set the CPSR Enable coprocessor access Drain write and fill buffer Setup PBIU chip selects A1 Enable the Icache A2 Move FLASH chip select from 0x0 to 0xF0000000 Jump to new FLASH location A3 Setup and enable the MMU A4 I2C interface initialization 90 Wait for I2C initialization to complete 91 Send address (via I2C) to the DIMM 92 Wait for transmit complete 93 Read SDRAM PD data from DIMM 94 Read remainder of EEPROM data. An error will result in one of the following error codes on the LEDs: 77 BAD EEPROM checksum 55 I2C protocol error FF bank size error A5 Setup DDR memory interface A6 Enable branch target buffer Drain the write & fill buffers Flush Icache, Dcache and BTB Flush instuction and data TLBs Drain the write & fill buffers SL ECC Scrub Loop SE A7 Clean, drain, flush the main Dcache A8 Clean, drain, flush the mini Dcache Flush Dcache Drain the write & fill buffers A9 Enable ECC AA Save SDRAM size Move MMU tables into RAM AB Clean, drain, flush the main Dcache Clean, drain, flush the mini Dcache Drain the write & fill buffers AC Set the TTB register to DRAM mmu_table AD Set mode to IRQ mode A7 Move SWI & Undefined "vectors" to RAM (at 0x0) A6 Switch to supervisor mode A5 Move remaining "vectors" to RAM (at 0x0) A4 Copy DATA to RAM Initialize interrupt exception environment Initialize stack Clear BSS section A3 Call platform specific hardware initialization A2 Run through static constructors A1 Start up the eCos kernel or RedBoot </programlisting> </sect2> <sect2> <title>Flash management</title> <sect3> <title>Updating the primary RedBoot image</title> <para>To update the primary RedBoot images, follow the procedures detailed in <xref linkend="update-primary-image">, but the actual numbers used with the flags in the sample commands should be: </para> <para><programlisting>-f 0xf0000000 -b 0x100000 -l 0x40000</programlisting></para> </sect3> <sect3> <title>Updating the secondary RedBoot image</title> <para>To update the secondary RedBoot image, follow the procedures detailed in <xref linkend="different-version-from-RAM">, but the actual numbers used with the flags in the sample commands should be: </para> <programlisting>-f 0xf0040000 -b 0x20000 -r 0x20000 -l 0x40000</programlisting> </sect3></sect2> <sect2> <title>Special RedBoot Commands </title> <para>A special RedBoot command, diag, is used to access a set of hardware diagnostics. To access the diagnostic menu, enter diag at the RedBoot prompt: <programlisting> RedBoot> <userinput>diag</userinput> Entering Hardware Diagnostics - Disabling Data Cache! IQ80321 Hardware Tests 1 - Memory Tests 2 - Repeating Memory Tests 3 - Repeat-On-Fail Memory Tests 4 - Rotary Switch S1 Test 5 - 7 Segment LED Tests 6 - i82544 Ethernet Configuration 7 - Baterry Status Test 8 - Battery Backup SDRAM Memory Test 9 - Timer Test 10 - PCI Bus test 11 - CPU Cache Loop (No Return) 0 - quit Enter the menu item number (0 to quit): </programlisting> Tests for various hardware subsystems are provided, and some tests require special hardware in order to execute normally. The Ethernet Configuration item may be used to set the board ethernet address.</para> <sect3> <title>Memory Tests</title> <para>This test is used to test installed DDR SDRAM memory. Five different tests are run over the given address ranges. If errors are encountered, the test is aborted and information about the failure is printed. When selected, the user will be prompted to enter the base address of the test range and its size. The numbers must be in hex with no leading “0x” </para> <programlisting> Enter the menu item number (0 to quit): 1 Base address of memory to test (in hex): 100000 Size of memory to test (in hex): 200000 Testing memory from 0x00100000 to 0x002fffff. Walking 1's test: 0000000100000002000000040000000800000010000000200000004000000080 0000010000000200000004000000080000001000000020000000400000008000 0001000000020000000400000008000000100000002000000040000000800000 0100000002000000040000000800000010000000200000004000000080000000 passed 32-bit address test: passed 32-bit address bar test: passed 8-bit address test: passed Byte address bar test: passed Memory test done. </programlisting> </sect3> <sect3> <title>Repeating Memory Tests</title> <para>The repeating memory tests are exactly the same as the above memory tests, except that the tests are automatically rerun after completion. The only way out of this test is to reset the board. </para> </sect3> <sect3> <title>Repeat-On-Fail Memory Tests</title> <para>This is similar to the repeating memory tests except that when an error is found, the failing test continuously retries on the failing address. </para> </sect3> <sect3> <title>Rotary Switch S1 Test</title> <para>This tests the operation of the sixteen position rotary switch. When run, this test will display the current position of the rotary switch on the LED display. Slowly dial through each position and confirm reading on LED. </para> </sect3> <sect3> <title>7 Segment LED Tests</title> <para>This tests the operation of the seven segment displays. When run, each LED cycles through 0 through F and a decimal point. </para> </sect3> <sect3> <title>i82544 Ethernet Configuration</title> <para>This test initializes the ethernet controller’s serial EEPROM if the current contents are invalid. In any case, this test will also allow the user to enter a six byte ethernet MAC address into the serial EEPROM. </para> <programlisting> Enter the menu item number (0 to quit): 6 Current MAC address: 00:80:4d:46:00:02 Enter desired MAC address: 00:80:4d:46:00:01 Writing to the Serial EEPROM... Done ******** Reset The Board To Have Changes Take Effect ******** </programlisting> </sect3> <sect3> <title>Battery Status Test</title> <para>This tests the current status of the battery. First, the test checks to see if the battery is installed and reports that finding. If the battery is installed, the test further determines whether the battery status is one or more of the following: <itemizedlist> <listitem><para>Battery is charging.</para></listitem> <listitem><para>Battery is fully discharged.</para></listitem> <listitem><para>Battery voltage measures within normal operating range. </para></listitem> </itemizedlist> </para> </sect3> <sect3> <title>Battery Backup SDRAM Memory Test</title> <para>This tests the battery backup of SDRAM memory. This test is a three step process:</para> <orderedlist> <listitem><para>Select Battery backup test from main diag menu, then write data to SDRAM.</para></listitem> <listitem><para>Turn off power for 60 seconds, then repower the board. </para></listitem> <listitem><para>Select Battery backup test from main diag menu, then check data that was written in step 1. </para></listitem> </orderedlist> </sect3> <sect3> <title>Timer Test</title> <para>This tests the internal timer by printing a number of dots at one second intervals.</para> </sect3> <sect3> <title>PCI Bus Test</title> <para>This tests the secondary PCI-X bus and socket. This test requires that an IQ80310 board be plugged into the secondary slot of the IOP80321 board. The test assumes at least 32MB of installed memory on the IQ80310. That memory is mapped into the IOP80321 address space and the memory tests are run on that memory. </para> </sect3> <sect3> <title>CPU Cache Loop</title> <para>This test puts the CPU into a tight loop run entirely from the ICache. This should prevent all external bus accesses. </para> </sect3> </sect2> <sect2> <title>Rebuilding RedBoot </title> <para>The build process is nearly identical for the supported configurations. Assuming that the provided RedBoot source tree is located in the current directory and that we want to build a RedBoot that runs from the flash boot sector, the build process is: <programlisting>% export TOPDIR=`pwd` % export ECOS_REPOSITORY=\ ${TOPDIR}/src/ecos-monitors/redboot-<replaceable>DATE</replaceable>-intel/packages % mkdir ${TOPDIR}/build % cd ${TOPDIR}/build % ecosconfig new iq80321 redboot % ecosconfig import \ ${ECOS_REPOSITORY}/hal/arm/xscale/iq80321/<replaceable>VERSION</replaceable>/misc/redboot_ROM.ecm % ecosconfig tree % make</programlisting>If a RedBoot that runs from RAM is desired, simply use the above build process but substitute an alternate configuration file for the ecosconfig import command, e.g.:</para> <para><programlisting>% ecosconfig import \ ${ECOS_REPOSITORY}/hal/arm/xscale/iq80321/<replaceable>VERSION</replaceable>/misc/redboot_RAM.ecm </programlisting></para> </sect2> <sect2> <title>Interrupts</title> <para>RedBoot uses an interrupt vector table which is located at address 0x8004. Entries in this table are pointers to functions with this protoype:: <programlisting> int irq_handler( unsigned vector, unsigned data )</programlisting>On an IQ80321 board, the vector argument is one of 32 interrupts defined in <computeroutput> hal/arm/xscale/verde/current/include/hal_var_ints.h:</computeroutput>: <programlisting> // *** 80200 CPU *** #define CYGNUM_HAL_INTERRUPT_DMA0_EOT 0 #define CYGNUM_HAL_INTERRUPT_DMA0_EOC 1 #define CYGNUM_HAL_INTERRUPT_DMA1_EOT 2 #define CYGNUM_HAL_INTERRUPT_DMA1_EOC 3 #define CYGNUM_HAL_INTERRUPT_RSVD_4 4 #define CYGNUM_HAL_INTERRUPT_RSVD_5 5 #define CYGNUM_HAL_INTERRUPT_AA_EOT 6 #define CYGNUM_HAL_INTERRUPT_AA_EOC 7 #define CYGNUM_HAL_INTERRUPT_CORE_PMON 8 #define CYGNUM_HAL_INTERRUPT_TIMER0 9 #define CYGNUM_HAL_INTERRUPT_TIMER1 10 #define CYGNUM_HAL_INTERRUPT_I2C_0 11 #define CYGNUM_HAL_INTERRUPT_I2C_1 12 #define CYGNUM_HAL_INTERRUPT_MESSAGING 13 #define CYGNUM_HAL_INTERRUPT_ATU_BIST 14 #define CYGNUM_HAL_INTERRUPT_PERFMON 15 #define CYGNUM_HAL_INTERRUPT_CORE_PMU 16 #define CYGNUM_HAL_INTERRUPT_BIU_ERR 17 #define CYGNUM_HAL_INTERRUPT_ATU_ERR 18 #define CYGNUM_HAL_INTERRUPT_MCU_ERR 19 #define CYGNUM_HAL_INTERRUPT_DMA0_ERR 20 #define CYGNUM_HAL_INTERRUPT_DMA1_ERR 22 #define CYGNUM_HAL_INTERRUPT_AA_ERR 23 #define CYGNUM_HAL_INTERRUPT_MSG_ERR 24 #define CYGNUM_HAL_INTERRUPT_SSP 25 #define CYGNUM_HAL_INTERRUPT_RSVD_26 26 #define CYGNUM_HAL_INTERRUPT_XINT0 27 #define CYGNUM_HAL_INTERRUPT_XINT1 28 #define CYGNUM_HAL_INTERRUPT_XINT2 29 #define CYGNUM_HAL_INTERRUPT_XINT3 30 #define CYGNUM_HAL_INTERRUPT_HPI 31 </programlisting> The data passed to the ISR is pulled from a data table <computeroutput>(hal_interrupt_data) </computeroutput> which immediately follows the interrupt vector table. With 32 interrupts, the data table starts at address 0x8084. </para> <para>An application may create a normal C function with the above prototype to be an ISR. Just poke its address into the table at the correct index and enable the interrupt at its source. The return value of the ISR is ignored by RedBoot.</para> </sect2> <sect2> <title>Memory Maps</title> <para>The RAM based page table is located at RAM start + 0x4000. RedBoot may be configured for one of two memory maps. The difference between them is the location of RAM and the PCI outbound windows. The alternative memory map may be used when building RedBoot or eCos by using the <literal>RAM_ALTMAP</literal> and <literal>ROM_ALTMAP</literal> startup types in the configuration. <note><title>NOTE</title> <para>The virtual memory maps in this section use a C, B, and X column to indicate the caching policy for the region..</para> </note></para> <para><programlisting> X C B Description - - - --------------------------------------------- 0 0 0 Uncached/Unbuffered 0 0 1 Uncached/Buffered 0 1 0 Cached/Buffered Write Through, Read Allocate 0 1 1 Cached/Buffered Write Back, Read Allocate 1 0 0 Invalid -- not used 1 0 1 Uncached/Buffered No write buffer coalescing 1 1 0 Mini DCache - Policy set by Aux Ctl Register 1 1 1 Cached/Buffered Write Back, Read/Write Allocate Physical Address Range Description ----------------------- ---------------------------------- 0x00000000 - 0x7fffffff ATU Outbound Direct Window 0x80000000 - 0x900fffff ATU Outbound Translate Windows 0xa0000000 - 0xbfffffff SDRAM 0xf0000000 - 0xf0800000 FLASH (PBIU CS0) 0xfe800000 - 0xfe800fff UART (PBIU CS1) 0xfe840000 - 0xfe840fff Left 7-segment LED (PBIU CS3) 0xfe850000 - 0xfe850fff Right 7-segment LED (PBIU CS2) 0xfe8d0000 - 0xfe8d0fff Rotary Switch (PBIU CS4) 0xfe8f0000 - 0xfe8f0fff Baterry Status (PBIU CS5) 0xfff00000 - 0xffffffff Verde Memory mapped Registers Default Virtual Map X C B Description ----------------------- - - - ---------------------------------- 0x00000000 - 0x1fffffff 1 1 1 SDRAM 0x20000000 - 0x9fffffff 0 0 0 ATU Outbound Direct Window 0xa0000000 - 0xb00fffff 0 0 0 ATU Outbound Translate Windows 0xc0000000 - 0xdfffffff 0 0 0 Uncached alias for SDRAM 0xe0000000 - 0xe00fffff 1 1 1 Cache flush region (no phys mem) 0xf0000000 - 0xf0800000 0 1 0 FLASH (PBIU CS0) 0xfe800000 - 0xfe800fff 0 0 0 UART (PBIU CS1) 0xfe840000 - 0xfe840fff 0 0 0 Left 7-segment LED (PBIU CS3) 0xfe850000 - 0xfe850fff 0 0 0 Right 7-segment LED (PBIU CS2) 0xfe8d0000 - 0xfe8d0fff 0 0 0 Rotary Switch (PBIU CS4) 0xfe8f0000 - 0xfe8f0fff 0 0 0 Baterry Status (PBIU CS5) 0xfff00000 - 0xffffffff 0 0 0 Verde Memory mapped Registers Alternate Virtual Map X C B Description ----------------------- - - - ---------------------------------- 0x00000000 - 0x000fffff 1 1 1 Alias for 1st MB of SDRAM 0x00100000 - 0x7fffffff 0 0 0 ATU Outbound Direct Window 0x80000000 - 0x900fffff 0 0 0 ATU Outbound Translate Windows 0xa0000000 - 0xbfffffff 1 1 1 SDRAM 0xc0000000 - 0xdfffffff 0 0 0 Uncached alias for SDRAM 0xe0000000 - 0xe00fffff 1 1 1 Cache flush region (no phys mem) 0xf0000000 - 0xf0800000 0 1 0 FLASH (PBIU CS0) 0xfe800000 - 0xfe800fff 0 0 0 UART (PBIU CS1) 0xfe840000 - 0xfe840fff 0 0 0 Left 7-segment LED (PBIU CS3) 0xfe850000 - 0xfe850fff 0 0 0 Right 7-segment LED (PBIU CS2) 0xfe8d0000 - 0xfe8d0fff 0 0 0 Rotary Switch (PBIU CS4) 0xfe8f0000 - 0xfe8f0fff 0 0 0 Baterry Status (PBIU CS5) 0xfff00000 - 0xffffffff 0 0 0 Verde Memory mapped Registers </programlisting></para> </sect2> <sect2> <title>Resource Usage</title> <para>The flash based RedBoot image occupies flash addresses 0xf0000000 - 0xf003ffff and RAM addresses (0x00000000 - 0x0001ffff). </para> <para>The RAM based RedBoot configuration is designed to run from RAM at addresses 0x00020000 - 0x0005ffff. RAM addresses from 0x00060000 to the end of RAM are available for general use, such as a temporary scratchpad for downloaded images before they are written to flash. </para> <para>The Verde programmable timer0 is used for timeout support for networking and XModem file transfers.</para> </sect2></sect1> <?Pub _newpage> <sect1 id="brutus"> <title>Intel SA1100 (Brutus) </title> <sect2> <title>Overview</title> <para><indexterm><primary>Intel-SA1100 (Brutus)</primary><secondary>installing and testing</secondary></indexterm><indexterm><primary>installing and testing </primary><secondary>Intel SA1100 (Brutus)</secondary></indexterm>RedBoot supports both board serial ports on the Brutus board. The default serial port settings are 38400,8,N,1. flash management is not currently supported. </para> <para>Two basic RedBoot configurations are supported:<itemizedlist> <listitem><para>RedBoot running from the board's flash boot sector.</para> </listitem> <listitem><para>RedBoot running from RAM with RedBoot in the flash boot sector. </para> </listitem> </itemizedlist></para> </sect2> <sect2> <title>Initial Installation Method </title> <para>Device programmer is used to program socketecflash parts.</para> </sect2> <sect2> <title>Special RedBoot Commands </title> <para>None.</para> </sect2> <sect2> <title>Memory Maps </title> <para>The first level page table is located at physical address 0xc0004000. No second level tables are used.<note><title>NOTE</title> <para>The virtual memory maps in this section use a C and B column to indicate whether or not the region is cached (C) or buffered (B).</para> </note><programlisting>Physical Address Range Description ----------------------- ---------------------------------- 0x00000000 - 0x000fffff Boot ROM 0x08000000 - 0x083fffff Application flash 0x10000000 - 0x100fffff SRAM 0x18000000 - 0x180fffff Chip Select 3 0x20000000 - 0x3fffffff PCMCIA 0x80000000 - 0xbfffffff SA-1100 Internal Registers 0xc0000000 - 0xc7ffffff DRAM Bank 0 0xc8000000 - 0xcfffffff DRAM Bank 1 0xd0000000 - 0xd7ffffff DRAM Bank 2 0xd8000000 - 0xdfffffff DRAM Bank 3 0xe0000000 - 0xe7ffffff Cache Clean Virtual Address Range C B Description ----------------------- - - ---------------------------------- 0x00000000 - 0x003fffff Y Y DRAM Bank 0 0x00400000 - 0x007fffff Y Y DRAM Bank 1 0x00800000 - 0x00bfffff Y Y DRAM Bank 2 0x00c00000 - 0x00ffffff Y Y DRAM Bank 3 0x08000000 - 0x083fffff Y Y Application flash 0x10000000 - 0x100fffff Y N SRAM 0x20000000 - 0x3fffffff N N PCMCIA 0x40000000 - 0x400fffff Y Y Boot ROM 0x80000000 - 0xbfffffff N N SA-1100 Internal Registers 0xe0000000 - 0xe7ffffff Y Y Cache Clean</programlisting></para> </sect2> <sect2> <title>Resource Usage </title> <para>The flash based RedBoot image occupies flash addresses 0x40000000 - 0x4000ffff. The RAM based RedBoot image occupies RAM addresses 0x10000 - 0x2ffff. RAM addresses from 0x30000 to the end of RAM are available for general use such as a temporary scratchpad for downloaded images before they are written to flash. The SA11x0 OS timer is used as a polled timer to provide timeout support for XModem file transfers.</para> </sect2> <sect2> <title>Rebuilding RedBoot</title> <para>The instructions in <xref linkend="Rebuilding-Redboot"> should be followed. The values for TARGET, ARCH_DIR and PLATFORM_DIR on this platform are “brutus”, “arm” and “sa11x0/brutus” respectively. Note that the configuration export files supplied in the <computeroutput> hal/arm/sa11x0/brutus/<replaceable>VERSION</replaceable>/misc</computeroutput> directory in the RedBoot source tree should be used.</para> </sect2> </sect1> <?Pub _newpage> <sect1 id="ebsa285"> <title>Intel StrongArm EBSA 285</title> <sect2> <title>Overview</title> <para><indexterm><primary>Intel StrongArm EBSA 285</primary><secondary>installing and testing</secondary></indexterm><indexterm><primary>installing and testing </primary><secondary>Intel StrongArm EBSA 285</secondary></indexterm>RedBoot uses the single EBSA-285 serial port. The default serial port settings are 38400,8,N,1. If the EBSA-285 is used as a host on a PCI backplane, ethernet is supported using an Intel PRO/100+ ethernet adapter.</para> <para>Management of onboard flash is also supported. Two basic RedBoot configurations are supported: <itemizedlist> <listitem><para>RedBoot running from the board's flash boot sector.</para> </listitem> <listitem><para>RedBoot running from RAM with RedBoot in the flash boot sector. </para> </listitem> </itemizedlist></para> </sect2> <sect2> <title>Initial Installation Method </title> <para>A linux application is used to program the flash over the PCI bus. Sources and build instructions for this utility are located in the RedBoot sources in: <programlisting>.../packages/hal/arm/ebsa285/current/support/linux/safl_util </programlisting></para> </sect2> <sect2> <title>Flash management</title> <sect3> <title>Updating the primary RedBoot image</title> <para>To update the primary RedBoot images, follow the procedures detailed in <xref linkend="update-primary-image">, but the actual numbers used with the flags in the sample commands should be: <programlisting>-f 0x41000000 -b 0x100000 -l 0x40000</programlisting></para> </sect3> <sect3> <title>Updating the secondary RedBoot image</title> <para>To update the secondary RedBoot images, follow the procedures detailed in <xref linkend="different-version-from-RAM">, but the actual numbers used with the flags in the sample commands should be: <programlisting>-f 0x41040000 -b 0x20000 -r 0x20000 -l 0x40000 </programlisting></para> </sect3></sect2> <sect2> <title>Communication Channels </title> <para>Serial, Intel PRO 10/100+ 82559 PCI ethernet card.</para> </sect2> <sect2> <title>Special RedBoot Commands </title> <para>None.</para> </sect2> <sect2> <title>Memory Maps </title> <para>Physical and virtual mapping are mapped one to one on the EBSA-285 using a first level page table located at address 0x4000. No second level tables are used. <note><title>NOTE </title> <para>The virtual memory maps in this section use a C and B column to indicate whether or not the region is cached (C) or buffered (B).</para> </note><programlisting>Address Range C B Description ----------------------- - - ---------------------------------- 0x00000000 - 0x01ffffff Y Y SDRAM 0x40000000 - 0x400fffff N N 21285 Registers 0x41000000 - 0x413fffff Y N flash 0x42000000 - 0x420fffff N N 21285 CSR Space 0x50000000 - 0x50ffffff Y Y Cache Clean 0x78000000 - 0x78ffffff N N Outbound Write Flush 0x79000000 - 0x7c0fffff N N PCI IACK/Config/IO 0x80000000 - 0xffffffff N Y PCI Memory </programlisting></para> </sect2> <sect2> <title>Resource Usage </title> <para>The flash based RedBoot image occupies flash addresses 0x41000000 - 0x4103ffff. It also reserves the first 192K bytes of RAM for runtime uses. The RAM based RedBoot image occupies RAM addresses 0x30000 - 0x5ffff. RAM addresses from 0x60000 to the end of RAM are available for general use such as a temporary scratchpad for downloaded images before they are written to flash.</para> <para>Timer3 is used as a polled timer to provide timeout support for networking and XModem file transfers.</para> </sect2> <sect2> <title>Building eCos Test Cases to run with old RedBoots</title> <para>If using older versions of RedBoot, the default configuration for EBSA-285 will send diagnostic output to the serial line only, not over an ethernet connection. To allow eCos programs to use RedBoot to channel diagnostic output to GDB whether connected by net or serial, enable the configuration option <programlisting> CYGSEM_HAL_VIRTUAL_VECTOR_DIAG "Do diagnostic IO via virtual vector table"</programlisting> located here in the common HAL configuration tree: <programlisting>"eCos HAL" "ROM monitor support" "Enable use of virtual vector calling interface" "Do diagnostic IO via virtual vector table"</programlisting>Other than that, no special configuration is required to use RedBoot. </para> <para>If you have been using built-in stubs to acquire support for thread-aware debugging, you can still do that, but you must only use the serial device for GDB connection and you must not enable the option mentioned above. However, it is no longer necessary to do that to get thread-awareness; RedBoot is thread aware.</para> </sect2><sect2> <title>Rebuilding RedBoot</title> <para>The instructions in <xref linkend="Rebuilding-Redboot"> should be followed. The values for TARGET, ARCH_DIR and PLATFORM_DIR on this platform are “ebsa285”, “arm” and “ebsa285” respectively. Note that the configuration export files supplied in the <computeroutput> hal/arm/ebsa285/<replaceable>VERSION</replaceable>/misc</computeroutput> directory in the RedBoot source tree should be used.</para> </sect2> </sect1> <?Pub _newpage> <sect1 id="sa1100mm"> <title>Intel SA1100 Multimedia Board </title> <sect2> <title>Overview</title> <para><indexterm><primary>Intel SA1100 Multimedia Board</primary><secondary> installing and testing</secondary></indexterm><indexterm><primary>installing and testing</primary><secondary>Intel SA1100 Multimedia Board</secondary> </indexterm>RedBoot supports both board serial ports. The default serial port settings are 38400,8,N,1. flash management is also supported. Two basic RedBoot configurations are supported: n <itemizedlist> <listitem><para>RedBoot running from the board's flash boot sector.</para> </listitem> <listitem><para>RedBoot running from RAM with RedBoot in the flash boot sector. </para> </listitem> </itemizedlist></para> </sect2> <sect2> <title>Initial Installation Method </title> <para>A device programmer is used to program socketed flash parts.</para> </sect2> <sect2> <title>Special RedBoot Commands </title> <para>None.</para> </sect2> <sect2> <title>Memory Maps </title> <para>The first level page table is located at physical address 0xc0004000. No second level tables are used.<note><title>NOTE</title> <para>The virtual memory maps in this section use a C and B column to indicate whether or not the region is cached (C) or buffered (B).</para> </note><programlisting>Physical Address Range Description ----------------------- ---------------------------------- 0x00000000 - 0x000fffff Boot flash 0x08000000 - 0x083fffff Application flash 0x10000000 - 0x107fffff SA-1101 Board Registers 0x18000000 - 0x180fffff Ct8020 DSP 0x18400000 - 0x184fffff XBusReg 0x18800000 - 0x188fffff SysRegA 0x18c00000 - 0x18cfffff SysRegB 0x19000000 - 0x193fffff Spare CPLD A 0x19400000 - 0x197fffff Spare CPLD B 0x20000000 - 0x3fffffff PCMCIA 0x80000000 - 0xbfffffff SA1100 Internal Registers 0xc0000000 - 0xc07fffff DRAM Bank 0 0xe0000000 - 0xe7ffffff Cache Clean Virtual Address Range C B Description ----------------------- - - ---------------------------------- 0x00000000 - 0x007fffff Y Y DRAM Bank 0 0x08000000 - 0x083fffff Y Y Application flash 0x10000000 - 0x100fffff N N SA-1101 Registers 0x18000000 - 0x180fffff N N Ct8020 DSP 0x18400000 - 0x184fffff N N XBusReg 0x18800000 - 0x188fffff N N SysRegA 0x18c00000 - 0x18cfffff N N SysRegB 0x19000000 - 0x193fffff N N Spare CPLD A 0x19400000 - 0x197fffff N N Spare CPLD B 0x20000000 - 0x3fffffff N N PCMCIA 0x50000000 - 0x500fffff Y Y Boot flash 0x80000000 - 0xbfffffff N N SA1100 Internal Registers 0xc0000000 - 0xc07fffff N Y DRAM Bank 0 0xe0000000 - 0xe7ffffff Y Y Cache Clean</programlisting></para> </sect2> <sect2> <title>Resource Usage </title> <para>The flash based RedBoot image occupies virtual addresses 0x50000000 - 0x5000ffff. The RAM based RedBoot image occupies virtual addresses 0x10000 - 0x2ffff. RAM addresses from 0x30000 to the end of RAM are available for general use such as a temporary scratchpad for downloaded images before they are written to flash.</para> <para> The SA11x0 OS timer is used as a polled timer to provide timeout support for XModem file transfers.</para> </sect2><sect2> <title>Rebuilding RedBoot</title> <para>The instructions in <xref linkend="Rebuilding-Redboot"> should be followed. The values for TARGET, ARCH_DIR and PLATFORM_DIR on this platform are “sa1100mm”, “arm” and “sa11x0/sa1100mm” respectively. Note that the configuration export files supplied in the <computeroutput> hal/arm/sa11x0/sa1100mm/<replaceable>VERSION</replaceable>/misc</computeroutput> directory in the RedBoot source tree should be used.</para> </sect2> </sect1> <?Pub _newpage> <sect1 id="assabet"> <title>Intel SA1110 (Assabet) </title> <sect2> <title>Overview</title> <para><indexterm><primary>Intel SA1110 (Assabet)</primary><secondary>installing and testing</secondary></indexterm><indexterm><primary>installing and testing </primary><secondary>Intel SA1110 (Assabet)</secondary></indexterm>RedBoot supports the board serial port and the compact flash ethernet port. The default serial port settings are 38400,8,N,1. RedBoot also supports flash management on the Assabet. Two basic RedBoot configurations are supported: <itemizedlist> <listitem><para>RedBoot running from the board's flash boot sector.</para> </listitem> <listitem><para>RedBoot running from RAM with RedBoot in the flash boot sector. </para> </listitem> </itemizedlist></para> </sect2> <sect2> <title>Initial Installation Method </title> <para>A Windows or Linux utility is used to program flash over parallel port driven JTAG interface. See board documentation for details on in situ flash programming. </para> <para>The flash parts are also socketed and may be programmed in a suitable device programmer.</para> </sect2> <sect2> <title>Flash management</title> <sect3> <title>Updating the primary RedBoot image</title> <para>To update the primary RedBoot images, follow the procedures detailed in <xref linkend="update-primary-image">, but the actual numbers used with the flags in the sample commands should be: <programlisting>-f 0x50000000 -b 0x60000 -l 0x40000</programlisting></para> </sect3> <sect3> <title>Updating the secondary RedBoot image</title> <para>To update the secondary RedBoot images, follow the procedures detailed in <xref linkend="different-version-from-RAM">, but the actual numbers used with the flags in the sample commands should be: <programlisting>-f 0x50040000 -b 0x20000 -r 0x20000 -l 0x40000</programlisting></para> </sect3></sect2> <sect2> <title>Special RedBoot Commands </title> <para>None.</para> </sect2> <sect2> <title>Memory Maps </title> <para>The first level page table is located at physical address 0xc0004000. No second level tables are used.<note><title>NOTE</title> <para>The virtual memory maps in this section use a C and B column to indicate whether or not the region is cached (C) or buffered (B).</para> </note><programlisting>Physical Address Range Description ----------------------- ---------------------------------- 0x00000000 - 0x07ffffff flash 0x08000000 - 0x0fffffff SA-1111 Board flash 0x10000000 - 0x17ffffff Board Registers 0x18000000 - 0x1fffffff Ethernet 0x20000000 - 0x2fffffff SA-1111 Board PCMCIA 0x30000000 - 0x3fffffff Compact Flash 0x40000000 - 0x47ffffff SA-1111 Board 0x48000000 - 0x4bffffff GFX 0x80000000 - 0xbfffffff SA-1110 Internal Registers 0xc0000000 - 0xc7ffffff DRAM Bank 0 0xc8000000 - 0xcfffffff DRAM Bank 1 0xd0000000 - 0xd7ffffff DRAM Bank 2 0xd8000000 - 0xdfffffff DRAM Bank 3 0xe0000000 - 0xe7ffffff Cache Clean Virtual Address Range C B Description ----------------------- - - ---------------------------------- 0x00000000 - 0x01ffffff Y Y DRAM Bank 0 0x08000000 - 0x0fffffff Y Y SA-1111 Board flash 0x10000000 - 0x17ffffff N N Board Registers 0x18000000 - 0x1fffffff N N Ethernet 0x20000000 - 0x2fffffff N N SA-1111 Board PCMCIA 0x30000000 - 0x3fffffff N N Compact Flash 0x40000000 - 0x47ffffff N N SA-1111 Board 0x48000000 - 0x4bffffff N N GFX 0x50000000 - 0x57ffffff Y Y flash 0x80000000 - 0xbfffffff N N SA-1110 Internal Registers 0xc0000000 - 0xc1ffffff N Y DRAM Bank 0 0xe0000000 - 0xe7ffffff Y Y Cache Clean The flash based RedBoot image occupies virtual addresses 0x50000000 - 0x5003ffff. </programlisting></para> </sect2> <sect2> <title>Resource Usage </title> <para>The RAM based RedBoot image occupies RAM addresses 0x20000 - 0x5ffff. RAM addresses from 0x60000 to the end of RAM are available for general use such as a temporary scratchpad for downloaded images before they are written to flash. </para> <para>The SA11x0 OS timer is used as a polled timer to provide timeout support for network and XModem file transfers.</para> </sect2><sect2> <title>Rebuilding RedBoot</title> <para>The instructions in <xref linkend="Rebuilding-Redboot"> should be followed. The values for TARGET, ARCH_DIR and PLATFORM_DIR on this platform are “assabet”, “arm” and “sa11x0/assabet” respectively. Note that the configuration export files supplied in the <computeroutput> hal/arm/sa11x0/assabet/<replaceable>VERSION</replaceable>/misc</computeroutput> directory in the RedBoot source tree should be used.</para> </sect2> </sect1> <?Pub _newpage> <sect1 id="atlas"> <title>MIPS Atlas Board with CoreLV 4Kc and CoreLV 5Kc </title> <sect2> <title>Overview</title> <para><indexterm><primary>MIPS Atlas Board with CoreLV 4KC and CoreLV 5KC </primary><secondary>installing and testing</secondary></indexterm><indexterm> <primary>installing and testing</primary><secondary>MIPS Atlas Board with CoreLV 4KC and CoreLV 5KC</secondary></indexterm>RedBoot supports the DgbSer serial port and the built in ethernet port for communication and downloads. The default serial port settings are 115200,8,N,1. RedBoot runs from and supports flash management for the system flash region. These configurations are supported: <itemizedlist> <listitem><para>RedBoot running from the system flash boot sector.</para> </listitem> <listitem><para>RedBoot running from RAM with RedBoot in the system flash boot sector.</para> </listitem> </itemizedlist></para> </sect2> <sect2> <title>Initial Installation</title> <para>RedBoot is installed using the code download facility built into the Atlas board. See the Atlas User manual for details, and also the Atlas download format in <xref linkend="Atlas-download-format">.</para> <sect3> <title>Quick download instructions</title> <para>Here are quick start instructions for downloading the prebuilt RedBoot image. </para> <orderedlist> <listitem><para>Locate the prebuilt files in the bin directory: <computeroutput> deleteall.dl</computeroutput> and <computeroutput>redboot.dl</computeroutput>. </para> </listitem> <listitem><para>Make sure switch S1-1 is OFF and switch S5-1 is ON. Reset the board and verify that the LED display reads <computeroutput>Flash DL</computeroutput>. </para> </listitem> <listitem><para>Make sure your parallel port is connected to the 1284 port Of the Atlas board. </para> </listitem> <listitem><para>Send the deleteall.dl file to the parallel port to erase previous images: <programlisting>% cat deleteall.dl >/dev/lp0</programlisting> When this is complete, the LED display should read “Deleted.” </para> </listitem> <listitem><para>Send the RedBoot image to the board: <programlisting>% cat redboot.dl >/dev/lp0 </programlisting>When this is complete, the LED display should show the last address programmed. This will be something like: <computeroutput>1fc17000 </computeroutput>. </para> </listitem> <listitem><para>Change switch S5-1 to OFF and reset the board. The LED display should read “RedBoot”. </para> </listitem> <listitem><para>Run the RedBoot <command>fis init</command> and <command>fconfig</command> commands to initialize the flash. See <xref linkend="Atlas-Additional-fconfig-options">, <xref linkend="Flash-Image-System"> and <xref linkend="Persistent-State-Flash"> for details. </para> </listitem> </orderedlist> </sect3> <sect3 id="Atlas-download-format"> <title>Atlas download format</title> <para>In order to download RedBoot to the Atlas board, it must be converted to the Atlas download format. There are different ways of doing this depending on which version of the developer's kit is shipped with the board. </para> <para>The <citetitle>Atlas Developer's Kit</citetitle> CD contains an <computeroutput> srec2flash</computeroutput> utility. The source code for this utility is part of the <computeroutput>yamon/yamon-src-01.01.tar.gz</computeroutput> tarball on the Dev Kit CD. The path in the expanded tarball is <computeroutput>yamon/bin/tools </computeroutput>. To use <computeroutput>srec2flash</computeroutput> to convert the S-record file: <programlisting>% srec2flash -EL -S29 redboot.srec >redboot.dl </programlisting> The <citetitle>Atlas/Malta Developer's Kit</citetitle> CD contains an <computeroutput>srecconv.pl</computeroutput> utility which requires Perl. This utilty is part of the <computeroutput>yamon/yamon-src-02.00.tar.gz </computeroutput> tarball on the Dev Kit CD. The path in the expanded tarball is <computeroutput>yamon/bin/tools</computeroutput>. To use <computeroutput> srecconv</computeroutput> to convert the S-record file: <programlisting> % cp redboot_ROM.srec redboot_ROM.rec % srecconv.pl -ES L -A 29 redboot_ROM </programlisting> The resulting file is named redboot_ROM.fl.</para> </sect3></sect2> <sect2> <title>Flash management</title> <sect3 id="Atlas-Additional-fconfig-options"> <title>Additional config options</title> <para>The ethernet MAC address is stored in flash manually using the <command> fconfig</command> command. You can use the YAMON <computeroutput>setenv ethaddr</computeroutput> command to print out the board ethernet address. Typically, it is: <programlisting>00:0d:a0:00:xx:xx</programlisting> where xx.xx is the hex representation of the board serial number.</para> </sect3> <sect3> <title>Updating the secondary RedBoot image</title> <para>To update the secondary RedBoot images, follow the procedures detailed in <xref linkend="different-version-from-RAM">, but the actual numbers used with the flags in the sample commands should be: <programlisting>-f 0x9dc40000 -b 0x80020000 -r 0x80020000 -l 0x40000</programlisting></para> </sect3> <sect3> <title>Updating the primary RedBoot image</title> <para>To update the primary RedBoot images, follow the procedures detailed in <xref linkend="update-primary-image">, but the actual numbers used with the flags in the sample commands should be: <programlisting>-f 0x9dc00000 -b 0x80080000 -l 0x40000</programlisting></para> </sect3></sect2> <sect2> <title>Additional commands</title> <para>The <command>exec</command> command which allows the loading and execution of Linux kernels, is supported for this architecture (see <xref linkend="executing-programs">). The <command>exec</command> parameters used for MIPS boards are:</para> <variablelist><varlistentry> <term>-b <replaceable><addr></replaceable></term> <listitem><para>Location to store command line and environment passed to kernel</para></listitem></varlistentry> <varlistentry><term> -w <replaceable><time></replaceable></term> <listitem><para>Wait time in seconds before starting kernel</para></listitem></varlistentry> <varlistentry><term> -c <replaceable>"params"</replaceable></term> <listitem><para>Parameters passed to kernel</para></listitem></varlistentry> <varlistentry><term><replaceable><addr></replaceable></term> <listitem><para>Kernel entry point, defaulting to the entry point of the last image loaded</para></listitem></varlistentry> </variablelist> <para>Linux kernels on MIPS platforms expect the entry point to be called with arguments in the registers equivalent to a C call with prototype: <programlisting>void Linux(int argc, char **argv, char **envp);</programlisting></para> <para>RedBoot will place the appropriate data at the offset specified by the <parameter>-b</parameter> parameter, or by default at address 0x80080000, and will set the arguments accordingly when calling into the kernel.</para> <para> The default entry point, if no image with explicit entry point has been loaded and none is specified, is 0x80000750. </para> </sect2> <sect2> <title>Interrupts</title> <para>RedBoot uses an interrupt vector table which is located at address 0x80000400. Entries in this table are pointers to functions with this protoype: <programlisting> int irq_handler( unsigned vector, unsigned data )</programlisting>On an atlas board, the vector argument is one of 25 interrupts defined in <computeroutput> hal/mips/atlas/<replaceable>VERSION</replaceable>/include/plf_intr.h</computeroutput>: <programlisting> #define CYGNUM_HAL_INTERRUPT_SER 0 #define CYGNUM_HAL_INTERRUPT_TIM0 1 #define CYGNUM_HAL_INTERRUPT_2 2 #define CYGNUM_HAL_INTERRUPT_3 3 #define CYGNUM_HAL_INTERRUPT_RTC 4 #define CYGNUM_HAL_INTERRUPT_COREHI 5 #define CYGNUM_HAL_INTERRUPT_CORELO 6 #define CYGNUM_HAL_INTERRUPT_7 7 #define CYGNUM_HAL_INTERRUPT_PCIA 8 #define CYGNUM_HAL_INTERRUPT_PCIB 9 #define CYGNUM_HAL_INTERRUPT_PCIC 10 #define CYGNUM_HAL_INTERRUPT_PCID 11 #define CYGNUM_HAL_INTERRUPT_ENUM 12 #define CYGNUM_HAL_INTERRUPT_DEG 13 #define CYGNUM_HAL_INTERRUPT_ATXFAIL 14 #define CYGNUM_HAL_INTERRUPT_INTA 15 #define CYGNUM_HAL_INTERRUPT_INTB 16 #define CYGNUM_HAL_INTERRUPT_INTC 17 #define CYGNUM_HAL_INTERRUPT_INTD 18 #define CYGNUM_HAL_INTERRUPT_SERR 19 #define CYGNUM_HAL_INTERRUPT_HW1 20 #define CYGNUM_HAL_INTERRUPT_HW2 21 #define CYGNUM_HAL_INTERRUPT_HW3 22 #define CYGNUM_HAL_INTERRUPT_HW4 23 #define CYGNUM_HAL_INTERRUPT_HW5 24</programlisting>The data passed to the ISR is pulled from a data table (<computeroutput>hal_interrupt_data </computeroutput>) which immediately follows the interrupt vector table. With 25 interrupts, the data table starts at address 0x80000464 on atlas.</para> <para>An application may create a normal C function with the above prototype to be an ISR. Just poke its address into the table at the correct index and enable the interrupt at its source. The return value of the ISR is ignored by RedBoot. </para> </sect2> <sect2> <title>Memory Maps </title> <para>Memory Maps RedBoot sets up the following memory map on the Atlas board. <programlisting>Physical Address Range Description ----------------------- ------------- 0x00000000 - 0x07ffffff SDRAM 0x08000000 - 0x17ffffff PCI Memory Space 0x18000000 - 0x1bdfffff PCI I/O Space 0x1be00000 - 0x1bffffff System Controller 0x1c000000 - 0x1dffffff System flash 0x1e000000 - 0x1e3fffff Monitor flash 0x1f000000 - 0x1fbfffff FPGA</programlisting></para> </sect2> <sect2> <title>Resource Usage </title> <para>The flash based RedBoot image occupies flash addresses 0x1fc00000 - 0x1fc1ffff. RedBoot also reserves RAM (0x00000000 - 0x0001ffff) for RedBoot runtime uses. RAM based RedBoot configurations are designed to run from RAM at physical addresses 0x00020000 - 0x0003ffff. RAM physical addresses from 0x00040000 to the end of RAM are available for general use, such as a temporary scratchpad for downloaded images, before they are written to flash.</para> </sect2><sect2> <title>Rebuilding RedBoot</title> <para>The instructions in <xref linkend="Rebuilding-Redboot"> should be followed. The values for TARGET, ARCH_DIR and PLATFORM_DIR on this platform are “atlas_mips32_4kc” or “atlas_mips64_5kc”, “mips” and “atlas” respectively. Note that the configuration export files supplied in the <computeroutput> hal/mips/atlas/<replaceable>VERSION</replaceable>/misc</computeroutput> directory in the RedBoot source tree should be used.</para> </sect2> </sect1> <?Pub _newpage> <sect1 id="malta"> <title>MIPS Malta Board with CoreLV 4Kc and CoreLV 5Kc </title> <sect2> <title>Overview</title> <para><indexterm><primary>MIPS Malta Board with CoreLV 4KC and CoreLV 5KC </primary><secondary>installing and testing</secondary></indexterm><indexterm> <primary>installing and testing</primary><secondary>MIPS Malta Board with CoreLV 4KC and CoreLV 5KC</secondary></indexterm>RedBoot supports both front facing serial ports and the built in ethernet port for communication and downloads. The default serial port settings are 38400,8,N,1. RedBoot runs from and supports flash management for the system flash region. These configurations are supported: <itemizedlist> <listitem><para>RedBoot running from the system flash boot sector.</para> </listitem> <listitem><para>RedBoot running from RAM with RedBoot in the system flash boot sector.</para> </listitem> </itemizedlist></para> </sect2> <sect2> <title>Initial Installation</title> <para>RedBoot is installed using the code download facility built into the Malta board. See the Malta User manual for details, and also the Malta download format in <xref linkend="Malta-download-format">.</para> <sect3> <title>Quick download instructions</title> <para>Here are quick start instructions for downloading the prebuilt RedBoot image. </para> <orderedlist> <listitem><para>Locate the prebuilt files in the bin directory: <filename> deleteall.fl</filename> and <filename>redboot_ROM.fl</filename>. </para> </listitem> <listitem><para>Make sure switch S5-1 is ON. Reset the board and verify that the LED display reads <computeroutput>Flash DL</computeroutput>. </para> </listitem> <listitem><para>Make sure your parallel port is connected to the 1284 port Of the Atlas board. </para> </listitem> <listitem><para>Send the deleteall.fl file to the parallel port to erase previous images: <programlisting>% cat deleteall.fl >/dev/lp0</programlisting> When this is complete, the LED display should read <computeroutput>Deleted.</computeroutput></para> </listitem> <listitem><para>Send the RedBoot image to the board: <programlisting>% cat redboot_ROM.fl >/dev/lp0 </programlisting> When this is complete, the LED display should show the last address programmed. This will be something like: <computeroutput>1fc17000 </computeroutput>. </para> </listitem> <listitem><para>Change switch S5-1 to OFF and reset the board. The LED display should read “RedBoot”. </para> </listitem> <listitem><para>Run the RedBoot <userinput>fis init</userinput> and <userinput> fconfig</userinput> commands to initialize the flash. See <xref linkend="Flash-Image-System"> and <xref linkend="Persistent-State-Flash"> for details. </para> </listitem> </orderedlist> </sect3> <sect3 id="malta-download-format"> <title>Malta download format</title> <para>In order to download RedBoot to the Malta board, it must be converted to the Malta download format.</para> <para>The <citetitle>Atlas/Malta Developer's Kit</citetitle> CD contains an <computeroutput> srecconv.pl</computeroutput> utility which requires Perl. This utility is part of the <computeroutput>yamon/yamon-src-02.00.tar.gz</computeroutput> tarball on the Dev Kit CD. The path in the expanded tarball is <computeroutput>yamon/bin/tools </computeroutput>. To use <computeroutput>srecconv</computeroutput> to convert the S-record file: <programlisting>% cp redboot_ROM.srec redboot_ROM.rec % srecconv.pl -ES L -A 29 redboot_ROM </programlisting> The resulting file is named redboot_ROM.fl.</para> </sect3></sect2> <sect2> <title>Flash management</title> <sect3> <title>Updating the secondary RedBoot image</title> <para>To update the secondary RedBoot images, follow the procedures detailed in <xref linkend="different-version-from-RAM">, but the actual numbers used with the flags in the sample commands should be: <programlisting>-f 0xBE020000 -b 0x80020000 -r 0x80020000 -l 0x20000</programlisting></para> </sect3> <sect3> <title>Updating the primary RedBoot image</title> <para>To update the primary RedBoot images, follow the procedures detailed in <xref linkend="update-primary-image">, but the actual numbers used with the flags in the sample commands should be: <programlisting>-f 0xBE000000 -b 0x80080000 -l 0x20000</programlisting></para> </sect3></sect2> <sect2> <title>Additional commands</title> <para>The <command>exec</command> command which allows the loading and execution of Linux kernels, is supported for this architecture (see <xref linkend="executing-programs">). The <command>exec</command> parameters used for MIPS boards are:</para> <variablelist><varlistentry> <term>-b <replaceable><addr></replaceable></term> <listitem><para>Location to store command line and environment passed to kernel</para></listitem></varlistentry> <varlistentry><term> -w <replaceable><time></replaceable></term> <listitem><para>Wait time in seconds before starting kernel</para></listitem></varlistentry> <varlistentry><term> -c <replaceable>"params"</replaceable></term> <listitem><para>Parameters passed to kernel</para></listitem></varlistentry> <varlistentry><term><replaceable><addr></replaceable></term> <listitem><para>Kernel entry point, defaulting to the entry point of the last image loaded</para></listitem></varlistentry> </variablelist> <para>Linux kernels on MIPS platforms expect the entry point to be called with arguments in the registers equivalent to a C call with prototype: <programlisting>void Linux(int argc, char **argv, char **envp);</programlisting></para> <para>RedBoot will place the appropriate data at the offset specified by the <parameter>-b</parameter> parameter, or by default at address 0x80080000, and will set the arguments accordingly when calling into the kernel.</para> <para> The default entry point, if no image with explicit entry point has been loaded and none is specified, is 0x80000750. </para> </sect2> <sect2> <title>Interrupts</title> <para>RedBoot uses an interrupt vector table which is located at address 0x80000200. Entries in this table are pointers to functions with this protoype: <programlisting> int irq_handler( unsigned vector, unsigned data )</programlisting>On the malta board, the vector argument is one of 22 interrupts defined in <computeroutput> hal/mips/malta/<replaceable>VERSION</replaceable>/include/plf_intr.h</computeroutput>: <programlisting> #define CYGNUM_HAL_INTERRUPT_SOUTH_BRIDGE_INTR 0 #define CYGNUM_HAL_INTERRUPT_SOUTH_BRIDGE_SMI 1 #define CYGNUM_HAL_INTERRUPT_CBUS_UART 2 #define CYGNUM_HAL_INTERRUPT_COREHI 3 #define CYGNUM_HAL_INTERRUPT_CORELO 4 #define CYGNUM_HAL_INTERRUPT_COMPARE 5 #define CYGNUM_HAL_INTERRUPT_TIMER 6 #define CYGNUM_HAL_INTERRUPT_KEYBOARD 7 #define CYGNUM_HAL_INTERRUPT_CASCADE 8 #define CYGNUM_HAL_INTERRUPT_TTY1 9 #define CYGNUM_HAL_INTERRUPT_TTY0 10 #define CYGNUM_HAL_INTERRUPT_11 11 #define CYGNUM_HAL_INTERRUPT_FLOPPY 12 #define CYGNUM_HAL_INTERRUPT_PARALLEL 13 #define CYGNUM_HAL_INTERRUPT_REAL_TIME_CLOCK 14 #define CYGNUM_HAL_INTERRUPT_I2C 15 #define CYGNUM_HAL_INTERRUPT_PCI_AB 16 #define CYGNUM_HAL_INTERRUPT_PCI_CD 17 #define CYGNUM_HAL_INTERRUPT_MOUSE 18 #define CYGNUM_HAL_INTERRUPT_19 19 #define CYGNUM_HAL_INTERRUPT_IDE_PRIMARY 20 #define CYGNUM_HAL_INTERRUPT_IDE_SECONDARY 21</programlisting>The data passed to the ISR is pulled from a data table (<computeroutput>hal_interrupt_data </computeroutput>) which immediately follows the interrupt vector table. With 22 interrupts, the data table starts at address 0x80000258.</para> <para>An application may create a normal C function with the above prototype to be an ISR. Just poke its address into the table at the correct index and enable the interrupt at its source. The return value of the ISR is ignored by RedBoot. </para> </sect2> <sect2> <title>Memory Maps </title> <para>Memory Maps RedBoot sets up the following memory map on the Malta board.<note> <title>NOTE</title> <para>The virtual memory maps in this section use a C and B column to indicate whether or not the region is cached (C) or buffered (B).</para> </note><programlisting>Physical Address Range C B Description ----------------------- - - ----------- 0x80000000 - 0x81ffffff Y Y SDRAM 0x9e000000 - 0x9e3fffff Y N System flash (cached) 0x9fc00000 - 0x9fffffff Y N System flash (mirrored) 0xa8000000 - 0xb7ffffff N N PCI Memory Space 0xb4000000 - 0xb40fffff N N Galileo System Controller 0xb8000000 - 0xb80fffff N N Southbridge / ISA 0xb8100000 - 0xbbdfffff N N PCI I/O Space 0xbe000000 - 0xbe3fffff N N System flash (noncached) 0xbf000000 - 0xbfffffff N N Board logic FPGA</programlisting></para> </sect2> <sect2> <title>Resource Usage </title> <para>The flash based RedBoot image occupies flash addresses 0xbe000000 - 0xbe01ffff. RedBoot also reserves RAM (0x00000000 - 0x0001ffff) for RedBoot runtime uses. RAM based RedBoot configurations are designed to run from RAM at physical addresses 0x00020000 - 0x0004ffff. RAM physical addresses from 0x00050000 to the end of RAM are available for general use, such as a temporary scratchpad for downloaded images, before they are written to flash.</para> </sect2><sect2> <title>Rebuilding RedBoot</title> <para>The instructions in <xref linkend="Rebuilding-Redboot"> should be followed. The values for TARGET, ARCH_DIR and PLATFORM_DIR on this platform are “malta_mips32_4kc”, “mips” and “malta” respectively. Note that the configuration export files supplied in the <computeroutput> hal/mips/malta/<replaceable>VERSION</replaceable>/misc</computeroutput> directory in the RedBoot source tree should be used.</para> </sect2></sect1> <?Pub _newpage> <sect1 id="ocelot"> <title>PMC-Sierra MIPS RM7000 Ocelot</title> <sect2> <title>Overview</title> <para><indexterm><primary>PMC-Sierra MIPS RM7000 Ocelot</primary><secondary>installing and testing</secondary></indexterm><indexterm><primary>installing and testing </primary><secondary>PMC-Sierra MIPS RM7000 Ocelot</secondary></indexterm>RedBoot uses the front facing serial port. The default serial port settings are 38400,8,N,1. RedBoot also supports ethernet. Management of onboard flash is also supported. Two basic RedBoot configurations are supported:<itemizedlist> <listitem><para>RedBoot running from the board's flash boot sector.</para> </listitem> <listitem><para>RedBoot running from RAM with RedBoot in the flash boot sector. </para> </listitem> </itemizedlist></para> </sect2> <sect2> <title>Initial Installation Method </title> <para>Device programmer is used to program socketed flash parts.</para> </sect2> <sect2> <title>Flash Management</title> <sect3> <title>Updating the primary RedBoot image</title> <para>To update the primary RedBoot images, follow the procedures detailed in <xref linkend="update-primary-image">, loading the primary image into RAM at 0x80100000. The actual numbers used with the flags in the sample commands are then: <programlisting> -f 0xbfc00000 -b 0x80100000 -l 0x20000</programlisting></para> </sect3> <sect3> <title>Updating the secondary RedBoot image</title> <para>To update the secondary RedBoot images, follow the procedures detailed in <xref linkend="different-version-from-RAM">, but the actual numbers used with the flags in the sample commands should be: <programlisting> -f 0xbfc20000 -b 0x80020000 -r 0x80020000 -l 0x20000 </programlisting></para> </sect3></sect2> <sect2> <title>Additional commands</title> <para>The <command>exec</command> command which allows the loading and execution of Linux kernels, is supported for this architecture (see <xref linkend="executing-programs">). The <command>exec</command> parameters used for MIPS boards are:</para> <variablelist><varlistentry> <term>-b <replaceable><addr></replaceable></term> <listitem><para>Location to store command line and environment passed to kernel</para></listitem></varlistentry> <varlistentry><term> -w <replaceable><time></replaceable></term> <listitem><para>Wait time in seconds before starting kernel</para></listitem></varlistentry> <varlistentry><term> -c <replaceable>"params"</replaceable></term> <listitem><para>Parameters passed to kernel</para></listitem></varlistentry> <varlistentry><term><replaceable><addr></replaceable></term> <listitem><para>Kernel entry point, defaulting to the entry point of the last image loaded</para></listitem></varlistentry> </variablelist> <para>Linux kernels on MIPS platforms expect the entry point to be called with arguments in the registers equivalent to a C call with prototype: <programlisting>void Linux(int argc, char **argv, char **envp);</programlisting></para> <para>RedBoot will place the appropriate data at the offset specified by the <parameter>-b</parameter> parameter, or by default at address 0x80080000, and will set the arguments accordingly when calling into the kernel.</para> <para> The default entry point, if no image with explicit entry point has been loaded and none is specified, is 0x80000750. </para> </sect2> <sect2> <title>Memory Maps </title> <para>RedBoot sets up the following memory map on the Ocelot board. </para> <para>Note that these addresses are accessed through kseg0/1 and thus translate to the actual address range 0x80000000-0xbfffffff, depending on the need for caching/non-caching access to the bus.<note><title>NOTE</title> <para>The virtual memory maps in this section use a C and B column to indicate whether or not the region is cached (C) or buffered (B).</para> </note><programlisting>Physical Address Range Description ----------------------- ----------- 0x00000000 - 0x0fffffff SDRAM 0x10000000 - 0x10ffffff PCI I/O space 0x12000000 - 0x13ffffff PCI Memory space 0x14000000 - 0x1400ffff Galileo system controller 0x1c000000 - 0x1c0000ff PLD (board logic) 0x1fc00000 - 0x1fc7ffff flash</programlisting></para> </sect2> <sect2> <title>Resource Usage </title> <para>The flash based RedBoot image occupies flash addresses 0x1fc00000 - 0x1fc1ffff. RedBoot also reserves RAM (0x00000000 - 0x0001ffff) for RedBoot runtime uses. </para> <para>RAM based RedBoot configurations are designed to run from RAM at physical addresses 0x00020000 - 0x0003ffff. RAM physical addresses from 0x00040000 to the end of RAM are available for general use, such as a temporary scratchpad for downloaded images, before they are written to flash.</para> </sect2><sect2> <title>Rebuilding RedBoot</title> <para>The instructions in <xref linkend="Rebuilding-Redboot"> should be followed. The values for TARGET, ARCH_DIR and PLATFORM_DIR on this platform are “ocelot”, “mips” and “rm7000/ocelot” respectively. Note that the configuration export files supplied in the <computeroutput> hal/mips/rm7000/ocelot/<replaceable>VERSION</replaceable>/misc</computeroutput> directory in the RedBoot source tree should be used.</para> </sect2></sect1> <?Pub _newpage> <sect1 id="mbx"> <title>Motorola PowerPC MBX</title> <sect2> <title>Overview</title> <para><indexterm><primary>Motorola PowerPC MBX</primary><secondary>installing and testing</secondary></indexterm><indexterm><primary>installing and testing </primary><secondary>Motorola PowerPC MBX</secondary></indexterm>RedBoot uses the SMC1/COM1 serial port. The default serial port settings are 38400,8,N,1. Ethernet is also supported using the 10-base T connector. </para> <para>Management of onboard flash is also supported. Two basic RedBoot configurations are supported: <itemizedlist> <listitem><para>RedBoot running from RAM with RedBoot in the flash boot sector. </para> </listitem> <listitem><para>RedBoot running from the board's flash boot sector. </para> </listitem> </itemizedlist></para> </sect2> <sect2> <title>Initial Installation Method </title> <para>Device programmer is used to program the XU1 socketed flash part (AM29F040B) with the ROM version of RedBoot. - Use the on-board EPPC-Bug monitor to update RedBoot. </para> <para>This assumes that you have EPPC-Bug in the on-board flash. This can be determined by setting up the board according to the following instructions and powering up the board. </para> <para>The EPPC-Bug prompt should appear on the SMC1 connector at 9600 baud, 8N1. </para> <orderedlist> <listitem><para>Set jumper 3 to 2-3 [allow XU1 flash to be programmed] </para> </listitem> <listitem><para>Set jumper 4 to 2-3 [boot EPPC-Bug] </para> </listitem> </orderedlist> <para>If it is available, program the flash by following these steps: </para> <orderedlist> <listitem><para>Prepare EPPC-Bug for download: <programlisting>EPPC-Bug>lo 0 </programlisting>At this point the monitor is ready for input. It will not return the prompt until the file has been downloaded. </para> </listitem> <listitem><para>Use the terminal emulator's ASCII download feature (or a simple clipboard copy/paste operation) to download the redboot.ppcbug file.</para> <para>Note that on Linux, Minicom's ASCII download feature seems to be broken. A workaround is to load the file into emacs (or another editor) and copy the full contents to the clipboard. Then press the mouse paste-button (usually the middle one) over the Minicom window. </para> </listitem> <listitem><para>Program the flash with the downloaded data: <programlisting> EPPC-Bug>pflash 40000 60000 fc000000</programlisting></para> </listitem> <listitem><para>Switch off the power, and change jumper 4 to 1-2. Turn on the power again. The board should now boot using the newly programmed RedBoot. </para> </listitem> </orderedlist> <para>To install RedBoot on a target that already has eCos GDB stubs, download the RAM version of RedBoot and run it. Initialize the flash image directory: <programlisting> RedBoot> fi init</programlisting>Then download the ROM version of RedBoot and program it into flash: <programlisting> RedBoot> <userinput>load redboot_ROM.srec -b 0x80100000</userinput> RedBoot> <userinput>fi cr RedBoot -f 0xFE000000 -b 0x00040000 -l 0x20000</userinput> </programlisting></para> </sect2> <sect2> <title>Flash management</title> <sect3> <title>Updating the primary RedBoot image</title> <para>To update the primary RedBoot images, follow the procedures detailed in <xref linkend="update-primary-image">, but the actual numbers used with the flags in the sample commands should be: <programlisting>-f 0xfe000000 -b 0x50000 -l 0x20000</programlisting></para> </sect3> <sect3> <title>Updating the secondary RedBoot image</title> <para>To update the secondary RedBoot images, follow the procedures detailed in <xref linkend="different-version-from-RAM">, but the actual numbers used with the flags in the sample commands should be: <programlisting> -f 0xfe020000 -b 0x20000 -r 0x20000 -l 0x20000 </programlisting></para> </sect3></sect2> <sect2> <title>Special RedBoot Commands </title> <para>None.</para> </sect2> <sect2> <title>Memory Maps </title> <para>Memory Maps RedBoot sets up the following memory map on the MBX board.<programlisting> Physical Address Range Description ----------------------- ----------- 0x00000000 - 0x003fffff DRAM 0xfa100000 - 0xfa100003 LEDs 0xfe000000 - 0xfe07ffff flash (AMD29F040B) 0xff000000 - 0xff0fffff MPC registers</programlisting></para> </sect2> <sect2> <title>Resource Usage </title> <para>The flash based RedBoot image occupies flash addresses 0xfe000000 - 0xfe01ffff. RedBoot also reserves RAM (0x00000000 - 0x0001ffff) for RedBoot runtime uses. RAM based RedBoot configurations are designed to run from RAM at physical addresses 0x00020000 - 0x0004ffff. RAM physical addresses from 0x00050000 to the end of RAM are available for general use, such as a temporary scratchpad for downloaded images, before they are written to flash.</para> </sect2> <sect2> <title>Rebuilding RedBoot</title> <para>The instructions in <xref linkend="Rebuilding-Redboot"> should be followed. The values for TARGET, ARCH_DIR and PLATFORM_DIR on this platform are “mbx”, “powerpc” and “mbx” respectively. Note that the configuration export files supplied in the <computeroutput> hal/powerpc/mbx/<replaceable>VERSION</replaceable>/misc</computeroutput> directory in the RedBoot source tree should be used.</para> </sect2> </sect1> <?Pub _newpage> <sect1 id="viper"> <title>Analogue & Micro PowerPC 860T</title> <sect2> <title>Overview</title> <para><indexterm><primary>Analogue & Micro PowerPC 860T</primary><secondary>installing and testing</secondary></indexterm><indexterm><primary>installing and testing </primary><secondary>Analogue & Micro PowerPC 860T</secondary></indexterm>RedBoot uses the SMC1 serial port. The default serial port settings are 38400,8,N,1. Ethernet is also supported using the RJ-45 connector. </para> <para>Management of onboard flash is also supported. A single RedBoot configuration is supported: <itemizedlist> <listitem><para>RedBoot running from RAM using an image copied from the flash boot sector (ROMRAM mode). </para> </listitem> </itemizedlist></para> </sect2> <sect2> <title>Initial Installation Method </title> <para>RedBoot must be installed at the A & M factory. </para> </sect2> <sect2> <title>Flash management</title> <sect3> <title>Updating the primary RedBoot image</title> <para>To update the primary RedBoot images, follow the procedures detailed in <xref linkend="update-primary-image">, but the actual numbers used with the flags in the sample commands should be: <programlisting> -f 0xfe000000 -b 0x50000 -l 0x30000 </programlisting></para> </sect3> </sect2> <sect2> <title>Special RedBoot Commands </title> <para>None.</para> </sect2> <sect2> <title>Memory Maps </title> <para>Memory Maps RedBoot sets up the following memory map on the MBX board.<programlisting> Physical Address Range Description ----------------------- ----------- 0x00000000 - 0x007fffff DRAM 0xfe000000 - 0xfe0fffff flash (AMD29LV8008B) 0xff000000 - 0xff0fffff MPC registers</programlisting></para> </sect2> <sect2> <title>Resource Usage </title> <para>The flash based RedBoot image occupies flash addresses 0xfe000000 - 0xfe02ffff. RedBoot also reserves RAM (0x00000000 - 0x0003ffff) for RedBoot runtime uses. RAM physical addresses from 0x00040000 to the end of RAM are available for general use, such as a temporary scratchpad for downloaded images, before they are written to flash.</para> </sect2> <sect2> <title>Rebuilding RedBoot</title> <para>The instructions in <xref linkend="Rebuilding-Redboot"> should be followed. The values for TARGET, ARCH_DIR and PLATFORM_DIR on this platform are “viper”, “powerpc” and “viper” respectively. Note that the configuration export files supplied in the <computeroutput> hal/powerpc/viper/<replaceable>VERSION</replaceable>/misc</computeroutput> directory in the RedBoot source tree should be used.</para> </sect2> </sect1> <?Pub _newpage> <sect1 id="e7t"> <title>ARM Evaluator7T (e7t) board with ARM7TDMI</title> <sect2> <title>Overview</title> <para><indexterm><primary>ARM Evaluator7T</primary><secondary>installing and testing</secondary></indexterm><indexterm><primary>installing and testing </primary><secondary>ARM Evaluator7T</secondary></indexterm>RedBoot supports both serial ports for communication and downloads. The default serial port settings are 38400,8,N,1.</para> </sect2> <sect2> <title>Initial Installation</title> <para>RedBoot is installed using the on-board boot environment. See the user manual for full details.</para> </sect2> <sect2> <title>Quick download instructions</title> <para>Here are quick start instructions for downloading the prebuilt Redboot image:</para> <itemizedlist> <listitem><para>Boot the board and press ENTER:</para> <screen> ARM Evaluator7T Boot Monitor PreRelease 1.00 Press ENTER within 2 seconds to stop autoboot Boot: </screen> </listitem> <listitem><para>Erase the part of the flash where RedBoot will get programmed: </para> <screen> Boot: <userinput>flasherase 01820000 10000</userinput></screen> </listitem> <listitem><para>Prepare to download the UU-encoded version of the RedBoot image:</para> <screen> Boot: <userinput>download 10000</userinput> Ready to download. Use 'transmit' option on terminal emulator to download file. </screen> </listitem> <listitem><para>Either use ASCII transmit option in the terminal emulator, or on Linux, simply cat the file to the serial port:<screen> $ <userinput> cat redboot.UU > /dev/ttyS0</userinput></screen>When complete, you should see:<screen> Loaded file redboot.bin at address 000100000, size = 41960 Boot:</screen></para> </listitem> <listitem><para>Program the flash:<screen> Boot: <userinput>flashwrite 01820000 10000 10000 </userinput></screen></para> </listitem> <listitem><para>And verify that the module is available:<screen> Boot: <userinput> rommodules</userinput> Header Base Limit 018057c8 01800000 018059e7 BootStrapLoader v1.0 Apr 27 2000 10:33:58 01828f24 01820000 0182a3e8 RedBoot Apr 5 2001</screen></para> </listitem> <listitem><para>Reboot the board and you should see the RedBoot banner.</para> </listitem> </itemizedlist> </sect2> <sect2> <title>Special RedBoot Commands </title> <para>None.</para> </sect2> <sect2> <title>Memory Maps </title> <para>RedBoot sets up the following memory map on the E7T board. <note><title> NOTE</title> <para>The virtual memory maps in this section use a C and B column to indicate whether or not the region is cached (C) or buffered (B).</para> </note> <programlisting>Physical Address Range C B Description ----------------------- - - ----------- 0x00000000 - 0x0007ffff Y N SDRAM 0x03ff0000 - 0x03ffffff N N Microcontroller registers 0x01820000 - 0x0187ffff N N System flash (mirrored)</programlisting></para> </sect2> <sect2> <title>Resource Usage </title> <para>The flash based RedBoot image occupies flash addresses 0x0182000 - 0x0182ffff. </para> <para>RedBoot also reserves RAM (0x00000000 - 0x0000ffff) for RedBoot runtime uses. </para> <para>RAM physical addresses from 0x00010000 to the end of RAM are available for general use.</para> </sect2><sect2> <title>Rebuilding RedBoot</title> <para>The instructions in <xref linkend="Rebuilding-Redboot"> should be followed. The values for TARGET, ARCH_DIR and PLATFORM_DIR on this platform are “e7t”, “arm” and “e7t” respectively. Note that the configuration export files supplied in the <computeroutput> hal/arm/e7t/<replaceable>VERSION</replaceable>/misc</computeroutput> directory in the RedBoot source tree should be used.</para> </sect2> </sect1> <?Pub _newpage> <sect1 id="integrator"> <title>ARM Integrator board with ARM7TDMI or ARM966E</title> <sect2> <title>Overview</title> <para><indexterm><primary>ARM Integrator</primary><secondary>installing and testing</secondary></indexterm><indexterm><primary>installing and testing </primary><secondary>ARM Integrator</secondary></indexterm>RedBoot supports both serial ports for communication and downloads. The default serial port settings are 38400,8,N,1.</para> </sect2> <sect2> <title>Initial Installation</title> <para>RedBoot is installed using the on-board bootPROM environment. See the user manual for full details.</para> </sect2> <sect2> <title>Quick download instructions</title> <para>Here are quick start instructions for downloading the prebuilt Redboot image:</para> <itemizedlist> <listitem><para>Set DIP switch S1[1] to the ON position and reset or power the board up. You will see the bootPROM startup message on serial port A (J14):</para> <screen> Initialising... ARM bootPROM [Version 1.3] Rebuilt on Jun 26 2001 at 22:04:10 Running on a Integrator Evaluation Board Board Revision V1.0, ARM966E-S Processor Memory Size is 16MBytes, Flash Size is 32MBytes Copyright (c) ARM Limited 1999 - 2001. All rights reserved. Board designed by ARM Limited Hardware support provided at http://www.arm.com/ For help on the available commands type ? or h boot Monitor > </screen> </listitem> <listitem> <para>Issue the FLASH ROM load command: </para> <screen> boot Monitor > <userinput>L</userinput> Load Motorola S-Records into flash Deleting Image 0 The S-Record loader only accepts input on the serial port. Type Ctrl/C to exit loader. </screen> </listitem> <listitem><para>Either use the ASCII transmit option in the terminal emulator, or on Linux, simply cat the file to the serial port: </para> <screen> $ <userinput>cat redboot.srec > /dev/ttyS0</userinput> </screen> <para> When complete, type Ctrl-C and you should see something similar to: </para> <screen> ................................ ................................ .................... Downloaded 5,394 records in 81 seconds. Overwritten block/s 0 boot Monitor > </screen> </listitem> <listitem><para>Set DIP switch S1[1] to the OFF position and reboot the board and you should see the RedBoot banner.</para> </listitem> </itemizedlist> </sect2> <sect2> <title>Special RedBoot Commands </title> <para>None.</para> </sect2> <sect2> <title>Memory Maps </title> <para>RedBoot sets up the following memory map on the Integrator board. <note><title> NOTE</title> <para>The virtual memory maps in this section use a C and B column to indicate whether or not the region is cached (C) or buffered (B).</para> </note> <programlisting> ARM7TDMI -------- Physical Address Range C B Description ----------------------- - - ----------- 0x00000000 - 0x0007ffff N N SSRAM 0x00080000 - 0x0fffffff N N SDRAM (depends on part fitted) 0x10000000 - 0x1fffffff N N System control and peripheral registers 0x20000000 - 0x23ffffff N N Boot ROM (contains boot Monitor) 0x24000000 - 0x27ffffff N N FLASH ROM (contains RedBoot) 0x28000000 - 0x2bffffff N N SSRAM echo area 0x40000000 - 0x5fffffff N N PCI Memory access windows 0x60000000 - 0x60ffffff N N PCI IO access window 0x61000000 - 0x61ffffff N N PCI config space window 0x62000000 - 0x6200ffff N N PCI bridge register window 0x80000000 - 0x8fffffff N N SDRAM echo area (used for PCI accesses) ARM966E ------- Physical Address Range C B Description ----------------------- - - ----------- 0x00000000 - 0x000fffff N N SSRAM 0x00100000 - 0x0fffffff N N SDRAM (depends on part fitted) 0x10000000 - 0x1fffffff N N System control and peripheral registers 0x20000000 - 0x23ffffff N N Boot ROM (contains boot Monitor) 0x24000000 - 0x27ffffff N N FLASH ROM (contains RedBoot) 0x28000000 - 0x2bffffff N N SSRAM echo area 0x40000000 - 0x5fffffff N N PCI Memory access windows 0x60000000 - 0x60ffffff N N PCI IO access window 0x61000000 - 0x61ffffff N N PCI config space window 0x62000000 - 0x6200ffff N N PCI bridge register window 0x80000000 - 0x8fffffff N N SDRAM echo area (used for PCI accesses) </programlisting> </para> </sect2> <sect2> <title>Resource Usage </title> <para> The flash based RedBoot image occupies flash addresses 0x24000000 - 0x2401ffff. </para> <para> RedBoot also reserves RAM (0x00000000 - 0x0003ffff) for RedBoot runtime uses. If ethernet support is included, then the address range 0x00f00000 to 0x00ffffff are reserved for use by the driver. This may be moved using the MLT. </para> <para>RAM physical addresses from 0x00040000 to 0x00efffff and from 0x00100000 to the end of SDRAM are available for general use.</para> </sect2><sect2> <title>Rebuilding RedBoot</title> <para>The instructions in <xref linkend="Rebuilding-Redboot"> should be followed. The values for TARGET, ARCH_DIR and PLATFORM_DIR on this platform are “integrator” or “integrator_arm9”, “arm” and “integrator” respectively. Note that the configuration export files supplied in the <computeroutput> hal/arm/integrator/<replaceable>VERSION</replaceable>/misc</computeroutput> directory in the RedBoot source tree should be used.</para> </sect2> </sect1> <?Pub _newpage> <sect1 id="pid"> <title>ARM ARM7 PID, Dev7 and Dev9</title> <sect2> <title>Overview</title> <para><indexterm><primary>ARM ARM7 PID, Dev7 and Dev9</primary><secondary> installing and testing</secondary></indexterm><indexterm><primary>installing and testing</primary><secondary>ARM ARM7 PID, Dev7 and Dev9</secondary></indexterm>RedBoot uses either of the serial ports. The default serial port settings are 38400,8,N,1. Management of onboard flash is also supported. Two basic RedBoot configurations are supported: <itemizedlist> <listitem><para>RedBoot running from the board's flash boot sector.</para> </listitem> <listitem><para>RedBoot running from RAM with RedBoot in the flash boot sector. </para> </listitem> </itemizedlist></para> </sect2> <sect2> <title>Initial Installation Method </title> <para>Device programmer is used to program socketed flash parts with ROM version of RedBoot. </para> <para>Alternatively, to install RedBoot on a target that already has eCos GDB stubs, download the RAM version of RedBoot and run it. Initialize the flash image directory: <command>fi init</command> Then download the ROM version of RedBoot and program it into flash: <programlisting> RedBoot> <userinput>load -b 0x00040000 -m ymodem</userinput> RedBoot> <userinput>fi cr RedBoot -f 0x04000000 -b 0x00040000 -l 0x20000</userinput> </programlisting></para> </sect2> <sect2> <title>Special RedBoot Commands </title> <para>None.</para> </sect2> <sect2> <title>Memory Maps </title> <para>RedBoot sets up the following memory map on the PID board. <programlisting> Physical Address Range Description ----------------------- ----------- 0x00000000 - 0x0007ffff DRAM 0x04000000 - 0x04080000 flash 0x08000000 - 0x09ffffff ASB Expansion 0x0a000000 - 0x0bffffff APB Reference Peripheral 0x0c000000 - 0x0fffffff NISA Serial, Parallel and PC Card ports </programlisting></para> </sect2> <sect2> <title>Resource Usage </title> <para>The flash based RedBoot image occupies flash addresses 0x04000000 - 0x0401ffff. </para> <para>RedBoot also reserves RAM (0x00000000 - 0x00007fff) for RedBoot runtime uses. </para> <para>RAM based RedBoot configurations are designed to run from RAM at physical addresses 0x00008000 - 0x0003ffff. RAM physical addresses from 0x00040000 to the end of RAM are available for general use, such as a temporary scratchpad for downloaded images, before they are written to flash.</para> </sect2><sect2> <title>Rebuilding RedBoot</title> <para>The instructions in <xref linkend="Rebuilding-Redboot"> should be followed. The values for TARGET, ARCH_DIR and PLATFORM_DIR on this platform are “pid”, “arm” and “pid” respectively. Note that the configuration export files supplied in the <computeroutput> hal/arm/pid/<replaceable>VERSION</replaceable>/misc</computeroutput> directory in the RedBoot source tree should be used.</para> </sect2></sect1> <?Pub _newpage> <sect1 id="ipaq"> <title>Compaq iPAQ PocketPC</title> <indexterm><primary>Compaq iPAQ PocketPC</primary><secondary>installing and testing</secondary></indexterm><indexterm><primary>installing and testing </primary><secondary>Compaq iPAQ PocketPC</secondary></indexterm> <sect2> <title>Overview</title> <para>RedBoot supports the serial port via cradle or cable, and Compact Flash ethernet cards if fitted for communication and downloads. The LCD touchscreen may also be used for the console, although by default RedBoot will switch exclusively to one channel once input arrives. </para> <para>The default serial port settings are 38400,8,N,1. RedBoot runs from and supports flash management for the system flash region. </para> </sect2> <sect2> <title>Initial Installation</title> <para>Prebuilt images for the OSloader, redboot_ROM.bin and redboot_WinCE.bin images mentioned in the instructions below are provided. </para> <sect3> <title>Installing RedBoot on the iPAQ using Windows/CE</title> <para> The Windows/CE environment originally shipped with the iPAQ contains a hidden mini-loader, sometimes referred to as the "Parrot" loader. This loader can be started by holding down the action button (the joypad) while resetting the unit or when powering on. At this point, a blue bird will appear on the LCD screen. Also at this point, a simple loader can be accessed over the serial port at 115200/8N1. Using this loader, the contents of the iPAQ flash memory can be saved to a Compact Flash memory card. <note><title>NOTE</title><para>We have only tested this operation with a 32Mbyte CF memory card. Given that the backup will take 16MBytes + 1KByte, something more than a 16MByte card will be required.</para></note> </para> <para> Use the "r2c" command to dump Flash contents to the CF memory card. Once this completes, RedBoot can be installed with no fear since the Parrot loader can be used to restore the Flash contents at a later time. </para> <para> If you expect to completely recover the state of the iPAQ Win/CE environment, then HotSync should be run to backup all "RAM" files as well before installing RedBoot. </para> <para>The next step in installing RedBoot on the iPAQ actually involves Windows/CE, which is the native environment on the unit. Using WinCE, you need to install an application which will run a RAM based version of RedBoot. Once this is installed and running, RedBoot can be used to update the flash with a native/ROM version of RedBoot. <itemizedlist> <listitem><para>Using ActiveSync, copy the file OSloader to your iPAQ. </para> </listitem> <listitem><para>Using ActiveSync, copy the file redboot_WinCE.bin to the iPAQ as bootldr in its root directory. Note: this is not the top level folder displayed by Windows (Mobile Device), but rather the 'My Pocket PC' folder within it.</para> </listitem> <listitem><para>Execute OSloader. If you didn't create a shortcut, then you will have to poke around for it using the WinCE file explorer.</para> </listitem> <listitem><para>Choose the <guimenuitem>Tools->BootLdr->Run after loading from file</guimenuitem> menu item. </para> </listitem> </itemizedlist>At this point, the RAM based version of RedBoot should be running. You should be able to return to this point by just executing the last two steps of the previous process if necessary.</para> </sect3> <sect3> <title>Installing RedBoot on the iPAQ - using the Compaq boot loader</title> <para>This method of installation is no longer supported. If you have previously installed either the Compaq boot loader or older versions of RedBoot, restore the Win/CE environment and proceed as outlined above. </para> </sect3> <sect3 id="setting-up-and-testing-redboot"> <title>Setting up and testing RedBoot</title> <para>When RedBoot first comes up, it will want to initialize its LCD touch screen parameters. It does this by displaying a keyboard graphic and asks you to press certain keys. Using the stylus, press and hold until the prompt is withdrawn. When you lift the stylus, RedBoot will continue with the next calibration. </para> <para>Once the LCD touchscreen has been calibrated, RedBoot will start. The calibration step can be skipped by pressing the <guibutton>return/abort</guibutton> button on the unit (right most button with a curved arrow icon). Additionally, the unit will assume default values if the screen is not touched within about 15 seconds. </para> <para>Once RedBoot has started, you should get information similar to this on the LCD screen. It will also appear on the serial port at 38400,8,N,1. <programlisting>RedBoot(tm) bootstrap and debug environment [ROM] Red Hat certified release, version R1.xx - built 06:17:41, Mar 19 2001 Platform: Compaq iPAQ Pocket PC (StrongARM 1110) Copyright (C) 2000, 2001, Red Hat, Inc. RAM: 0x00000000-0x01fc0000, 0x0001f200-0x01f70000 available FLASH: 0x50000000 - 0x51000000, 64 blocks of 0x00040000 bytes each.</programlisting>Since the LCD touchscreen is only 30 characters wide, some of this data will be off the right hand side of the display. The joypad may be used to pan left and right in order to see the full lines. </para> <para>If you have a Compact Flash ethernet card, RedBoot should find it. You'll need to have BOOTP enabled for this unit (see your sysadmin for details). If it does, it will print a message like: <programlisting>... Waiting for network card: .Ready! Socket Communications Inc: CF+ LPE Revision E 08/04/99 IP: 192.168.1.34, Default server: 192.168.1.101</programlisting></para> </sect3> <sect3 id="ipaq-install-rb-permanently"> <title>Installing RedBoot permanently</title> <para>Once you are satisfied with the setup and that RedBoot is operating properly in your environment, you can set up your iPAQ unit to have RedBoot be the bootstrap application. <caution><title>CAUTION</title> <para>This step will destroy your Windows/CE environment.</para> <para>Before you take this step, it is strongly recommended you save your WinCE FLASH contents as outlined above using the "parrot" loader, or by using the Compaq OSloader: <itemizedlist> <listitem><para>Using OSloader on the iPAQ, select the <guimenuitem>Tools->Flash->Save to files...</guimenuitem>. menu item.</para> </listitem> <listitem><para>Four (4) files, 4MB each in size will be created.</para> </listitem> <listitem><para>After each file is created, copy the file to your computer, then delete the file from the iPAQ to make room in the WinCE ramdisk for the next file.</para> </listitem> </itemizedlist></para> </caution>You will need to download the version of RedBoot designed as the ROM bootstrap. Then install it permanently using these commands: <programlisting> RedBoot> <userinput>lo -r -b 0x100000 /tftpboot/redboot_ROM.bin</userinput> RedBoot> <userinput>fi loc -f 0x50000000 -l 0x40000</userinput> RedBoot> <userinput>fis init</userinput> RedBoot> <userinput>fi unl -f 0x50040000 -l 0x40000</userinput> RedBoot> <userinput>fi cr RedBoot -b 0x100000</userinput> RedBoot> <userinput>fi loc -f 0x50040000 -l 0x40000</userinput> RedBoot> <userinput>reset</userinput> </programlisting> <warning><title>WARNING</title> <para>You must type these commands exactly! Failure to do so may render your iPAQ totally useless. Once you've done this, RedBoot should come up every time you reset.</para> </warning></para> </sect3> <sect3> <title>Restoring Windows/CE</title> <para>To restore Windows/CE from the backup taken in <xref linkend="ipaq-install-rb-permanently">, visit <ulink url="http://www.handhelds.org/projects/wincerestoration.html">http://www.handhelds.org/projects/wincerestoration.html</ulink> for directions. </para> </sect3></sect2> <sect2> <title>Flash Management</title> <sect3> <title>Updating the secondary RedBoot image</title> <para>To update the secondary RedBoot images, follow the procedures detailed in <xref linkend="different-version-from-RAM">, relying on default location and size of the image. It is also possible to explicitly specify the options - the appropriate options for the iPAQ are: <programlisting>-f 0x50080000 -b 0x00020000 -r 0x00020000 -e 0x00020040 -l 0x40000</programlisting>When updating the image, the flash should be unlocked before programming, and relocked afterwards. This is done with the commands: <programlisting>fis unlock -f 0x50080000 -l 0x40000</programlisting>and<programlisting> fis lock -f 0x50080000 -l 0x40000</programlisting></para> </sect3> <sect3> <title>Updating the primary RedBoot image</title> <para>To update the primary RedBoot images, follow the procedures detailed in <xref linkend="update-primary-image">, relying on default location and size of the image. It is also possible to explicitly specify the options - the appropriate options for the iPAQ are: <programlisting>-f 0x50040000 -b 0x00100000 -l 0x40000</programlisting> When updating the image, the flash should be unlocked before programming, and relocked afterwards. This is done with the commands: <programlisting>fis unlock -f 0x50040000 -l 0x40000</programlisting>and<programlisting> fis lock -f 0x50040000 -l 0x40000</programlisting></para> </sect3></sect2> <sect2> <title>Additional commands</title> <para>The <command>exec</command> command which allows the loading and execution of Linux kernels, is supported for this board (see <xref linkend="executing-programs">). The <command> exec</command> parameters used for the iPAQ are:</para> <variablelist><varlistentry> <term>-b <replaceable><addr></replaceable></term> <listitem><para>Location Linux kernel was loaded to</para></listitem></varlistentry> <varlistentry><term> -l <replaceable><len></replaceable></term> <listitem><para>Length of kernel</para></listitem></varlistentry> <varlistentry><term> -c <replaceable>"params"</replaceable></term> <listitem><para>Parameters passed to kernel</para></listitem></varlistentry> <varlistentry><term>-r <replaceable><addr></replaceable></term> <listitem><para>'initrd' ramdisk location</para></listitem></varlistentry> <varlistentry><term>-s <replaceable><len></replaceable></term> <listitem><para>Length of initrd ramdisk</para></listitem></varlistentry> </variablelist> <para>Linux kernels may be run on the iPAQ using the sources from the anonymous CVS repository at the Handhelds project (<ulink url="http://www.handhelds.org/"> http://www.handhelds.org/</ulink>) with the <filename>elinux.patch</filename> patch file applied. This file can be found in the <filename>misc/</filename> subdirectory of the iPAQ platform HAL in the RedBoot sources, normally <filename>hal/arm/sa11x0/ipaq/<replaceable>VERSION</replaceable>/misc/</filename> </para> <para> On the iPAQ (and indeed all SA11x0 platforms), Linux expects to be loaded at address 0xC0008000 and the entry point is also at 0xC0008000. </para> </sect2> <sect2> <title>Memory Maps</title> <para>RedBoot sets up the following memory map on the iPAQ: The first level page table is located at physical address 0xC0004000. No second level tables are used. <note><title>NOTE</title> <para>The virtual memory maps in this section use a C and B column to indicate whether or not the region is cached (C) or buffered (B).</para> </note> <programlisting>Physical Address Range Description ----------------------- ---------------------------------- 0x00000000 - 0x01ffffff 16Mb to 32Mb FLASH (nCS0) [organized as below] 0x000000 - 0x0003ffff Parrot Loader 0x040000 - 0x0007ffff RedBoot 0xf80000 - 0x00fbffff Fconfig data 0xfc0000 - 0x00ffffff FIS directory 0x30000000 - 0x3fffffff Compact Flash 0x48000000 - 0x4bffffff iPAQ internal registers 0x80000000 - 0xbfffffff SA-1110 Internal Registers 0xc0000000 - 0xc1ffffff DRAM Bank 0 - 32Mb SDRAM 0xe0000000 - 0xe7ffffff Cache Clean Virtual Address Range C B Description ----------------------- - - ---------------------------------- 0x00000000 - 0x01ffffff Y Y DRAM - 32Mb 0x30000000 - 0x3fffffff N N Compact Flash 0x48000000 - 0x4bffffff N N iPAQ internal registers 0x50000000 - 0x51ffffff Y Y Up to 32Mb FLASH (nCS0) 0x80000000 - 0xbfffffff N N SA-1110 Internal Registers 0xc0000000 - 0xc1ffffff N Y DRAM Bank 0: 32Mb 0xe0000000 - 0xe7ffffff Y Y Cache Clean </programlisting> </para> </sect2> <sect2> <title>Resource Usage</title> <para>The flash based RedBoot image occupies flash addresses 0x50040000 - 0x5007ffff. RedBoot also reserves RAM (0x00000000 - 0x0001ffff) for RedBoot runtime uses. RAM based RedBoot configurations are designed to run from RAM at virtual addresses 0x00020000 - 0x0005ffff. RAM virtual addresses from 0x00060000 to the end of RAM are available for general use, such as a temporary scratchpad for downloaded images, before they are written to flash. An exception is RAM from 0x01F70000 - 0x01FFFFFF which is reserved for use by the LCD display.</para> </sect2> <sect2> <title>Rebuilding RedBoot</title> <para>The instructions in <xref linkend="Rebuilding-Redboot"> should be followed. The values for TARGET, ARCH_DIR and PLATFORM_DIR on this platform are “ipaq”, “arm” and “sa11x0/ipaq” respectively. Note that the configuration export files supplied in the <computeroutput> hal/arm/sa11x0/ipaq/<replaceable>VERSION</replaceable>/misc</computeroutput> directory in the RedBoot source tree should be used.</para> </sect2></sect1> <?Pub _newpage> <sect1 id="cerfcube"> <title>Intrinsyc CerfCube</title> <indexterm><primary>Intrinsyc CerfCube</primary><secondary>installing and testing</secondary></indexterm><indexterm><primary>installing and testing </primary><secondary>Intrinsyc CerfCube</secondary></indexterm> <sect2> <title>Overview</title> <para>RedBoot supports the serial port and the builtin ethernet connection for communication and downloads. </para> <para>The default serial port settings are 38400,8,N,1. RedBoot runs from and supports flash management for the system flash region. </para> </sect2> <sect2> <title>Initial Installation</title> <para>Prebuilt images for redboot_ROM.bin mentioned in the instructions below are provided. </para> <sect3> <title>Installing RedBoot on the CerfCube using the Intrinsyc loader</title> <para> The original boot loader supplied with the CerfCube can be used to install RedBoot. Connect to the device using a serial port at 38400/8N1. Copy the redboot_ROM.bin image to an available TFTP server. Issue these commands to the Instrinsyc loader. <programlisting> download tftp:xxx.x.x.xx redboot_ROM.bin 0xc0000000 flashloader 0x00000000 0xc0000000 0x20000 </programlisting> where xxx.x.x.xx is the IP address of the TFTP server. <note> <title>NOTE</title> <para> Other installation methods may be available via the Intrinsyc loader. Contact Intrinsyc for details. </para> </note> </para> </sect3> <sect3 id="setting-up-and-testing-cerfcube-redboot"> <title>Setting up and testing RedBoot</title> <para>Once RedBoot has started, you should get information similar to this on the serial port at 38400,8,N,1. <programlisting>RedBoot(tm) bootstrap and debug environment [ROM] Red Hat certified release, version R1.xx - built 06:17:41, Mar 19 2001 Platform: Intrinsyc CerfCube (StrongARM 1110) Copyright (C) 2000, 2001, 2002, Red Hat, Inc. RAM: 0x00000000-0x02000000, 0x00012708-0x01fd1000 available FLASH: 0x50000000 - 0x51000000, 128 blocks of 0x00020000 bytes each. </programlisting> </para> </sect3> </sect2> <sect2> <title>Flash Management</title> <sect3> <title>Updating the primary RedBoot image</title> <para>To update the primary RedBoot images, follow the procedures detailed in <xref linkend="update-primary-image">, relying on default location and size of the image. It is also possible to explicitly specify the options - the appropriate options for the CerfCube are: <programlisting>-f 0x50000000 -b 0x00100000 -l 0x40000</programlisting> When updating the image, the flash should be unlocked before programming, and relocked afterwards. This is done with the commands: <programlisting>fis unlock -f 0x50000000 -l 0x20000</programlisting>and<programlisting> fis lock -f 0x50000000 -l 0x20000</programlisting></para> </sect3></sect2> <sect2> <title>Additional commands</title> <para>The <command>exec</command> command which allows the loading and execution of Linux kernels, is supported for this board (see <xref linkend="executing-programs">). The <command> exec</command> parameters used for the CerfCube are:</para> <variablelist><varlistentry> <term>-b <replaceable><addr></replaceable></term> <listitem><para>Location Linux kernel was loaded to</para></listitem></varlistentry> <varlistentry><term> -l <replaceable><len></replaceable></term> <listitem><para>Length of kernel</para></listitem></varlistentry> <varlistentry><term> -c <replaceable>"params"</replaceable></term> <listitem><para>Parameters passed to kernel</para></listitem></varlistentry> <varlistentry><term>-r <replaceable><addr></replaceable></term> <listitem><para>'initrd' ramdisk location</para></listitem></varlistentry> <varlistentry><term>-s <replaceable><len></replaceable></term> <listitem><para>Length of initrd ramdisk</para></listitem></varlistentry> </variablelist> </sect2> <sect2> <title>Memory Maps</title> <para>RedBoot sets up the following memory map on the CerfCube: The first level page table is located at physical address 0xC0004000. No second level tables are used. <note><title>NOTE</title> <para>The virtual memory maps in this section use a C and B column to indicate whether or not the region is cached (C) or buffered (B).</para> </note> <programlisting>Physical Address Range Description ----------------------- ---------------------------------- 0x00000000 - 0x01ffffff 16Mb to 32Mb FLASH (nCS0) [organized as below] 0x000000 - 0x0001ffff RedBoot 0x020000 - 0x0003ffff RedBoot [RAM version] 0xfc0000 - 0x00fdffff Fconfig data 0xfe0000 - 0x00ffffff FIS directory 0x0f000000 - 0x0fffffff Onboard ethernet 0x10000000 - 0x17ffffff CerfCube internal registers 0x20000000 - 0x3fffffff PCMCIA / Compact Flash 0x80000000 - 0xbfffffff SA-1110 Internal Registers 0xc0000000 - 0xc1ffffff DRAM Bank 0 - 32Mb SDRAM 0xe0000000 - 0xe7ffffff Cache Clean Virtual Address Range C B Description ----------------------- - - ---------------------------------- 0x00000000 - 0x01ffffff Y Y DRAM - 32Mb 0x08000000 - 0x0fffffff N N Onboard ethernet controller 0x10000000 - 0x17ffffff N N CerfCube internal registers 0x20000000 - 0x3fffffff N N PCMCIA / Compact Flash 0x50000000 - 0x51ffffff Y Y Up to 32Mb FLASH (nCS0) 0x80000000 - 0xbfffffff N N SA-1110 Internal Registers 0xc0000000 - 0xc1ffffff N Y DRAM Bank 0: 32Mb 0xe0000000 - 0xe7ffffff Y Y Cache Clean </programlisting> </para> </sect2> <sect2> <title>Resource Usage</title> <para>The flash based RedBoot image occupies flash addresses 0x50000000 - 0x5001ffff. RedBoot also reserves RAM (0x00000000 - 0x0001ffff) for RedBoot runtime uses. RAM based RedBoot configurations are designed to run from RAM at virtual addresses 0x00020000 - 0x0005ffff. RAM virtual addresses from 0x00060000 to the end of RAM are available for general use, such as a temporary scratchpad for downloaded images, before they are written to flash. </para> </sect2> <sect2> <title>Rebuilding RedBoot</title> <para>The instructions in <xref linkend="Rebuilding-Redboot"> should be followed. The values for TARGET, ARCH_DIR and PLATFORM_DIR on this platform are “cerf”, “arm” and “sa11x0/ipaq” respectively. Note that the configuration export files supplied in the <computeroutput> hal/arm/sa11x0/cerf/<replaceable>VERSION</replaceable>/misc</computeroutput> directory in the RedBoot source tree should be used.</para> </sect2></sect1> <?Pub _newpage> <sect1 id="edb7xxx"> <title>Cirrus Logic EP7xxx (EDB7211, EDB7212, EDB7312) </title> <sect2> <title>Overview</title> <para><indexterm><primary>Cirrus Logic EP7xxx (EDB7211, EDB7212, EDB7312)</primary> <secondary>installing and testing</secondary></indexterm><indexterm><primary> installing and testing</primary><secondary>Cirrus Logic EP7xxx (EDB7211, EDB7212, EDB7312) </secondary></indexterm>RedBoot supports both serial ports on the board and the ethernet port. The default serial port settings are 38400,8,N,1. RedBoot also supports flash management on the EDB7xxx for the NOR flash only. Two basic RedBoot configurations are supported: <itemizedlist> <listitem><para>RedBoot running from the board's flash boot sector.</para> </listitem> <listitem><para>RedBoot running from RAM with RedBoot in the flash boot sector. </para> </listitem> <listitem><para>EDB7312 only: RedBoot running from RAM copied directly from the flash boot sector. </para> </listitem> </itemizedlist></para> </sect2> <sect2> <title>Initial Installation Method </title> <para>A Windows or Linux utility is used to program flash using serial port #1 via on-chip programming firmware. See board documentation for details on in situ flash programming. </para> </sect2> <sect2> <title>Flash management</title> <sect3> <title>Updating the primary RedBoot image</title> <para>To update the primary RedBoot images, follow the procedures detailed in <xref linkend="update-primary-image">, but the actual numbers used with the flags in the sample commands should be: <programlisting> -f 0xE0000000 -b 0x40000 -l 0x40000 </programlisting></para> </sect3> <sect3> <title>Updating the secondary RedBoot image</title> <para>To update the secondary RedBoot images, follow the procedures detailed in <xref linkend="different-version-from-RAM">, but the actual numbers used with the flags in the sample commands should be: <programlisting> -f 0xE0040000 -b 0x40000 -r 0x40000 -l 0x40000 </programlisting></para> <note><title>NOTE</title> <para> On the EDB7312, because the primary RedBoot image runs in RAM and not FLASH, it can be updated directly without use of the separate RAM based version. </para></note> </sect3> </sect2> <sect2> <title>Special RedBoot Commands </title> <para>None.</para> </sect2> <sect2> <title>Memory Maps </title> <para>The MMU page tables and LCD display buffer, if enabled, are located at the end of DRAM. <note><title>NOTE </title> <para>The virtual memory maps in this section use a C and B column to indicate whether or not the region is cached (C) or buffered (B).</para> </note><programlisting> Physical Address Range Description ----------------------- ---------------------------------- 0x00000000 - 0x01ffffff NOR Flash (EDB7211, EDB7212) 0x00000000 - 0x00ffffff NOR Flash (EDB7312) 0x10000000 - 0x11ffffff NAND Flash 0x20000000 - 0x2fffffff Expansion 2 0x30000000 - 0x3fffffff Expansion 3 0x40000000 - 0x4fffffff PCMCIA 0 0x50000000 - 0x5fffffff PCMCIA 1 0x60000000 - 0x600007ff On-chip SRAM 0x80000000 - 0x8fffffff I/O registers 0xc0000000 - 0xc1ffffff DRAM (EDB7211, EDB7212) 0xc0000000 - 0xc0ffffff DRAM (EDB7312) Virtual Address Range C B Description ----------------------- - - ---------------------------------- 0x00000000 - 0x01ffffff Y Y DRAM 0x00000000 - 0x00fcffff Y Y DRAM (EDB7312) 0x20000000 - 0x2fffffff N N Expansion 2 0x30000000 - 0x3fffffff N N Expansion 3 0x40000000 - 0x4fffffff N N PCMCIA 0 0x50000000 - 0x5fffffff N N PCMCIA 1 0x60000000 - 0x600007ff Y Y On-chip SRAM 0x80000000 - 0x8fffffff N N I/O registers 0xc0000000 - 0xc001ffff N Y LCD buffer (if configured) 0xe0000000 - 0xe1ffffff Y Y NOR Flash (EDB7211, EDB7212) 0xe0000000 - 0xe0ffffff Y Y NOR Flash (EDB7312) 0xf0000000 - 0xf1ffffff Y Y NAND Flash The flash based RedBoot image occupies virtual addresses 0xe0000000 - 0xe003ffff. </programlisting></para> </sect2> <sect2> <title>Resource Usage </title> <para> The RAM based RedBoot image occupies RAM addresses <computeroutput>0x40000 - 0x7ffff</computeroutput>. The ROMRAM based RedBoot image (EDB7312 only) occupies RAM addresses <computeroutput>0x1000 - 0x3ffff</computeroutput>. RAM addresses start at <computeroutput>0x80000</computeroutput> and continue up to the top of the installed physical RAM size, less the memory reserved for MMU page tables (0x9000 bytes) and the LCD display buffer, if enabled (0x20000 bytes). The RAM is available for general use such as a temporary scratchpad for downloaded images before they are written to flash. </para> <para>The EP7xxx timer #2 is used as a polled timer to provide timeout support for network and XModem file transfers.</para> </sect2><sect2> <title>Rebuilding RedBoot</title> <para>The instructions in <xref linkend="Rebuilding-Redboot"> should be followed. The values for ARCH_DIR and PLATFORM_DIR on this platform are “arm” and “edb7xxx” respectively. The value for TARGET is either “edb7211” or “edb7212” or “edb7312”, depending on the desired platform. Note that the configuration export files supplied in the <computeroutput> hal/arm/edb7xxx/<replaceable>VERSION</replaceable>/misc</computeroutput> directory in the RedBoot source tree should be used, and the correct edb7XXX variant chosen.</para> </sect2> </sect1> <?Pub _newpage> <sect1 id="nano"> <title>Bright Star Engineering commEngine and nanoEngine</title> <sect2> <title>Overview</title> <para><indexterm><primary>commEngine</primary><secondary>installing and testing </secondary></indexterm><indexterm><primary>nanoEngine</primary><secondary> installing and testing</secondary></indexterm><indexterm><primary>installing and testing</primary><secondary>commEngine</secondary></indexterm><indexterm> <primary>installing and testing</primary><secondary>nanoEngine</secondary> </indexterm>RedBoot supports a serial port and the built in ethernet port for communication and downloads. The default serial port settings are 38400,8,N,1. RedBoot runs from and supports flash management for the system flash region. These configurations are supported:<itemizedlist> <listitem><para>RedBoot running from the first free block at 0x40000</para> </listitem> <listitem><para>RedBoot running from RAM</para> </listitem> </itemizedlist></para> </sect2> <sect2> <title>Initial Installation</title> <para>Unlike other targets, the nanoEngine comes equipped with boot firmware which you cannot modify. See chapter 5, "nanoEngine Firmware" of the <citetitle> nanoEngine Hardware Reference Manual</citetitle> (we refer to "July 17, 2000 Rev 0.6") from Bright Star Engineering. </para> <para>Because of this, eCos, and therefore Redboot, only supports RAM and POST startup types, rather than the more usual ROM, RAM and optionally, POST. </para> <para>Briefly, the POST-startup RedBoot image lives in flash following the BSE firmware. The BSE firmware is configured, using its standard <computeroutput> bootcmd</computeroutput> parameter, to jump into the RedBoot image at startup. </para> </sect2> <sect2> <title>Download Instructions</title> <para>You can perform the initial load of the POST-startup RedBoot image into flash using the BSE firmware's <command>load</command> command. This will load a binary file, using TFTP, and program it into flash in one operation. Because no memory management is used in the BSE firmware, flash is mapped from address zero upwards, so the address for the RedBoot POST image is 0x40000. You must use the binary version of RedBoot for this, <filename> redboot-post.bin</filename>. </para> <para>This assumes you have set up the other BSE firmware config parameters such that it can communicate over your network to your TFTP server. <screen> ><userinput>load /tftpboot/redboot-post.bin 40000</userinput> loading ... erasing blk at 00040000 erasing blk at 00050000 94168 bytes loaded cksum 00008579 done > > <userinput>set bootcmd "go 40000"</userinput> > <userinput>get</userinput> myip = 10.16.19.198 netmask = 255.255.255.0 eth = 0 gateway = 10.16.19.66 serverip = 10.16.19.66 bootcmd = go 40000 > </screen> <note><title>NOTE</title> <para>the BSE firmware runs its serial IO at 9600 Baud; RedBoot runs instead at 38400 Baud. You must select the right baud rate in your terminal program to be able to set up the BSE firmware.</para> </note> After a reset, the BSE firmware will print <screen>Boot: BSE 2000 Sep 12 2000 14:00:30 autoboot: "go 40000" [hit ESC to abort]</screen>and then RedBoot starts, switching to 38400 Baud.</para> <para>Once you have installed a bootable RedBoot in the system in this manner, we advise re-installing using the generic method described in <xref linkend="updating-redboot"> in order that the Flash Image System contains an appropriate description of the flash entries.</para> </sect2> <sect2> <title>Cohabiting with POST in Flash</title> <para>The configuration export file named <filename>redboot_POST.ecm</filename> configures redboot to build for execution at address 0x50040000 (or, during bootup, 0x00040000). This is to allow power-on self-test (POST) code or immutable firmware to live in the lower addresses of the flash and to run before RedBoot gets control. The assumption is that RedBoot will be entered at its base address in physical memory, that is 0x00040000. </para> <para>Alternatively, for testing, you can call it in an already running system by using <userinput>go 0x50040040</userinput> at another RedBoot prompt, or a branch to that address. The address is where the reset vector points, and is reported by RedBoot's <userinput>tftp load</userinput> command and listed by the <userinput>fis list</userinput> command, amongst other places. </para> <para>Using the POST configuration enables a normal config option which causes linking and initialization against memory layout files called "...post..." rather than "...rom..." or "...ram..." in the <computeroutput>include/pkgconf </computeroutput> directory. Specifically: <programlisting>665 Feb 9 17:57 include/pkgconf/mlt_arm_sa11x0_nano_post.h 839 Feb 9 17:57 include/pkgconf/mlt_arm_sa11x0_nano_post.ldi 585 Feb 9 17:57 include/pkgconf/mlt_arm_sa11x0_nano_post.mlt</programlisting>It is these you should edit if you wish to move that execution address from 0x50040000 in the POST configuration. Startup type naturally remains ROM in this configuration. </para> <para>Because the nanoEngine contains immutable boot firmware at the start of flash, RedBoot for this target is configured to reserve that area in the Flash Image System, and to create by default an entry for the POST startup RedBoot. <programlisting> RedBoot> <userinput>fis list</userinput> Name FLASH addr Mem addr Length Entry point (reserved) 0x50000000 0x50000000 0x00040000 0x00000000 RedBoot[post] 0x50040000 0x00100000 0x00020000 0x50040040 RedBoot config 0x503E0000 0x503E0000 0x00010000 0x00000000 FIS directory 0x503F0000 0x503F0000 0x00010000 0x00000000 RedBoot> </programlisting> The entry "(reserved)" ensures that the FIS cannot attempt to overwrite the BSE firmware, thus ensuring that the board remains bootable and recoverable even after installing a broken RedBoot image.</para> </sect2> <sect2> <title>Special RedBoot Commands</title> <para>The nanoEngine/commEngine has one or two Intel i82559 Ethernet controllers installed, but these have no associated serial EEPROM in which to record their Ethernet Station Address (ESA, or MAC address). The BSE firmware records an ESA for the device it uses, but this information is not available to RedBoot; we cannot share it.</para> <para>To keep the ESAs for the two ethernet interfaces, two new items of RedBoot configuration data are introduced. You can list them with the RedBoot command <command> fconfig -l</command> thus: <programlisting> RedBoot> <userinput>fconfig -l</userinput> Run script at boot: false Use BOOTP for network configuration: false Local IP address: 10.16.19.91 Default server IP address: 10.16.19.66 Network hardware address [MAC] for eth0: 0x00:0xB5:0xE0:0xB5:0xE0:0x99 Network hardware address [MAC] for eth1: 0x00:0xB5:0xE0:0xB5:0xE0:0x9A GDB connection port: 9000 Network debug at boot time: false RedBoot></programlisting>You should set them before running RedBoot or eCos applications with the board connected to a network. The <command>fconfig </command> command can be used as for any configuration data item; the entire ESA is entered in one line.</para> </sect2> <sect2> <title>Memory Maps</title> <para>The first level page table is located at physical address 0xc0004000. No second level tables are used. <note><title>NOTE</title> <para>The virtual memory maps in this section use a C and B column to indicate whether or not the region is cached (C) or buffered (B).</para> </note><programlisting>Physical Address Range Description ----------------------- ---------------------------------- 0x00000000 - 0x003fffff 4Mb FLASH (nCS0) 0x18000000 - 0x18ffffff Internal PCI bus - 2 x i82559 ethernet 0x40000000 - 0x4fffffff External IO or PCI bus 0x80000000 - 0xbfffffff SA-1110 Internal Registers 0xc0000000 - 0xc7ffffff DRAM Bank 0 - 32Mb SDRAM 0xc8000000 - 0xcfffffff DRAM Bank 1 - empty 0xe0000000 - 0xe7ffffff Cache Clean Virtual Address Range C B Description ----------------------- - - ---------------------------------- 0x00000000 - 0x001fffff Y Y DRAM - 8Mb to 32Mb 0x18000000 - 0x180fffff N N Internal PCI bus - 2 x i82559 ethernet 0x40000000 - 0x4fffffff N N External IO or PCI bus 0x50000000 - 0x51ffffff Y Y Up to 32Mb FLASH (nCS0) 0x80000000 - 0xbfffffff N N SA-1110 Internal Registers 0xc0000000 - 0xc0ffffff N Y DRAM Bank 0: 8 or 16Mb 0xc8000000 - 0xc8ffffff N Y DRAM Bank 1: 8 or 16Mb or absent 0xe0000000 - 0xe7ffffff Y Y Cache Clean</programlisting>The FLASH based RedBoot POST-startup image occupies virtual addresses 0x50040000 - 0x5005ffff. </para> <para>The ethernet devices use a "PCI window" to communicate with the CPU. This is 1Mb of SDRAM which is shared with the ethernet devices that are on the PCI bus. It is neither cached nor buffered, to ensure that CPU and PCI accesses see correct data in the correct order. By default it is configured to be megabyte number 30, at addresses 0x01e00000-0x01efffff. This can be modified, and indeed must be, if less than 32Mb of SDRAM is installed, via the memory layout tool, or by moving the section <computeroutput>__pci_window </computeroutput> referred to by symbols <computeroutput>CYGMEM_SECTION_pci_window* </computeroutput> in the linker script. </para> <para>Though the nanoEngine ships with 32Mb of SDRAM all attached to DRAM bank 0, the code can cope with any of these combinations also; "2 x " in this context means one device in each DRAM Bank. <programlisting>1 x 8Mb = 8Mb 2 x 8Mb = 16Mb 1 x 16Mb = 16Mb 2 x 16Mb = 32Mb</programlisting>All are programmed the same in the memory controller. </para> <para>Startup code detects which is fitted and programs the memory map accordingly. If the device(s) is 8Mb, then there are gaps in the physical memory map, because a high order address bit is not connected. The gaps are the higher 2Mb out of every 4Mb. The SA11x0 OS timer is used as a polled timer to provide timeout support within RedBoot.</para> </sect2> <sect2> <title>Nano Platform Port</title> <para>The nano is in the set of SA11X0-based platforms. It uses the arm architectural HAL, the sa11x0 variant HAL, plus the nano platform hal. These are components <programlisting>CYGPKG_HAL_ARM hal/arm/arch/ CYGPKG_HAL_ARM_SA11X0 hal/arm/sa11x0/var CYGPKG_HAL_ARM_SA11X0_NANO hal/arm/sa11x0/nano</programlisting> respectively. </para> <para>The target name is "nano" which includes all these, plus the ethernet driver packages, flash driver, and so on.</para> </sect2> <sect2> <title>Ethernet Driver</title> <para>The ethernet driver is in two parts: </para> <para>A generic ether driver for Intel i8255x series devices, specifically the i82559, is <computeroutput>devs/eth/intel/i82559</computeroutput>. Its package name is <computeroutput>CYGPKG_DEVS_ETH_INTEL_I82559</computeroutput>. </para> <para>The platform-specific ether driver is <computeroutput>devs/eth/arm/nano </computeroutput>. Its package is <computeroutput>CYGPKG_DEVS_ETH_ARM_NANO </computeroutput>. This tells the generic driver the address in IO memory of the chip, for example, and other configuration details. This driver picks up the ESA from RedBoot's configuration data - unless configured to use a static ESA in the usual manner. </para> </sect2><sect2> <title>Rebuilding RedBoot</title> <para>The instructions in <xref linkend="Rebuilding-Redboot"> should be followed. The values for TARGET, ARCH_DIR and PLATFORM_DIR on this platform are “nano”, “arm” and “sa11x0/nano” respectively. Note that the configuration export files supplied in the <computeroutput> hal/arm/sa11x0/nano/<replaceable>VERSION</replaceable>/misc</computeroutput> directory in the RedBoot source tree should be used.</para> </sect2> </sect1> <?Pub _newpage> <sect1 id="x86pc"> <title>x86 Based PC</title> <sect2> <title>Overview</title> <para><indexterm><primary>x86 Based PC</primary><secondary>installing and testing</secondary></indexterm><indexterm><primary>installing and testing </primary><secondary>x86 Based PC</secondary></indexterm>RedBoot supports two serial ports and an Intel i82559 based ethernet card (for example an Intel EtherExpress Pro 10/100) for communication and downloads. The default serial port settings are 38400,8,N,1. RedBoot runs from a boot floppy disk installed in the A: drive of the PC.</para> </sect2> <sect2> <title>Initial Installation</title> <para>RedBoot takes the form of a self-booting image that must be written onto a formatted floppy disk. The process will erase any file system or data that already exists on that disk, so proceed with caution.</para> <para>For Red Hat Linux users, this can be done by:</para> <screen> $ <userinput>dd conv=sync if=install/bin/redboot.bin of=/dev/fd0H1440 </userinput></screen> <para>For NT Cygwin users, this can be done by first ensuring that the raw floppy device is mounted as <filename>/dev/fd0</filename>. To check if this is the case, type the command <userinput>mount</userinput> at the Cygwin bash prompt. If the floppy drive is already mounted, it will be listed as something similar to the following line:</para> <screen> \\.\a: /dev/fd0 user binmode</screen> <para>If this line is not listed, then mount the floppy drive using the command: </para> <screen> $ <userinput>mount -f -b //./a: /dev/fd0</userinput></screen> <para>To actually install the boot image on the floppy, use the command:</para> <screen> $ <userinput>dd conv=sync if=install/bin/redboot.bin of=/dev/fd0 </userinput></screen> <para>Insert this floppy in the A: drive of the PC to be used as a target and ensure that the BIOS is configured to boot from A: by default. On reset, the PC will boot from the floppy and be ready to be debugged via either serial line, or via the ethernet interface if it is installed.</para> <note><title>NOTE</title> <para>Unreliable floppy media may cause the write to silently fail. This can be determined if the RedBoot image does not correctly boot. In such cases, the floppy should be (unconditionally) reformatted using the <command>fdformat</command> command on Linux, or <command>format a: /u</command> on DOS/Windows.</para> </note> </sect2> <sect2> <title>Flash management</title> <para>PC RedBoot does not support any FLASH commands.</para> </sect2> <sect2> <title>Special RedBoot Commands </title> <para>None.</para> </sect2> <sect2> <title>Memory Maps </title> <para>All selectors are initialized to map the entire 32-bit address space in the familiar protected mode flat model. Page translation is not used. RAM up to 640K is mapped to 0x0 to 0xa0000. RAM above 640K is mapped from address 0x100000 upwards. Space is reserved between 0xa0000 and 0x100000 for option ROMs and the BIOS. </para> </sect2> <sect2> <title>Resource Usage </title> <para>RedBoot is loaded into RAM at address 0x2000 and reserves all RAM below 0xa0000 for its own use. RAM applications should load from address 0x100000 upwards.</para> </sect2> <sect2> <title>Rebuilding RedBoot</title> <para>The instructions in <xref linkend="Rebuilding-Redboot"> should be followed. The values for TARGET, ARCH_DIR and PLATFORM_DIR on this platform are “pc”, “i386” and “pc” respectively. Note that the configuration export files supplied in the <computeroutput> hal/i386/pc/<replaceable>VERSION</replaceable>/misc</computeroutput> directory in the RedBoot source tree should be used. In particular, the <filename>redboot_FLOPPY.ecm</filename> file is used for building a version of RedBoot suitable for booting off a floppy disk.</para> </sect2> </sect1> <?Pub _newpage> <sect1 id="CalmRISC16"> <title>Samsung CalmRISC16 Core Evaluation Board </title> <sect2> <title>Overview</title> <para><indexterm><primary>Samsung CalmRISC16 Core EVB</primary><secondary>installing and testing</secondary></indexterm><indexterm><primary>installing and testing </primary><secondary>Samsung CalmRISC16 Core EVB</secondary></indexterm> The Samsung CalmRISC16 evaluation platform consists of two boards connected by a ribbon cable. One board contains the CPU core and memory. The other board is called the MDSChip board and provides the host interface. The calmRISC16 is a harvard architecture with separate 22-bit program and data addresses. The instruction set provides no instruction for writing to program memory. The MDSChip board firmware (called CalmBreaker) provides a pseudo register interface so that code running on the core has access to a serial channel and a mechanism to write to program memory. The serial channel is fixed at 57600-8-N-1 by the firmware. The CalmBreaker firmware also provides a serial protocol which allows a host to download a program and to start or stop the core board.</para> <para>Only a ROM startup RedBoot configuration is supported.</para> </sect2> <sect2> <title>Initial Installation Method </title> <para>The CalmRISC16 core is controlled through the MDSChip board. There is no non-volatile storage available for RedBoot, so RedBoot must be downloaded to the board on every power cycle. A small utility program is used to download S-record files to the eval board. Sources and build instructions for this utility are located in the RedBoot sources in: <programlisting> .../packages/hal/calmrisc16/ceb/current/support </programlisting></para> <para>To download the RedBoot image, first press the reset button on the MDSChip board. The green 'Run' LED on the core board should go off. Now, use the utility to download the RedBoot image with: <programlisting> % calmbreaker -p /dev/term/b --reset --srec-code -f redboot.elf </programlisting> Note that the '-p /dev/term/b' specifies the serial port to use and will vary from system to syetm. The download will take about two minutes. After it finishes, start RedBoot with: <programlisting> % calmbreaker -p /dev/term/b --run</programlisting> The 'Run' LED on the core board should be on. Connecting to the MDSboard with a terminal and typing enter should result in RedBoot reprinting the command prompt. </para> </sect2> <sect2> <title>Special RedBoot Commands </title> <para>None.</para> </sect2> <sect2> <title>Special Note on Serial Channel </title> <para>The MDSChip board uses a relatively slow microcontroller to provide the pseudo-register interface to the core board. This pseudo-register interface provides access to the serial channel and write access to program memory. Those interfaces are slow and the serial channel is easily overrun by a fast host. For this reason, GDB must be told to limit the size of code download packets to avoid serial overrun. This is done with the following GDB command: <programlisting> (gdb) set download-write-size 25</programlisting> </para> </sect2> <sect2> <title>Resource Usage </title> <para>The RedBoot image occupies program addresses 0x000000 - 0x00ffff and data addresses 0x000000 - 0x00ffff. </para> </sect2> <sect2> <title>Rebuilding RedBoot</title> <para>The instructions in <xref linkend="Rebuilding-Redboot"> should be followed. The values for TARGET, ARCH_DIR and PLATFORM_DIR on this platform are “calm16_ceb”, “calmrisc16” and “ceb” respectively. Note that the configuration export files supplied in the <computeroutput> hal/calmrisc16/ceb/<replaceable>VERSION</replaceable>/misc</computeroutput> directory in the RedBoot source tree should be used.</para> </sect2> </sect1> <?Pub _newpage> <sect1 id="CalmRISC32"> <title>Samsung CalmRISC32 Core Evaluation Board </title> <sect2> <title>Overview</title> <para><indexterm><primary>Samsung CalmRISC32 Core EVB</primary><secondary>installing and testing</secondary></indexterm><indexterm><primary>installing and testing </primary><secondary>Samsung CalmRISC32 Core EVB</secondary></indexterm> The Samsung CalmRISC32 evaluation platform consists of two boards connected by a ribbon cable. One board contains the CPU core and memory. The other board is called the MDSChip board and provides the host interface. The calmRISC32 is a harvard architecture with separate 32-bit program and data addresses. The instruction set provides no instruction for writing to program memory. The MDSChip board firmware (called CalmBreaker) provides a pseudo register interface so that code running on the core has access to a serial channel and a mechanism to write to program memory. The serial channel is fixed at 57600-8-N-1 by the firmware. The CalmBreaker firmware also provides a serial protocol which allows a host to download a program and to start or stop the core board.</para> <para>Only a ROM startup RedBoot configuration is supported.</para> </sect2> <sect2> <title>Initial Installation Method </title> <para>The calmRISC32 core is controlled through the MDSChip board. There is no non-volatile storage available for RedBoot, so RedBoot must be downloaded to the board on every power cycle. A small utility program is used to download S-record files to the eval board. Sources and build instructions for this utility are located in the RedBoot sources in: <programlisting> .../packages/hal/calmrisc32/ceb/current/support </programlisting></para> <para>To download the RedBoot image, first press the reset button on the MDSChip board. The green 'Run' LED on the core board should go off. Now, use the utility to download the RedBoot image with: <programlisting> % calmbreaker -p /dev/term/b --reset --srec-code -f redboot.elf </programlisting> Note that the '-p /dev/term/b' specifies the serial port to use and will vary from system to syetm. The download will take about two minutes. After it finishes, start RedBoot with: <programlisting> % calmbreaker -p /dev/term/b --run</programlisting> The 'Run' LED on the core board should be on. Connecting to the MDSboard with a terminal and typing enter should result in RedBoot reprinting the command prompt. </para> </sect2> <sect2> <title>Special RedBoot Commands </title> <para>None.</para> </sect2> <sect2> <title>Special Note on Serial Channel </title> <para>The MDSChip board uses a relatively slow microcontroller to provide the pseudo-register interface to the core board. This pseudo-register interface provides access to the serial channel and write access to program memory. Those interfaces are slow and the serial channel is easily overrun by a fast host. For this reason, GDB must be told to limit the size of code download packets to avoid serial overrun. This is done with the following GDB command: <programlisting> (gdb) set download-write-size 25</programlisting> </para> </sect2> <sect2> <title>Resource Usage </title> <para>The RedBoot image occupies program addresses 0x00000000 - 0x0000ffff and data addresses 0x00000000 - 0x0000ffff. </para> </sect2> <sect2> <title>Rebuilding RedBoot</title> <para>The instructions in <xref linkend="Rebuilding-Redboot"> should be followed. The values for TARGET, ARCH_DIR and PLATFORM_DIR on this platform are “calm32_ceb”, “calmrisc32” and “ceb” respectively. Note that the configuration export files supplied in the <computeroutput> hal/calmrisc32/ceb/<replaceable>VERSION</replaceable>/misc</computeroutput> directory in the RedBoot source tree should be used.</para> </sect2> </sect1> <?Pub _newpage> <sect1 id="edk7708"> <title>Hitachi EDK7708 (edk7708)</title> <sect2> <title>Overview</title> <para><indexterm><primary>Hitachi SH EDK7708</primary><secondary>installing and testing</secondary></indexterm><indexterm><primary>installing and testing </primary><secondary>Hitachi SH EDK7708</secondary></indexterm>RedBoot uses the serial port. The default serial port settings are 38400,8,N,1.</para> <para>Management of onboard flash is also supported. Two basic RedBoot configurations are supported: <itemizedlist> <listitem><para>RedBoot running from RAM with RedBoot in the flash boot sector. </para> </listitem> <listitem><para>RedBoot running from the board's flash boot sector. </para> </listitem> </itemizedlist></para> </sect2> <sect2> <title>Initial Installation Method </title> <para>Program the ROM RedBoot image into flash using an eprom programmer.</para> </sect2> <sect2> <title>Flash management</title> <sect3> <title>Updating the primary RedBoot image</title> <para>To update the primary RedBoot images, follow the procedures detailed in <xref linkend="update-primary-image">, but the actual numbers used with the flags in the sample commands should be: <programlisting>-f 0x80000000 -b 0x88040000 -l 0x20000</programlisting></para> </sect3> </sect2> <sect2> <title>Memory Maps </title> <para>RedBoot sets up the following memory map on the EDK7708 board.<programlisting> Physical Address Range Description ----------------------- ----------- 0x80000000 - 0x8001ffff Flash (AT29LV1024) 0x88000000 - 0x881fffff DRAM 0xa4000000 - 0xa40000ff LED ON 0xb8000000 - 0xb80000ff LED ON </programlisting></para> </sect2> <sect2> <title>Resource Usage </title> <para>The flash based RedBoot image occupies flash addresses 0x80000000 - 0x8001ffff. RedBoot also reserves RAM (0x88000000 - 0x8800ffff) for RedBoot runtime uses. RAM based RedBoot configurations are designed to run from RAM at physical addresses 0x88010000 - 0x8803ffff. RAM physical addresses from 0x88040000 to the end of RAM are available for general use, such as a temporary scratchpad for downloaded images, before they are written to flash.</para> </sect2> <sect2> <title>Rebuilding RedBoot</title> <para>The instructions in <xref linkend="Rebuilding-Redboot"> should be followed. The values for TARGET, ARCH_DIR and PLATFORM_DIR on this platform are “edk7708”, “sh” and “edk7708” respectively. Note that the configuration export files supplied in the <computeroutput> hal/sh/edk7708/<replaceable>VERSION</replaceable>/misc</computeroutput> directory in the RedBoot source tree should be used.</para> </sect2> </sect1> <?Pub _newpage> <sect1 id="se77x9"> <title>Hitachi Solution Engine 77X9 (SE77X9)</title> <sect2> <title>Overview</title> <para><indexterm><primary>Hitachi SH SE77X9</primary><secondary>installing and testing</secondary></indexterm><indexterm><primary>installing and testing </primary><secondary>Hitachi SH SE77X9</secondary></indexterm>This description covers the MS7729SE01 and MS7709SSE0101 variants. See <xref linkend="se7709"> for instructions for the MS7709SE01 variant.</para> <para>RedBoot uses the COM1 and COM2 serial ports. The default serial port settings are 38400,8,N,1. Ethernet is also supported using the 10-base T connector. </para> <para>Management of onboard flash is also supported. Two basic RedBoot configurations are supported: <itemizedlist> <listitem><para>RedBoot running from RAM with RedBoot in the flash boot sector. </para> </listitem> <listitem><para>RedBoot running from the board's flash boot sector. </para> </listitem> </itemizedlist></para> </sect2> <sect2> <title>Initial Installation Method </title> <para>The Solution Engine ships with the Hitachi boot monitor in EPROM which allows for initial programming of RedBoot:</para> <orderedlist> <listitem><para>Set switches SW4-3 and SW4-4 to ON [boot from EPROM]</para> </listitem> <listitem><para>Connect a serial cable to COM2 and power up the board.</para> </listitem> <listitem><para>After the boot monitor banner, invoke the flash download/program command:<programlisting>Ready >fl</programlisting></para> </listitem> <listitem><para>The monitor should now ask for input: <programlisting>Flash ROM data copy to RAM Please Send A S-format Record</programlisting>At this point copy the RedBoot ROM SREC file to the serial port:<programlisting> $ cat redboot_ROM.eprom.srec > /dev/ttyS0</programlisting>Eventually you should see something like<programlisting>Start Addrs = A1000000 End Addrs = A1xxxxxx Transfer complete</programlisting> from the monitor. </para></listitem> <listitem><para>Set switch SW4-3 to OFF [boot from flash] and reboot the board. You should now see the RedBoot banner.</para> </listitem> </orderedlist> </sect2> <sect2> <title>Flash management</title> <sect3> <title>Updating the primary RedBoot image</title> <para>To update the primary RedBoot images, follow the procedures detailed in <xref linkend="update-primary-image">, but the actual numbers used with the flags in the sample commands should be: <programlisting>-f 0x80000000 -b 0x8c080000 -l 0x20000</programlisting></para> </sect3> <sect3> <title>Updating the secondary RedBoot image</title> <para>To update the secondary RedBoot images, follow the procedures detailed in <xref linkend="different-version-from-RAM">, but the actual numbers used with the flags in the sample commands should be: <programlisting> -f 0x80020000 -b 0x8c020000 -r 0x8c020000 -l 0x20000 </programlisting></para> </sect3></sect2> <sect2> <title>Special RedBoot Commands </title> <para>The <command>exec</command> command which allows the loading and execution of Linux kernels is supported for this board (see <xref linkend="executing-programs">). The <command> exec</command> parameters used for the SE77x9 are:</para> <variablelist> <varlistentry> <term>-b <replaceable><addr></replaceable></term> <listitem><para>Parameter block address. This is normally the first page of the kernel image and defaults to 0x8c101000</para></listitem></varlistentry> <varlistentry><term>-i <replaceable><addr></replaceable></term> <listitem><para>Start address of initrd image</para></listitem></varlistentry> <varlistentry><term>-j <replaceable><size></replaceable></term> <listitem><para>Size of initrd image</para></listitem></varlistentry> <varlistentry><term>-c <replaceable>"args"</replaceable></term> <listitem><para>Kernel arguments string</para></listitem></varlistentry> <varlistentry><term> -m <replaceable><flags></replaceable></term> <listitem><para>Mount rdonly flags. If set to a non-zero value the root partition will be mounted read-only.</para></listitem></varlistentry> <varlistentry><term> -f <replaceable><flags></replaceable></term> <listitem><para>RAM disk flags. Should normally be 0x4000</para></listitem></varlistentry> <varlistentry><term>-r <replaceable><device number></replaceable></term> <listitem><para>Root device specification. /dev/ram is 0x0101</para></listitem></varlistentry> <varlistentry><term>-l <replaceable><type></replaceable></term> <listitem><para>Loader type</para></listitem></varlistentry> </variablelist> <para>Finally the kernel entry address can be specified as an optional argument. The default is 0x8c102000</para> <para> On the SE77x9, Linux expects to be loaded at address 0x8c101000 with the entry point at 0x8c102000. This is configurable in the kernel using the CONFIG_MEMORY_START option. </para> </sect2> <sect2> <title>Memory Maps </title> <para>RedBoot sets up the following memory map on the SE77x9 board.<programlisting> Physical Address Range Description ----------------------- ----------- 0x80000000 - 0x803fffff Flash (MBM29LV160) 0x81000000 - 0x813fffff EPROM (M27C800) 0x8c000000 - 0x8dffffff SDRAM 0xb0000000 - 0xb03fffff Ethernet (DP83902A) 0xb0400000 - 0xb07fffff SuperIO (FDC37C935A) 0xb0800000 - 0xb0bfffff Switches 0xb0c00000 - 0xbfffffff LEDs 0xb1800000 - 0xb1bfffff PCMCIA (MaruBun) </programlisting></para> </sect2> <sect2> <title>Ethernet Driver</title> <para>The ethernet driver uses a hardwired ESA which can, at present, only be changed in CDL.</para> </sect2> <sect2> <title>Resource Usage </title> <para>The flash based RedBoot image occupies flash addresses 0x80000000 - 0x8001ffff. RedBoot also reserves RAM (0x8c000000 - 0x8c01ffff) for RedBoot runtime uses. RAM based RedBoot configurations are designed to run from RAM at physical addresses 0x8c020000 - 0x8c07ffff. RAM physical addresses from 0x8c080000 to the end of RAM are available for general use, such as a temporary scratchpad for downloaded images, before they are written to flash.</para> </sect2> <sect2> <title>Rebuilding RedBoot</title> <para>The instructions in <xref linkend="Rebuilding-Redboot"> should be followed. The values for TARGET, ARCH_DIR and PLATFORM_DIR on this platform are “se77x9”, “sh” and “se77x9” respectively. Note that the configuration export files supplied in the <computeroutput> hal/sh/se77x9/<replaceable>VERSION</replaceable>/misc</computeroutput> directory in the RedBoot source tree should be used.</para> </sect2> </sect1> <?Pub _newpage> <sect1 id="se7709"> <title>Hitachi Solution Engine 7709 (SE77X9)</title> <sect2> <title>Overview</title> <para><indexterm><primary>Hitachi SH SE7709</primary><secondary>installing and testing</secondary></indexterm><indexterm><primary>installing and testing </primary><secondary>Hitachi SH SE7709</secondary></indexterm>This description covers the MS7709SE01 variant. See <xref linkend="se77x9"> for instructions for the MS7729SE01 and MS7709SSE0101 variants.</para> <para>RedBoot uses the COM1 and COM2 serial ports. The default serial port settings are 38400,8,N,1. Ethernet is also supported using the 10-base T connector. </para> <para>Management of onboard flash is also supported. Two basic RedBoot configurations are supported: <itemizedlist> <listitem><para>RedBoot running from RAM with RedBoot in the flash boot sector. </para> </listitem> <listitem><para>RedBoot running from the board's flash boot sector. </para> </listitem> </itemizedlist></para> </sect2> <sect2> <title>Initial Installation Method </title> <para>The Solution Engine ships with the Hitachi boot monitor in EPROM which allows for initial programming of RedBoot:</para> <orderedlist> <listitem><para>Set switch SW4-1 to ON [boot from EPROM]</para> </listitem> <listitem><para>Connect a serial cable to CN1 (SCI) and power up the board.</para> </listitem> <listitem><para>After the boot monitor banner, invoke the flash download/program command:<programlisting>Ready >fl</programlisting></para> </listitem> <listitem><para>The monitor should now ask for input: <programlisting>Flash ROM data copy to RAM Please Send A S-format Record</programlisting>At this point copy the RedBoot ROM SREC file to the serial port:<programlisting> $ cat redboot_SE7709RP_ROM.eprom.srec > /dev/ttyS0</programlisting>Eventually you should see something like<programlisting>Start Addrs = A1000000 End Addrs = A1xxxxxx Transfer complete</programlisting> from the monitor. </para></listitem> <listitem><para>Set switch SW4-1 to OFF [boot from flash] and reboot the board. You should now see the RedBoot banner.</para> </listitem> </orderedlist> </sect2> <sect2> <title>Flash management</title> <sect3> <title>Updating the primary RedBoot image</title> <para>To update the primary RedBoot images, follow the procedures detailed in <xref linkend="update-primary-image">, but the actual numbers used with the flags in the sample commands should be: <programlisting>-f 0x80000000 -b 0x8c080000 -l 0x20000</programlisting></para> </sect3> <sect3> <title>Updating the secondary RedBoot image</title> <para>To update the secondary RedBoot images, follow the procedures detailed in <xref linkend="different-version-from-RAM">, but the actual numbers used with the flags in the sample commands should be: <programlisting> -f 0x80020000 -b 0x8c020000 -r 0x8c020000 -l 0x20000 </programlisting></para> </sect3></sect2> <sect2> <title>Special RedBoot Commands </title> <para>The <command>exec</command> command which allows the loading and execution of Linux kernels is supported for this board (see <xref linkend="executing-programs">). The <command> exec</command> parameters used for the SE77x9 are:</para> <variablelist> <varlistentry> <term>-b <replaceable><addr></replaceable></term> <listitem><para>Parameter block address. This is normally the first page of the kernel image and defaults to 0x8c101000</para></listitem></varlistentry> <varlistentry><term>-i <replaceable><addr></replaceable></term> <listitem><para>Start address of initrd image</para></listitem></varlistentry> <varlistentry><term>-j <replaceable><size></replaceable></term> <listitem><para>Size of initrd image</para></listitem></varlistentry> <varlistentry><term>-c <replaceable>"args"</replaceable></term> <listitem><para>Kernel arguments string</para></listitem></varlistentry> <varlistentry><term> -m <replaceable><flags></replaceable></term> <listitem><para>Mount rdonly flags. If set to a non-zero value the root partition will be mounted read-only.</para></listitem></varlistentry> <varlistentry><term> -f <replaceable><flags></replaceable></term> <listitem><para>RAM disk flags. Should normally be 0x4000</para></listitem></varlistentry> <varlistentry><term>-r <replaceable><device number></replaceable></term> <listitem><para>Root device specification. /dev/ram is 0x0101</para></listitem></varlistentry> <varlistentry><term>-l <replaceable><type></replaceable></term> <listitem><para>Loader type</para></listitem></varlistentry> </variablelist> <para>Finally the kernel entry address can be specified as an optional argument. The default is 0x8c102000</para> <para> For the the SE77x9, Linux by default expects to be loaded at 0x8c001000 which conflicts with the data space used by RedBoot. To work around this, either change the CONFIG_MEMORY_START kernel option to a higher address, or use the compressed kernel image and load it at a higher address. For example, setting CONFIG_MEMORY_START to 0x8c100000, the kernel expects to be loaded at address 0x8c101000 with the entry point at 0x8c102000. </para> </sect2> <sect2> <title>Memory Maps </title> <para>RedBoot sets up the following memory map on the SE77x9 board.<programlisting> Physical Address Range Description ----------------------- ----------- 0x80000000 - 0x803fffff Flash (MBM29LV160) 0x81000000 - 0x813fffff EPROM (M27C800) 0x8c000000 - 0x8dffffff DRAM 0xb0000000 - 0xb03fffff Ethernet (DP83902A) 0xb0800000 - 0xb08fffff 16C552A 0xb1000000 - 0xb100ffff Switches 0xb1800000 - 0xb18fffff LEDs 0xb8000000 - 0xbbffffff PCMCIA (MaruBun) </programlisting></para> </sect2> <sect2> <title>Ethernet Driver</title> <para>The ethernet driver uses a hardwired ESA which can, at present, only be changed in CDL.</para> </sect2> <sect2> <title>Resource Usage </title> <para>The flash based RedBoot image occupies flash addresses 0x80000000 - 0x8001ffff. RedBoot also reserves RAM (0x8c000000 - 0x8c01ffff) for RedBoot runtime uses. RAM based RedBoot configurations are designed to run from RAM at physical addresses 0x8c020000 - 0x8c07ffff. RAM physical addresses from 0x8c080000 to the end of RAM are available for general use, such as a temporary scratchpad for downloaded images, before they are written to flash.</para> </sect2> <sect2> <title>Rebuilding RedBoot</title> <para>The instructions in <xref linkend="Rebuilding-Redboot"> should be followed. The values for TARGET, ARCH_DIR and PLATFORM_DIR on this platform are “se77x9”, “sh” and “se77x9” respectively. Note that the configuration export files (containing SE7709RP substring) supplied in the <computeroutput> hal/sh/se77x9/<replaceable>VERSION</replaceable>/misc</computeroutput> directory in the RedBoot source tree should be used.</para> </sect2> </sect1> <?Pub _newpage> <sect1 id="se7751"> <title>Hitachi Solution Engine 7751 (SE7751)</title> <sect2> <title>Overview</title> <para><indexterm><primary>Hitachi SH SE7751</primary><secondary>installing and testing</secondary></indexterm><indexterm><primary>installing and testing </primary><secondary>Hitachi SH SE7751</secondary></indexterm>RedBoot uses the COM1 serial port. The default serial port settings are 38400,8,N,1. Ethernet is also supported using the 10-base T connector. </para> <para>Management of onboard flash is also supported. Two basic RedBoot configurations are supported: <itemizedlist> <listitem><para>RedBoot running from RAM with RedBoot in the flash boot sector. </para> </listitem> <listitem><para>RedBoot running from the board's flash boot sector. </para> </listitem> </itemizedlist></para> </sect2> <sect2> <title>Initial Installation Method </title> <para>The Solution Engine ships with the Hitachi boot monitor in EPROM which allows for initial programming of RedBoot:</para> <orderedlist> <listitem><para>Set switches SW5-3 and SW5-4 to ON [boot from EPROM]</para> </listitem> <listitem><para>Connect a serial cable to COM1 and power up the board.</para> </listitem> <listitem><para>After the boot monitor banner, invoke the flash download/program command:<programlisting>Ready >fl</programlisting></para> </listitem> <listitem><para>The monitor should now ask for input: <programlisting>Flash ROM data copy to RAM Please Send A S-format Record</programlisting>At this point copy the RedBoot ROM SREC file to the serial port:<programlisting> $ cat redboot_ROM.eprom.srec > /dev/ttyS0</programlisting>Eventually you should see something like<programlisting>Start Addrs = A1000000 End Addrs = A1xxxxxx Transfer complete</programlisting> from the monitor. </para></listitem> <listitem><para>Set switch SW5-3 to OFF [boot from flash] and reboot the board. You should now see the RedBoot banner.</para> </listitem> </orderedlist> </sect2> <sect2> <title>Flash management</title> <sect3> <title>Updating the primary RedBoot image</title> <para>To update the primary RedBoot images, follow the procedures detailed in <xref linkend="update-primary-image">, but the actual numbers used with the flags in the sample commands should be: <programlisting>-f 0x80000000 -b 0x8c080000 -l 0x20000</programlisting></para> </sect3> <sect3> <title>Updating the secondary RedBoot image</title> <para>To update the secondary RedBoot images, follow the procedures detailed in <xref linkend="different-version-from-RAM">, but the actual numbers used with the flags in the sample commands should be: <programlisting> -f 0x80020000 -b 0x8c020000 -r 0x8c020000 -l 0x20000 </programlisting></para> </sect3></sect2> <sect2> <title>Special RedBoot Commands </title> <para>The <command>exec</command> command which allows the loading and execution of Linux kernels is supported for this board (see <xref linkend="executing-programs">). The <command> exec</command> parameters used for the SE7751 are:</para> <variablelist> <varlistentry> <term>-b <replaceable><addr></replaceable></term> <listitem><para>Parameter block address. This is normally the first page of the kernel image and defaults to 0x8c101000</para></listitem></varlistentry> <varlistentry><term>-i <replaceable><addr></replaceable></term> <listitem><para>Start address of initrd image</para></listitem></varlistentry> <varlistentry><term>-j <replaceable><size></replaceable></term> <listitem><para>Size of initrd image</para></listitem></varlistentry> <varlistentry><term>-c <replaceable>"args"</replaceable></term> <listitem><para>Kernel arguments string</para></listitem></varlistentry> <varlistentry><term> -m <replaceable><flags></replaceable></term> <listitem><para>Mount rdonly flags. If set to a non-zero value the root partition will be mounted read-only.</para></listitem></varlistentry> <varlistentry><term> -f <replaceable><flags></replaceable></term> <listitem><para>RAM disk flags. Should normally be 0x4000</para></listitem></varlistentry> <varlistentry><term>-r <replaceable><device number></replaceable></term> <listitem><para>Root device specification. /dev/ram is 0x0101</para></listitem></varlistentry> <varlistentry><term>-l <replaceable><type></replaceable></term> <listitem><para>Loader type</para></listitem></varlistentry> </variablelist> <para>Finally the kernel entry address can be specified as an optional argument. The default is 0x8c102000</para> <para> On the SE7751, Linux expects to be loaded at address 0x8c101000 with the entry point at 0x8c102000. This is configurable in the kernel using the CONFIG_MEMORY_START option. </para> </sect2> <sect2> <title>Memory Maps </title> <para>RedBoot sets up the following memory map on the SE7751 board.<programlisting> Physical Address Range Description ----------------------- ----------- 0x80000000 - 0x803fffff Flash (MBM29LV160) 0x81000000 - 0x813fffff EPROM (M27C800) 0x8c000000 - 0x8fffffff SDRAM 0xb8000000 - 0xb8ffffff PCMCIA (MaruBun) 0xb9000000 - 0xb9ffffff Switches 0xba000000 - 0xbaffffff LEDs 0xbd000000 - 0xbdffffff PCI MEM space 0xbe200000 - 0xbe23ffff PCI Ctrl space 0xbe240000 - 0xbe27ffff PCI IO space </programlisting></para> </sect2> <sect2> <title>Ethernet Driver</title> <para>The ethernet driver uses a hardwired ESA which can, at present, only be changed in CDL.</para> </sect2> <sect2> <title>Resource Usage </title> <para>The flash based RedBoot image occupies flash addresses 0x80000000 - 0x8001ffff. RedBoot also reserves RAM (0x8c000000 - 0x8c01ffff) for RedBoot runtime uses. RAM based RedBoot configurations are designed to run from RAM at physical addresses 0x8c020000 - 0x8c07ffff. RAM physical addresses from 0x8c080000 to the end of RAM are available for general use, such as a temporary scratchpad for downloaded images, before they are written to flash.</para> </sect2> <sect2> <title>Rebuilding RedBoot</title> <para>The instructions in <xref linkend="Rebuilding-Redboot"> should be followed. The values for TARGET, ARCH_DIR and PLATFORM_DIR on this platform are “se7751”, “sh” and “se7751” respectively. Note that the configuration export files supplied in the <computeroutput> hal/sh/se7751/<replaceable>VERSION</replaceable>/misc</computeroutput> directory in the RedBoot source tree should be used.</para> </sect2> </sect1> <?Pub _newpage> <sect1 id="hs7729pci"> <title>Hitachi HS7729PCI</title> <sect2> <title>Overview</title> <para><indexterm><primary>Hitachi SH HS7729PCI</primary><secondary>installing and testing</secondary></indexterm><indexterm><primary>installing and testing </primary><secondary>Hitachi SH HS7729PCI</secondary></indexterm>RedBoot uses the COM1 and COM2 serial ports (and the debug port on the motherboard). The default serial port settings are 38400,8,N,1. Ethernet is also supported using a D-Link DFE-530TX PCI plugin card.</para> <para>Management of onboard flash is also supported. Two basic RedBoot configurations are supported: <itemizedlist> <listitem><para>RedBoot running from RAM with RedBoot in the flash boot sector. </para> </listitem> <listitem><para>RedBoot running from the board's flash boot sector. </para> </listitem> </itemizedlist></para> </sect2> <sect2> <title>Initial Installation Method </title> <para>A copy of the ROM startup version of RedBoot must be programmed into the two EPROMs. Two files with a split version of the ROM image is provided: it is also possible to recreate these from the redboot.bin file, but requires the split_word.c program in hal/sh/hs7729pci/<replaceable>VERSION</replaceable>/misc to be built and executed with the redboot.bin filename as sole argument.</para> <para>After doing this it is advised that another ROM version of RedBoot is programmed into the flash, and that copy be used for booting the board. This allows for software programmed updates of RedBoot instead of having to reprogram the EPROMs.</para> <orderedlist> <listitem><para>Program the EPROMs with RedBoot. The .lo image should go in socket M1 and the .hi image in socket M2. </para> </listitem> <listitem><para>Set switch SW1-6 to ON [boot from EPROM]</para> </listitem> <listitem><para>Follow the instructions under Flash management for updating the flash copy of RedBoot, but use <programlisting>-f 0x80400000</programlisting> due to setting of the SW1-6 switch.</para> </listitem> <listitem><para>Set switch SW1-6 to OFF [boot from flash] and reboot the board. You should now see the RedBoot banner. At this time you may want to issue the command <programlisting>fis init</programlisting> to initialize the flash table with the correct addresses.</para> </listitem> </orderedlist> </sect2> <sect2> <title>Flash management</title> <sect3> <title>Updating the primary RedBoot image</title> <para>To update the primary RedBoot images, follow the procedures detailed in <xref linkend="update-primary-image">, but the actual numbers used with the flags in the sample commands should be: <programlisting>-f 0x80000000 -b 0x8c080000 -l 0x20000</programlisting></para> </sect3> <sect3> <title>Updating the secondary RedBoot image</title> <para>To update the secondary RedBoot images, follow the procedures detailed in <xref linkend="different-version-from-RAM">, but the actual numbers used with the flags in the sample commands should be: <programlisting> -f 0x80020000 -b 0x8c020000 -r 0x8c020000 -l 0x20000 </programlisting></para> </sect3></sect2> <sect2> <title>Special RedBoot Commands </title> <para>The <command>exec</command> command which allows the loading and execution of Linux kernels is supported for this board (see <xref linkend="executing-programs">). The <command> exec</command> parameters used for the HS7729PCI are:</para> <variablelist> <varlistentry> <term>-b <replaceable><addr></replaceable></term> <listitem><para>Parameter block address. This is normally the first page of the kernel image and defaults to 0x8c101000</para></listitem></varlistentry> <varlistentry><term>-i <replaceable><addr></replaceable></term> <listitem><para>Start address of initrd image</para></listitem></varlistentry> <varlistentry><term>-j <replaceable><size></replaceable></term> <listitem><para>Size of initrd image</para></listitem></varlistentry> <varlistentry><term>-c <replaceable>"args"</replaceable></term> <listitem><para>Kernel arguments string</para></listitem></varlistentry> <varlistentry><term> -m <replaceable><flags></replaceable></term> <listitem><para>Mount rdonly flags. If set to a non-zero value the root partition will be mounted read-only.</para></listitem></varlistentry> <varlistentry><term> -f <replaceable><flags></replaceable></term> <listitem><para>RAM disk flags. Should normally be 0x4000</para></listitem></varlistentry> <varlistentry><term>-r <replaceable><device number></replaceable></term> <listitem><para>Root device specification. /dev/ram is 0x0101</para></listitem></varlistentry> <varlistentry><term>-l <replaceable><type></replaceable></term> <listitem><para>Loader type</para></listitem></varlistentry> </variablelist> <para>Finally the kernel entry address can be specified as an optional argument. The default is 0x8c102000</para> <para> On the HS7729PCI, Linux expects to be loaded at address 0x8c101000 with the entry point at 0x8c102000. This is configurable in the kernel using the CONFIG_MEMORY_START option. </para> </sect2> <sect2> <title>Memory Maps </title> <para>RedBoot sets up the following memory map on the HS7729PCI board.<programlisting> Physical Address Range Description ----------------------- ----------- 0x80000000 - 0x803fffff Flash (MBM29LV160) 0x80400000 - 0x807fffff EPROM (M27C800) 0x82000000 - 0x82ffffff SRAM 0x89000000 - 0x89ffffff SRAM 0x8c000000 - 0x8fffffff SDRAM 0xa8000000 - 0xa800ffff SuperIO (FDC37C935A) 0xa8400000 - 0xa87fffff USB function (ML60851C) 0xa8800000 - 0xa8bfffff USB host (SL11HT) 0xa8c00000 - 0xa8c3ffff Switches 0xa8c40000 - 0xa8c7ffff LEDs 0xa8c80000 - 0xa8cfffff Interrupt controller 0xb0000000 - 0xb3ffffff PCI (SD0001) 0xb8000000 - 0xbbffffff PCMCIA (MaruBun) </programlisting></para> </sect2> <sect2> <title>Resource Usage </title> <para>The flash based RedBoot image occupies flash addresses 0x80000000 - 0x8001ffff. RedBoot also reserves RAM (0x8c000000 - 0x8c01ffff) for RedBoot runtime uses. RAM based RedBoot configurations are designed to run from RAM at physical addresses 0x8c020000 - 0x8c07ffff. RAM physical addresses from 0x8c080000 to the end of RAM are available for general use, such as a temporary scratchpad for downloaded images, before they are written to flash.</para> </sect2> <sect2> <title>Rebuilding RedBoot</title> <para>The instructions in <xref linkend="Rebuilding-Redboot"> should be followed. The values for TARGET, ARCH_DIR and PLATFORM_DIR on this platform are “hs7729pci”, “sh” and “hs7729pci” respectively. Note that the configuration export files supplied in the <computeroutput> hal/sh/hs7729pci/<replaceable>VERSION</replaceable>/misc</computeroutput> directory in the RedBoot source tree should be used.</para> </sect2> </sect1> <?Pub _newpage> <sect1 id="at91"> <title>Atmel AT91 Evaluation Board (EB40)</title> <sect2> <title>Overview</title> <para><indexterm><primary>Atmel AT91/EB40</primary> <secondary>installing and testing</secondary></indexterm><indexterm><primary> installing and testing</primary><secondary>Atmel AT91/EB40 </secondary></indexterm>RedBoot supports both serial ports. The default serial port settings are 38400,8,N,1. RedBoot also supports minimal flash management on the EB40. However, since the flash device (AT29LV1024) is so small (only the upper 64K is available for general use), only 'fconfig' is supported, along with the simple flash write command, 'fis write'. Two basic RedBoot configurations are supported: <itemizedlist> <listitem><para>RedBoot running from RAM, but contained in the board's flash boot sector (ROMRAM mode).</para> </listitem> <listitem><para>RedBoot running from RAM with RedBoot in the flash boot sector. </para> </listitem> </itemizedlist> The RAM version is only used during the initialization of RedBoot the first time. </para> </sect2> <sect2> <title>Initial Installation Method </title> <para> This development board comes with ARM's debug tool, Angel, installed in flash. At this time, Angel will not be replaced. Rather, RedBoot will be placed in the alternate half of flash. Switch SW1 is used which monitor to boot. Selecting SW1 to "lower mem" will choose Angel. Select SW1 to "Upper mem" for RedBoot once it has been installed. </para> <para> Set SW1 to "lower mem" and connect serial port A to a host computer. Using GDB from the host and Angel on the board, download the RAM based version of RedBoot to the board. Once this is started, the Angel session must be interrupted (on Linux this can be done using ^Z). Follow this by connecting to the board using minicom at 38400-8N1. At this point, RedBoot will be running on the board in RAM. Now, download the ROMRAM version and program it to flash. Be sure and first set SW1 to "upper mem". <programlisting> arm-elf-gdb redboot_RAM.elf (gdb) tar rdi s=/dev/ttyS0 Angel Debug Monitor (serial) 1.04 (Advanced RISC Machines SDT 2.5) for AT91EB40 (2.00) Angel Debug Monitor rebuilt on Apr 07 2000 at 12:40:31 Serial Rate: 9600 Connected to ARM RDI target. (gdb) set $ps=0xd3 (gdb) lo Loading section .rom_vectors, size 0x40 lma 0x2020000 Loading section .text, size 0x7fd8 lma 0x2020040 Loading section .rodata, size 0x15a0 lma 0x2028018 Loading section .data, size 0x2e4 lma 0x20295b8 Start address 0x2020040 , load size 39068 Transfer rate: 6250 bits/sec, 500 bytes/write. (gdb) c Continuing. </programlisting> At this point, interrupt the Angel session and start minicom. <programlisting> RedBoot> <userinput>ve</userinput> RedBoot(tm) bootstrap and debug environment [RAM] Red Hat certified release, version R1.xx - built 14:09:27, Jul 20 2001 Platform: Atmel AT91/EB40 (ARM7TDMI) Copyright (C) 2000, 2001, Red Hat, Inc. RAM: 0x02000000-0x02080000, 0x020116d8-0x0207fd00 available FLASH: 0x01010000 - 0x01020000, 256 blocks of 0x00000100 bytes each. RedBoot> <userinput>load -m ymodem -b 0x02040000</userinput> </programlisting> Use minicom to send the file redboot_ROMRAM.srec via YModem. <programlisting> RedBoot> <userinput>fi wr -f 0x01010000 -b 0x02040000 -l 0xe000</userinput> </programlisting> Set switch SW1 to "upper mem", press the "reset" pushbutton and RedBoot should come up on the board. </para> </sect2> <sect2> <title>Flash management</title> <sect3> <title>Updating the RedBoot image in flash</title> <para> Since the primary RedBoot runs from RAM, it can be used to update itself directly. Simply follow the steps above, starting with a connection to RedBoot running on the board. </para> </sect3> </sect2> <sect2> <title>Special RedBoot Commands </title> <para>None.</para> </sect2> <sect2> <title>Memory Maps </title> <para>This processor has no MMU, so the only memory map is for physical addresses. <programlisting> Physical Address Range Description ----------------------- ---------------------------------- 0x00000000 - 0x00000fff On-chip SRAM 0x01000000 - 0x0101ffff Flash 0x02000000 - 0x0207ffff RAM 0xffe00000 - 0xffffffff I/O registers The flash based RedBoot image occupies virtual addresses 0x01010000 - 0x0101dfff </programlisting></para> </sect2> <sect2> <title>Resource Usage </title> <para>The RAM based RedBoot image occupies RAM addresses 0x02020000 - 0x0203ffff. RAM addresses from 0x02040000 to the end of RAM are available for general use such as a temporary scratchpad for downloaded images before they are written to flash. </para> </sect2><sect2> <title>Rebuilding RedBoot</title> <para>The instructions in <xref linkend="Rebuilding-Redboot"> should be followed. The values for PLATFORM_DIR on this platform is “at91”. The value for TARGET is “eb40”. Note that the configuration export files supplied in the <computeroutput> hal/arm/at91/<replaceable>VERSION</replaceable>/misc</computeroutput> directory in the RedBoot source tree should be used. The ROMRAM configuration should be used to build the RedBoot image to be programmed into flash. The RAM configuration is used for the initial download of RedBoot. </para> </sect2> </sect1> <?Pub _newpage> <sect1 id="asb2305"> <title>Matsushita MN103E010 (AM33/2.0) ASB2305 Board</title> <sect2> <title>Overview</title> <para> <indexterm> <primary>Matsushita MN103E010 (AM33/2.0) ASB2305 Board</primary> <secondary>installing and testing</secondary> </indexterm> <indexterm> <primary>installing and testing</primary> <secondary>Matsushita MN103E010 (AM33/2.0) ASB2305 Board</secondary> </indexterm> RedBoot supports the debug serial port and the built in ethernet port for communication and downloads. The default serial port settings are 115200,8,N,1 with RTS/CTS flow control. RedBoot can run from either flash, and can support flash management for either the boot PROM or the system flash regions. These configurations are supported: <itemizedlist> <listitem><para>RedBoot running from the boot PROM and able to access the system flash (the redboot_ROM.bin image should be used for this).</para> </listitem> <listitem><para>RedBoot running from the system flash and able to access the boot PROM (the redboot_FLASH.bin image should be used for this).</para> </listitem> <listitem><para>RedBoot running from RAM and able to access the boot PROM (the redboot_RAM.bin image should be used for this).</para> </listitem> </itemizedlist> </para></sect2> <sect2> <title>Initial Installation</title> <para>Unless a pre-programmed system flash module is available to be plugged into a new board, RedBoot must be installed with the aid of a JTAG interface unit. To achieve this, the RAM based RedBoot must be loaded directly into RAM by JTAG and started, and then <emphasis>that</emphasis> must be used to store the ROM based RedBoot into the boot PROM.</para> <para>These instructions assume that you have binary images of the RAM-based and boot PROM-based RedBoot images available.</para> <sect3> <title>Preparing to program the board</title> <para>If the board is to be programmed, whether via JTAG or RedBoot, some hardware settings need to be changed:</para> <itemizedlist> <listitem> <para>Jumper across ST18 on the board to allow write access to the boot PROM.</para> </listitem> <listitem> <para>Set DIP switch S1-3 to OFF to allow RedBoot to write to the system flash.</para> </listitem> <listitem> <para>Set the switch S5 (on the front of the board) to boot from whichever flash is <emphasis>not</emphasis> being programmed. Note that the RedBoot image cannot access the flash from which it is currently executing (it can only access the other flash).</para> </listitem> </itemizedlist> <para> The RedBoot binary image files should also be copied to the TFTP pickup area on the host providing TFTP services if that is how RedBoot should pick up the images it is going to program into the flash. Alternatively, the images can be passed by YMODEM over the serial link. </para> </sect3> <sect3> <title>Preparing to use the JTAG debugger</title> <para>The JTAG debugger will also need setting up:</para> <orderedlist> <listitem><para>Install the JTAG debugger software (WICE103E) on a PC running Windows (WinNT is probably the best choice for this) in “C:/PanaX”.</para> </listitem> <listitem><para>Install the Matsushita provided “project” into the “C:/Panax/wice103e/prj” directory.</para> </listitem> <listitem><para>Install the RedBoot image files into the “C:/Panax/wice103e/prj” directory under the names redboot.ram and redboot.prom.</para> </listitem> <listitem><para>Make sure the PC's BIOS has the parallel port set to full bidirectional mode.</para> </listitem> <listitem><para>Connect the JTAG debugger to the PC's parallel port.</para> </listitem> <listitem><para>Connect the JTAG debugger to the board.</para> </listitem> <listitem><para>Set the switch on the front of the board to boot from “boot PROM”.</para> </listitem> <listitem><para>Power up the JTAG debugger and then power up the board.</para> </listitem> <listitem><para>Connect the board's Debug Serial port to a computer by a null modem cable.</para> </listitem> <listitem><para>Start minicom or some other serial communication software and set for 115200 baud, 1-N-8 with hardware (RTS/CTS) flow control.</para> </listitem> </orderedlist> </sect3> <sect3> <title>Loading the RAM-based RedBoot via JTAG</title> <para>To perform the first half of the operation, the following steps should be followed:</para> <orderedlist> <listitem><para>Start the JTAG debugger software.</para> </listitem> <listitem> <para>Run the following commands at the JTAG debugger's prompt to set up the MMU registers on the CPU.</para> <programlisting> ed 0xc0002000, 0x12000580 ed 0xd8c00100, 0x8000fe01 ed 0xd8c00200, 0x21111000 ed 0xd8c00204, 0x00100200 ed 0xd8c00208, 0x00000004 ed 0xd8c00110, 0x8400fe01 ed 0xd8c00210, 0x21111000 ed 0xd8c00214, 0x00100200 ed 0xd8c00218, 0x00000004 ed 0xd8c00120, 0x8600ff81 ed 0xd8c00220, 0x21111000 ed 0xd8c00224, 0x00100200 ed 0xd8c00228, 0x00000004 ed 0xd8c00130, 0x8680ff81 ed 0xd8c00230, 0x21111000 ed 0xd8c00234, 0x00100200 ed 0xd8c00238, 0x00000004 ed 0xd8c00140, 0x9800f801 ed 0xd8c00240, 0x00140000 ed 0xd8c00244, 0x11011100 ed 0xd8c00248, 0x01000001 ed 0xda000000, 0x55561645 ed 0xda000004, 0x000003c0 ed 0xda000008, 0x9000fe01 ed 0xda00000c, 0x9200fe01 ed 0xda000000, 0xa89b0654 </programlisting> </listitem> <listitem> <para>Run the following commands at the JTAG debugger's prompt to tell it what regions of the CPU's address space it can access:</para> <programlisting> ex 0x80000000,0x81ffffff,/mexram ex 0x84000000,0x85ffffff,/mexram ex 0x86000000,0x867fffff,/mexram ex 0x86800000,0x87ffffff,/mexram ex 0x8c000000,0x8cffffff,/mexram ex 0x90000000,0x93ffffff,/mexram </programlisting> </listitem> <listitem><para>Instruct the debugger to load the RAM RedBoot image into RAM:</para> <programlisting> _pc=90000000 u_pc rd redboot.ram,90000000 </programlisting> </listitem> <listitem><para>Load the boot PROM RedBoot into RAM:</para> <programlisting> rd redboot.prom,91020000 </programlisting> </listitem> <listitem><para>Start RedBoot in RAM:</para> <programlisting> g </programlisting> <para>Note that RedBoot may take some time to start up, as it will attempt to query a BOOTP or DHCP server to try and automatically get an IP address for the board. Note, however, that it should send a plus over the serial port immediately, and the 7-segment LEDs should display “rh 8”.</para> </listitem> </orderedlist> </sect3> <sect3> <title>Loading the boot PROM-based RedBoot via the RAM RedBoot</title> <para>Once the RAM RedBoot is up and running, it can be communicated with by way of the serial port. Commands can now be entered directly to RedBoot for flashing the boot PROM.</para> <orderedlist> <listitem><para>Instruct RedBoot to initialise the boot PROM:</para> <programlisting> fi init </programlisting> </listitem> <listitem><para>Write the previously loaded redboot.prom image into the boot PROM:</para> <programlisting> fi write -f 0x80000000 -b 0x91020000 -l 0x00020000 </programlisting> </listitem> <listitem><para>Check that RedBoot has written the image:</para> <programlisting> dump -b 0x91020000 dump -b 0x80000000 </programlisting> <para>Barring the difference in address, the two dumps should be the same.</para> </listitem> <listitem><para>Close the JTAG software and power-cycle the board. The RedBoot banners should be displayed again over the serial port, followed by the RedBoot prompt. The boot PROM-based RedBoot will now be running.</para> </listitem> <listitem><para>Power off the board and unjumper ST18 to write-protect the contents of the boot PROM. Then power the board back up.</para> </listitem> <listitem><para>Run the following command to initialise the system flash:</para> <programlisting> fi init </programlisting> <para>Then program the system flash based RedBoot into the system flash:</para> <programlisting> load -r -b 0x91020000 /tftpboot/redboot_FLASH.bin fi write -f 0x84000000 -b 0x91020000 -l 0x00020000 </programlisting> <note> <title>NOTE</title> <para>RedBoot arranges the flashes on booting such that they always appear at the same addresses, no matter which one was booted from.</para> </note> </listitem> <listitem> <para>A similar sequence of commands can be used to program the boot PROM when RedBoot has been booted from an image stored in the system flash. </para> <programlisting> load -r -b 0x91020000 /tftpboot/redboot_ROM.bin fi write -f 0x80000000 -b 0x91020000 -l 0x00020000 </programlisting> <para>See <xref linkend="Persistent-State-Flash"> for details on configuring the RedBoot in general, and also <xref linkend="Flash-Image-System"> for more details on programming the system flash.</para> </listitem> </orderedlist> </sect3> </sect2> <sect2> <title>Additional Commands</title> <para>The <command>exec</command> command which allows the loading and execution of Linux kernels, is supported for this architecture (see <xref linkend="executing-programs">). The <command>exec</command> parameters used for ASB2305 board are:</para> <variablelist> <varlistentry><term> -w <replaceable><time></replaceable></term> <listitem><para>Wait time in seconds before starting kernel</para></listitem></varlistentry> <varlistentry><term> -c <replaceable>"params"</replaceable></term> <listitem><para>Parameters passed to kernel</para></listitem></varlistentry> <varlistentry><term><replaceable><addr></replaceable></term> <listitem><para>Kernel entry point, defaulting to the entry point of the last image loaded</para></listitem></varlistentry> </variablelist> <para>The parameter string is stored in the on-chip memory at location 0x8C001000, and is prefixed by “cmdline:” if it was supplied.</para> </sect2> <sect2> <title>Memory Maps </title> <para>RedBoot sets up the following memory map on the ASB2305 board.</para> <note> <title>NOTE</title> <para>The regions mapped between 0x80000000-0x9FFFFFFF are cached by the CPU. However, all those regions can be accessed uncached by adding 0x20000000 to the address.</para> </note> <programlisting> Physical Address Range Description ----------------------- ----------- 0x80000000 - 0x9FFFFFFF Cached Region 0x80000000 - 0x81FFFFFF Boot PROM 0x84000000 - 0x85FFFFFF System Flash 0x86000000 - 0x86007FFF 64Kbit Sys Config EEPROM 0x86F90000 - 0x86F90003 4x 7-segment LEDs 0x86FA0000 - 0x86FA0003 Software DIP Switches 0x86FB0000 - 0x86FB001F PC16550 Debug Serial Port 0x8C000000 - 0x8FFFFFFF On-Chip Memory (repeated 16Kb SRAM) 0x90000000 - 0x93FFFFFF SDRAM 0x98000000 - 0x9BFFFFFF Paged PCI Memory Space (64Mb) 0x9C000000 - 0x9DFFFFFF PCI Local SRAM (32Mb) 0x9E000000 - 0x9E03FFFF PCI I/O Space 0x9E040000 - 0x9E0400FF AM33-PCI Bridge Registers 0x9FFFFFF4 - 0x9FFFFFF7 PCI Memory Page Register 0x9FFFFFF8 - 0x9FFFFFFF PCI Config Registers 0xA0000000 - 0xBFFFFFFF Uncached Mirror Region 0xC0000000 - 0xDFFFFFFF CPU Control Registers </programlisting> <para>The ASB2305 HAL makes use of the on-chip memory in the following way:</para> <programlisting> 0x8C000000 - 0x8C0000FF hal_vsr_table 0x8C000100 - 0x8C0001FF hal_virtual_vector_table 0x8C001000 - Linux command line (RedBoot exec command) - 0x8C003FFF Emergency DoubleFault Exception Stack </programlisting> <para>Currently the CPU's interrupt table lies at the beginning of the RedBoot image, which must therefore be aligned to a 0xFF000000 mask.</para> </sect2> <sect2> <title>Resource Usage </title> <para>The flash based RedBoot image occupies flash addresses 0x80000000 - 0x8001ffff. RedBoot also reserves RAM (0x90000000 - 0x9001ffff) for RedBoot runtime uses. RAM based RedBoot configurations are designed to run from RAM at physical addresses 0x90000000 - 0x9001ffff. RAM physical addresses from 0x90050000 to the end of RAM are available for general use, such as a temporary scratchpad for downloaded images, before they are written to flash.</para> <note> <title>NOTE</title> <para>The location at which RedBoot can be started is highly restricted due to the way in which the address of the Trap Vector Table is specified to the CPU.</para> </note> </sect2><sect2> <title>Rebuilding RedBoot</title> <para>The instructions in <xref linkend="Rebuilding-RedBoot"> should be followed. The values for TARGET, ARCH_DIR and PLATFORM_DIR on this platform are “asb2305”, “mn10300” and “asb2305” respectively. Note that the configuration export files supplied in the <computeroutput> hal/mn10300/asb2305/<replaceable>VERSION</replaceable>/misc</computeroutput> directory in the RedBoot source tree should be used.</para> </sect2> </sect1> <?Pub _newpage> <sect1 id="aaed2000"> <title>Agilent AAED2000 ARM9 (aaed) </title> <sect2> <title>Overview</title> <para><indexterm><primary>Agilent AAED2000 ARM9 (aaed)</primary> <secondary>installing and testing</secondary></indexterm><indexterm><primary> installing and testing</primary><secondary>Agilent AAED2000 ARM9 (aaed) </secondary></indexterm>RedBoot supports the serial and ethernet ports on the board. The default serial port settings are 38400,8,N,1. RedBoot also supports flash management on the AAED2000. Two basic RedBoot configurations are supported: <itemizedlist> <listitem><para>RedBoot being automatically executed by the on-board ARM Boot Monitor, running from RAM.</para> </listitem> <listitem><para>RedBoot running from RAM with RedBoot in the flash boot sector. </para> </listitem> </itemizedlist></para> </sect2> <sect2> <title>Initial Installation Method </title> <para>It is possible to install RedBoot in one of two ways. Either as the primary bootmonitor on the board (installed to blocks 0-1 of the flash) or as the secondary bootmonitor on the board (installed to blocks 1-2 of the flash).</para> <para>Presently, only the former method is supported.</para> <!-- Nuke the above line if uncommenting this block <para>When installed as the secondary bootmonitor, the ARM bootmonitor remains in flash and auto-executes RedBoot (but only when RedBoot is smaller than 128KB - which means it cannot include the LCD driver). It is of crucial importance that no RedBoot configured to be primary bootmonitor is executed on a board where RedBoot is actually supposed to be the secondary bootmonitor since it may cause corruption of the flash. Installing RedBoot as the primary booter is adviced.</para> --> <sect3><title>RedBoot as Primary Bootmonitor</title> <para>RedBoot is installed in flash using the on-board ARM Boot Monitor.</para> <para>Boot the board while pressing SPACE. This should bring up the Boot Monitor: <programlisting>ARM bootPROM [Version 1.3] Rebuilt on Jul 16 2001 at 16:21:36 Running on a P920 board Evaluation Board Board Revision V1.0, ARM920T processor Processor Memory Size is 32MBytes, Flash Size is 32MBytes Copyright (c) ARM Limited 1999 - 2001. All rights reserved. Board designed by ARM Limited Hardware support provided at http://www.arm.com/ For help on the available commands type ? or h boot Monitor > </programlisting> Download the RAM startup version of RedBoot configured as a primary bootmonitor using the ARM bootmonitor's SREC-download command: <programlisting>boot Monitor > <userinput>m</userinput> Load Motorola S-Record image into memory and execute it The S-Record loader only accepts input on the serial port. Record addresses must be between 0x00008000 and 0x01E0F510. Type Ctrl/C to exit loader. </programlisting> Use the terminal emulator's ASCII upload command, or (on Linux) simply cat the file to the serial port: <programlisting>$ <userinput>cat redboot_primary_RAM/redboot.srec >/dev/ttyS1</userinput> </programlisting> You should see RedBoot start up: <programlisting>FLASH configuration checksum error or invalid key Ethernet eth0: MAC address 00:30:d3:03:04:99 IP: 192.168.42.111, Default server: 192.168.42.3 RedBoot(tm) bootstrap and debug environment [RAM] Non-certified release, version UNKNOWN - built 13:15:40, Nov 9 2001 Platform: AAED2000 system (ARM9) [Primary] Copyright (C) 2000, 2001, Red Hat, Inc. RAM: 0x00000000-0x01f80000, 0x0006f208-0x01f51000 available FLASH: 0x60000000 - 0x62000000, 256 blocks of 0x00020000 bytes each. RedBoot></programlisting> As can be seen from the output above, the network has been configured to give the board an IP address and information about the default server. If things are not set up on your network, you can still continue, but use the Y-modem download method when loading the RedBoot ROMRAM image. Now initialize RedBoot's FIS: <programlisting>RedBoot> <userinput>fi init</userinput> About to initialize [format] FLASH image system - continue (y/n)? <userinput>y</userinput> *** Initialize FLASH Image System Warning: device contents not erased, some blocks may not be usable ... Erase from 0x61fe0000-0x62000000: . ... Program from 0x01f5f000-0x01f5f300 at 0x61fe0000: . </programlisting> Download the ROMRAM version of RedBoot via ethernet: <programlisting>RedBoot> <userinput>load -b 0x100000 redboot_primary_ROMRAM/redboot.srec</userinput> </programlisting> or using serial Y-modem protocol: <programlisting>RedBoot> <userinput>load -mode ymodem -b 0x100000</userinput> </programlisting> (Use the terminal emulator's Y-modem upload command to send the file <filename>redboot_primary_ROMRAM/redboot.srec</filename>.) When the image has been downloaded, program it into flash: <programlisting>Address offset = 0x00ff8000 Entry point: 0x00008040, address range: 0x00008000-0x0002da80 RedBoot> <userinput>fi cr RedBoot -b 0x100000</userinput> An image named 'RedBoot' exists - continue (y/n)? <userinput>y</userinput> * CAUTION * about to program 'RedBoot' at 0x60000000..0x6003ffff from 0x00100000 - continue (y/n)? <userinput>y</userinput> ... Erase from 0x60000000-0x60040000: .. ... Program from 0x00100000-0x00140000 at 0x60000000: .. ... Erase from 0x61fe0000-0x62000000: . ... Program from 0x01f5f000-0x01f7f000 at 0x61fe0000: . </programlisting> Now reset the board. You should see the RedBoot banner.</para> </sect3> <!-- <sect3><title>RedBoot as Secondary Bootmonitor</title> <para>RedBoot is installed in flash using the on-board ARM Boot Monitor.</para> <para>Boot the board while pressing SPACE. This should bring up the Boot Monitor: <programlisting>ARM bootPROM [Version 1.3] Rebuilt on Jul 16 2001 at 16:21:36 Running on a P920 board Evaluation Board Board Revision V1.0, ARM920T processor Processor Memory Size is 32MBytes, Flash Size is 32MBytes Copyright (c) ARM Limited 1999 - 2001. All rights reserved. Board designed by ARM Limited Hardware support provided at http://www.arm.com/ For help on the available commands type ? or h boot Monitor > </programlisting> Download the RAM startup version of RedBoot configured as a secondary bootmonitor using the ARM bootmonitor's SREC-download command: <programlisting>boot Monitor > <userinput>m</userinput> Load Motorola S-Record image into memory and execute it The S-Record loader only accepts input on the serial port. Record addresses must be between 0x00008000 and 0x01E0F510. Type Ctrl/C to exit loader. </programlisting> Use the terminal emulator's ASCII upload command, or (on Linux) simply cat the file to the serial port: <programlisting>$ <userinput>cat redboot_secondary_RAM.srec >/dev/ttyS1</userinput> </programlisting> You should see RedBoot start up: <programlisting>FLASH configuration checksum error or invalid key Ethernet eth0: MAC address 00:30:d3:03:04:99 IP: 192.168.42.111, Default server: 192.168.42.3 RedBoot(tm) bootstrap and debug environment [RAM] Non-certified release, version UNKNOWN - built 12:31:13, Nov 9 2001 Platform: AAED2000 system (ARM9) [Secondary] Copyright (C) 2000, 2001, Red Hat, Inc. RAM: 0x00000000-0x01f80000, 0x00063568-0x01f51000 available FLASH: 0x60000000 - 0x62000000, 256 blocks of 0x00020000 bytes each. </programlisting> As can be seen from the output above, the network has been configured to give the board an IP address and information about the default server. If things are not set up on your network, you can still continue, but use the Y-modem download method when loading the RedBoot ROMRAM image. Next step is to erase all of the flash, except where the ARM booter resides: <programlisting>RedBoot> <userinput>fi erase -f 0x60020000 -l 0x01fe0000</userinput> ... Erase from 0x60020000-0x62000000: .......................................... ................................................................................ ................................................................................ ..................................................... </programlisting> Then initialize RedBoot's FIS: <programlisting>RedBoot> <userinput>fi init</userinput> About to initialize [format] FLASH image system - continue (y/n)? <userinput>y</userinput> *** Initialize FLASH Image System Warning: device contents not erased, some blocks may not be usable ... Erase from 0x61fc0000-0x61fe0000: . ... Program from 0x01fdf000-0x01fff000 at 0x61fc0000: . </programlisting> Download the ROMRAM version of RedBoot via ethernet: <programlisting>RedBoot> <userinput>load -raw -b 0x100000 redboot_secondary_ROMRAM.arm.bin</userinput> </programlisting> or using serial Y-modem protocol: <programlisting>RedBoot> <userinput>load -raw -mode ymodem -b 0x100000</userinput> </programlisting> (Use the terminal emulator's Y-modem upload command to send the file <filename>redboot_secondary_ROMRAM.arm.bin</filename>.) When the image has been downloaded, program it into flash: <programlisting>RedBoot> <userinput>fi cr RedBoot -b 0x100000</userinput> An image named 'RedBoot' exists - continue (y/n)? <userinput>y</userinput> * CAUTION * about to program 'RedBoot' at 0x60020000..0x6005ffff from 0x00100000 - continue (y/n)? <userinput>y</userinput> ... Erase from 0x60020000-0x60060000: .. ... Program from 0x00100000-0x00140000 at 0x60020000: .. ... Erase from 0x61fc0000-0x61fe0000: . ... Program from 0x01f5f000-0x01f7f000 at 0x61fc0000: . </programlisting> Now reset the board. You might see the ARM Monitor complain: <programlisting>Failed to boot from flash. The ARM Boot Monitor SIB can not be found. Press any key to continue. </programlisting> This is due to due to the flash having been erased. Press a key, and execute the "validate flash contents" command: <programlisting>boot Monitor > <userinput>v</userinput> There are 254 128KByte blocks of Application Flash: No images found! ================ System Information Blocks ========================= Address Owner Size Idx Rev ~~~~~~~ ~~~~~ ~~~~ ~~~ ~~~ 0x05FE0000 ARM Boot Monitor 312 0 0 Blocks of unknown type ====================== Block Size Footer Type ~~~~~ ~~~~ ~~~~~~~~~~~ 252 1 0x52420000 boot Monitor > </programlisting> This causes the last block of the flash to be initialized with the ARM Boot Monitor ID, necessary for the Monitor to work properly. When resetting the board now, it should automatically start RedBoot. If you ever need to get into the ARM Boot Monitor again, reset the board while pressing the SPACE key. </para></sect3> --> </sect2> <sect2> <title>Flash management</title> <sect3> <title>Updating the RedBoot image</title> <para> Since the RedBoot image is a ROMRAM-startup type, it is not necessary to load and run the RAM startup RedBoot image to update the image in flash. Doing so causes no harm though - but ignoring the step saves some time. </para> <para>To update the primary RedBoot image, follow the procedures detailed in <xref linkend="update-primary-image">, but let RedBoot find the correct flash address (the -f option) since this is different between the bootmonitor configurations. If specifying it, be sure to get it right - the actual numbers used with the flags in the sample commands should for a RedBoot image configured to be the primary bootmonitor be: <programlisting> -f 0x60000000 -b 0x100000 -l 0x40000 </programlisting> <!-- And for a RedBoot image configured to be the secondary bootmonitor: <programlisting> -f 0x60020000 -b 0x100000 -l 0x40000 </programlisting> --> </para> </sect3></sect2> <sect2> <title>Special RedBoot Commands </title> <para>The <command>exec</command> command which allows the loading and execution of Linux kernels, is supported for this board (see <xref linkend="executing-programs">). The <command> exec</command> parameters used for the AAED2000 are:</para> <variablelist><varlistentry> <term>-b <replaceable><addr></replaceable></term> <listitem><para>Location Linux kernel was loaded to</para></listitem></varlistentry> <varlistentry><term> -l <replaceable><len></replaceable></term> <listitem><para>Length of kernel</para></listitem></varlistentry> <varlistentry><term> -c <replaceable>"params"</replaceable></term> <listitem><para>Parameters passed to kernel</para></listitem></varlistentry> <varlistentry><term>-r <replaceable><addr></replaceable></term> <listitem><para>'initrd' ramdisk location</para></listitem></varlistentry> <varlistentry><term>-s <replaceable><len></replaceable></term> <listitem><para>Length of initrd ramdisk</para></listitem></varlistentry> </variablelist> <para>The parameters for kernel image base and size are automatically set after a load operation. So one way of starting the kernel would be: <programlisting>RedBoot> load -r -b 0x100000 zImage Raw file loaded 0x00100000-0x001a3d6c RedBoot> exec -c "console=ttyAC0,38400" Using base address 0x00100000 and length 0x000a3d6c Uncompressing Linux..... </programlisting> An image could also be put in flash and started directly: <programlisting>RedBoot> exec -b 0x60040000 -l 0xc0000 -c "console=ttyAC0,38400" Uncompressing Linux..... </programlisting> </para> </sect2> <sect2> <title>Memory Maps </title> <para>The MMU page tables are located at 0x4000. <note><title>NOTE </title> <para>The virtual memory maps in this section use a C and B column to indicate whether or not the region is cached (C) or buffered (B).</para> </note><programlisting>Physical Address Range Description ----------------------- ---------------------------------- 0x00000000 - 0x01ffffff Flash 0x10000000 - 0x100fffff Ethernet 0x30000000 - 0x300fffff Board registers 0x40000000 - 0x4fffffff PCMCIA Slot (0) 0x50000000 - 0x5fffffff Compact Flash Slot (1) 0x80000000 - 0x800037ff I/O registers 0xb0060000 - 0xb00fffff On-chip SRAM 0xf0000000 - 0xfd3fffff SDRAM Virtual Address Range C B Description ----------------------- - - ---------------------------------- 0x00000000 - 0x01f7ffff Y Y SDRAM 0x01f80000 - 0x01ffffff Y Y SDRAM (used for LCD frame buffer) 0x10000000 - 0x100fffff N N Ethernet 0x30000000 - 0x300fffff N N Board registers 0x40000000 - 0x4fffffff N N PCMCIA Slot (0) 0x50000000 - 0x5fffffff N N Compact Flash Slot (1) 0x60000000 - 0x61ffffff N N Flash 0x80000000 - 0x800037ff N N I/O registers 0xf0000000 - 0xffffffff N N SDRAM (uncached) </programlisting></para> </sect2> <sect2> <title>Resource Usage </title> <para>The RAM based RedBoot image occupies RAM addresses <computeroutput>0x40000 - 0x7ffff</computeroutput>. The flash based RedBoot image occupies RAM addresses <computeroutput>0x00000000 - 0x0003ffff</computeroutput>. RAM addresses from <computeroutput>0x80000</computeroutput> to the end of RAM are available for general use such as a temporary scratchpad for downloaded images before they are written to flash. If configured to use the LCD screen, additional DRAM from <computeroutput>0x01f80000 - 0x01ffffff</computeroutput> is used for the LCD frame buffer. </para> </sect2><sect2> <title>Rebuilding RedBoot</title> <para>The instructions in <xref linkend="Rebuilding-Redboot"> should be followed. The values for ARCH_DIR and PLATFORM_DIR on this platform are “arm” and “arm9/aaed2000” respectively. The value for TARGET is “aaed”. Note that the configuration export files supplied in the <computeroutput> hal/arm/arm9/aaed2000/<replaceable>VERSION</replaceable>/misc</computeroutput> directory in the RedBoot source tree should be used. </para> </sect2> </sect1> <?Pub _newpage> <sect1 id="vrc4375"> <title>NEC DDB-VRC4375</title> <sect2> <title>Overview</title> <para><indexterm><primary>NEC DDB-VRC4375</primary> <secondary>installing and testing</secondary></indexterm><indexterm><primary> installing and testing</primary><secondary>NEC DDB-VRC4375 </secondary></indexterm>RedBoot supports only serial port 1, which is connected to the upper of the stacked serial connectors on the board. The default serial port settings are 38400,8,N,1. FLASH management is also supported. Two basic RedBoot configurations are supported: <itemizedlist> <listitem><para>RedBoot running from RAM which has been relocated from the board's flash boot sector.</para></listitem> <listitem><para>RedBoot running from RAM with RedBoot in the flash boot sector.</para></listitem> </itemizedlist></para> <para>Since the normal RedBoot configuration does not use the FLASH ROM except during startup, it is unnecessary to load a RAM-based RedBoot before reprogramming the FLASH.</para> </sect2> <sect2> <title>Initial Installation Method </title> <para>A device programmer should be used to program a socketed FLASH part (AMD 29F040). The board as delivered is configured for a 512K EPROM. To install a FLASH ROM, Jumpers J30, J31 and J36 need to be changed as described in the board's User Manual.</para> <para> Since RedBoot for this board relocates itself from ROM to RAM at startup, it is not necessary to run a secondary RAM based version of RedBoot to update the main FLASH image. Instead this can be done from the primary version of RedBoot. </para> <sect3> <title>Updating the primary RedBoot image</title> <para>To update the primary RedBoot image, follow the procedures detailed in <xref linkend="update-primary-image">, but the actual numbers used with the flags in the sample commands should be: <programlisting> -b 0x80100000 </programlisting> Flash locking and unlocking is not required. Note that these values are inferred when updating the RedBoot image once the <command>fis create</command> has been run. </para> </sect3> </sect2> <sect2> <title>Special RedBoot Commands</title> <para>None.</para> </sect2> <sect2> <title>Memory Maps</title> <para>RedBoot sets up the memory map primarily as described in the board's User Manual. There are some minor differences, noted in the following table: <screen> Physical Virtual Resource Addresses Addresses 00000000-01FFFFFF 80000000-81FFFFFF Base SDRAM (cached) 00000000-01FFFFFF A0000000-A1FFFFFF Base SDRAM (uncached) 0C000000-0C0BFFFF AC000000-AC0B0000 PCI IO space 0F000000-0F0001FF AF000000-AF0001FF VRC4375 Registers 1C000000-1C0FFFFF BC000000-BC0FFFFF VRC4372 Registers 1C100000-1DFFFFFF BC100000-BDFFFFFF PCI Memory space 1FC00000-1FC7FFFF BFC00000-BFC7FFFF FLASH ROM 80000000-8000000D C0000000-C000000D RTC 8000000E-80007FFF C000000E-C0007FFF NVRAM 81000000-81FFFFFF C1000000-C1FFFFFF Z85C30 DUART 82000000-82FFFFFF C2000000-C2FFFFFF Z8536 Timer 83000000-83FFFFFF C3000000-C3FFFFFF 8255 Parallel port 87000000-87FFFFFF C7000000-C7FFFFFF Seven segment display</screen> </para> <note> <title>NOTE</title> <para> By default the VRC4375 SIMM control registers are not programmed since the values used must depend on the SIMMs installed. If SIMMs are to be used, correct values must be placed in these registers before accessing the SIMM address range. </para> </note> <note> <title>NOTE</title> <para> The allocation of address ranges to devices in the PCI IO and memory spaces is handled by the eCos PCI support library. They do not correspond to those described in the board User Manual. </para> </note> <note> <title>NOTE</title> <para> The MMU has been set up to relocate the VRC4372 supported devices mapped at physical addresses 0x8xxxxxxx to virtual addresses 0xCxxxxxxx. </para> </note> </sect2> <sect2> <title>Resource Usage</title> <para> The RedBoot image occupies flash addresses 0x1fc00000 - 0x1fc1ffff. To execute it copies itself out of there to RAM at 0x80000000. RedBoot reserves 1MB of RAM from 0x80000000 to 0x800FFFFF for its own use. The top 1MB of RAM from 0x81F00000 to 0x81FFFFFF is reserved for use by the PCI Ethernet device. RAM based RedBoot configurations are designed to run from RAM at virtual addresses 0x80100000 - 0x8011ffff. RAM virtual addresses from 0x80020000 to the start of the PCI window are available for general use, such as a temporary scratchpad for downloaded images, before they are written to flash. </para> </sect2> <sect2> <title>Ethernet Driver</title> <para> The ethernet driver is in two parts: </para> <para> A generic ether driver for the Intel i21143 device is located in <computeroutput>devs/eth/intel/i21143</computeroutput>. Its package name is <computeroutput>CYGPKG_DEVS_ETH_INTEL_I21143</computeroutput>. </para> <para> The platform-specific ether driver is <computeroutput>devs/eth/mips/vrc4375</computeroutput>. Its package is <computeroutput>CYGPKG_DEVS_ETH_MIPS_VRC4375</computeroutput>. This tells the generic driver the address in IO memory of the chip, for example, and other configuration details. The ESA (MAC address) is by default collected from on-board serial EEPROM, unless configured statically within this package. </para> </sect2> <sect2> <title>Rebuilding RedBoot</title> <para> The instructions in <xref linkend="Rebuilding-Redboot"> should be followed. The values for TARGET, ARCH_DIR and PLATFORM_DIR on this platform are “vrc4375”, “mips” and “vrc4375” respectively. The configuration export files supplied in the <computeroutput>hal/mips/vrc4375/<replaceable>VERSION</replaceable>/misc</computeroutput> directory in the RedBoot source tree should be used. In general only the ROMRAM variant should need to be used. </para> </sect2> </sect1> <?Pub _newpage> <sect1 id="frv400"> <title>Fujitsu FR-V 400 (MB-93091)</title> <sect2> <title>Overview</title> <para><indexterm><primary>Fujitsu FR-V 400</primary> <secondary>installing and testing</secondary></indexterm><indexterm><primary> installing and testing </primary><secondary>Fujitsu FR-V 400</secondary></indexterm> RedBoot supports both serial ports, which are available via the stacked serial connectors on the mother board. The topmost port is the default and is considered to be port 0 by RedBoot. The bottommost port is serial port 1. The default serial port settings are 38400,8,N,1. </para> <para> FLASH management is also supported, but only for the FLASH device in IC7. This arrangement allows for IC8 to retain either the original Fujitsu board firmware, or some application specific contents. Two basic RedBoot configurations are supported: <itemizedlist> <listitem> <para> RedBoot running from RAM which has been relocated from the board's flash boot sector. This mode is known as ROMRAM. </para> </listitem> <listitem> <para> RedBoot running from RAM, loaded by some other means. </para> </listitem> </itemizedlist> </para> <para>Since the normal RedBoot configuration does not use the FLASH ROM except during startup, it is unnecessary to load a RAM-based RedBoot before reprogramming the FLASH.</para> </sect2> <sect2> <title>Initial Installation Method </title> <para> RedBoot can be installed by directly programming the FLASH device in IC7 or by using the Fujitsu provided software to download and install a version into the FLASH device. Complete instructions are provided separately. </para> <sect3> <title>Updating the primary RedBoot image</title> <para>To update the primary RedBoot image, follow the procedures detailed in <xref linkend="update-primary-image">, but the actual numbers used with the flags in the sample commands should be: <programlisting> -f 0xFF000000 -b 0x100000 -l 0x40000 </programlisting> Note that these values are inferred when updating the RedBoot image once the <command>fis create</command> has been run. </para> </sect3> </sect2> <sect2> <title>Special RedBoot Commands</title> <para>None.</para> </sect2> <sect2> <title>Memory Maps</title> <para>The memory map of this platform is fixed by the hardware (cannot be changed by software). The only attributes which can be modified are control over cacheability, as noted below. <screen> Address Cache? Resource 00000000-03EFFFFF Yes SDRAM (via plugin DIMM) 03F00000-03FFFFFF No SDRAM (used for PCI window) 10000000-1FFFFFFF No MB86943 PCI bridge 20000000-201FFFFF No SRAM 21000000-23FFFFFF No Motherboard resources 24000000-25FFFFFF No PCI I/O space 26000000-2FFFFFFF No PCI Memory space 30000000-FDFFFFFF ?? Unused FE000000-FEFFFFFF No I/O devices FF000000-FF1FFFFF No IC7 - RedBoot FLASH FF200000-FF3FFFFF No IC8 - unused FLASH FF400000-FFFFFFFF No Misc other I/O </screen> </para> <note> <title>NOTE</title> <para> The only configuration currently suppored requires a 64MB SDRAM DIMM to be present on the CPU card. No other memory configuration is supported at this time. </para> </note> </sect2> <sect2> <title>Resource Usage</title> <para> The RedBoot image occupies flash addresses 0xFF000000 - 0xFF03FFFF. To execute it copies itself out of there to RAM at 0x03E00000. RedBoot reserves memory from 0x00000000 to 0x0001FFFF for its own use. User programs can use memory from 0x00020000 to 0x03DFFFFF. RAM based RedBoot configurations are designed to run from RAM at 0x00020000. </para> </sect2> <sect2> <title>Rebuilding RedBoot</title> <para> The instructions in <xref linkend="Rebuilding-Redboot"> should be followed. The values for TARGET, ARCH_DIR and PLATFORM_DIR on this platform are “frv400”, “frv” and “frv400” respectively. The configuration export files supplied in the <computeroutput>hal/frv/frv400/<replaceable>VERSION</replaceable>/misc</computeroutput> directory in the RedBoot source tree should be used. In general only the ROMRAM variant should need to be used. </para> </sect2> </sect1> </chapter>
