In a typical development environment, the KB920x boards boot from serial EEPROM into the KwikByte bootloader, which then boots the RedBoot ROM monitor from flash. eCos applications are configured for RAM startup and then downloaded and run on the board via the debugger arm-eabi-gdb. Preparing the board therefore usually involves programming a suitable RedBoot image into flash memory.
The following RedBoot configurations are supported:
|ROM||RedBoot running from ROM||redboot_ROM.ecm||redboot_ROM.bin|
|ROMRAM||RedBoot running from RAM, but contained in the board's flash boot sector.||redboot_ROMRAM.ecm||redboot_ROMRAM.bin|
|SRAM||RedBoot running from RAM, loaded by bootloader.||redboot_SRAM.ecm||redboot_SRAM.bin|
|UBOOT||RedBoot running from RAM, loaded from flash by U-Boot.||redboot_UBOOT.ecm||redboot_UBOOT.bin|
For serial communications, all versions run with 8 bits, no parity, and 1 stop bit at 115200 baud. RedBoot also supports ethernet communication and flash management.
Generally only the ROMRAM version of RedBoot is used. The SRAM version is suitable only for RedBoot development and should not normally be used. On the KB9202C the UBOOT version is used.
Initial Installation -- KB9201, KB9202, KB9202B
The KB920x boards are shipped from KwikByte with the EEPROM bootloader installed and a version of Linux installed in the flash. The KB9202C board has a different installation method, described in the next section.
Installing RedBoot is a matter of downloading a new binary image and overwriting the existing Linux image. This is a two stage process, you must first download the KwikByte RAM Monitor, which is then used to download a RedBoot image and program it into the flash. To achieve this you will need a copy of the ramMonitor.bin image and, for Linux hosts, a copy of the KwikByte download tool. Both of these can be found on the CD-ROM that comes with the board. Note that the prebuilt version of the download tool is hardcoded to use /dev/ttyS0 for downloads.
Connect a straight-through serial cable between the KB920x board serial port and a serial port of the host computer and start a terminal emulator such as minicom or HyperTerminal. Set the communication parameters to 115200 baud, 8 data bits, no parity bit and 1 stop bit. Press the Reset button on the board and when the bootloader starts you should see something similar to this if using the KB9200 or KB9201:
KB9200(www.kwikbyte.com) Default system configuration complete Checking for input >
When you see the "Checking for input" line, hit the Return key to put the bootloader into its command interpreter, otherwise it will proceed to boot Linux.
For the KB9202 there is less output, and the delay shorter, and so you will need to press the Return key several times immediately after pressing the Reset button before the bootloader banner is displayed:
KB9202(www.kwikbyte.com) Auto boot.. >
The next step is to install a new startup command in the command table:
>s 1 e 0x10000000 >w >
It is now necessary to download the Kwikbyte RAM Monitor. Start the download by giving the following command to the bootloader:
>x 0x20002000 C
You may get a sequence of C characters, which indicate that the bootloader is waiting for the download to start. If using HyperTerminal, you should now send the ramMonitor.bin file from the KwikByte CD-ROM using the Xmodem protocol. If using minicom, exit minicom and download the RAM Monitor using the following command:
$ download ramMonitor.bin
The download command produces a lot of output. When the transfer is finished, restart minicom.
Having downloaded the RAM monitor, issue the following command to start it:
>e 0x20002000 Entry: RAM Monitor >
It is now necessary to prepare the flash for the RedBoot image by erasing the first 128K bytes. The RedBoot ROM image can then be downloaded:
>f e 0x10000000 0x1001ffff Verifying sector erase Flash sector erase at: 0x10000000 PASS Verifying sector erase Flash sector erase at: 0x10010000 PASS >x 0x20100000 C
If using HyperTerminal, you should now send the redboot_ROMRAM.bin file using the Xmodem protocol. If using minicom, exit minicom and use the download command to send the file redboot_ROMRAM.bin. When the transfer is finished, restart minicom.
Having downloaded the RedBoot image, use the following command to write it to flash:
>f p 0x10000000 0x20100000 0x20000 .. Flash program status: PASS >
The KB920x board may now be reset. It should then display the following startup sequence. Run the fis init and fconfig -i commands to initialize the flash, as shown. Note that KB9202 users will see output similar but not identical to that below.
KB9200(www.kwikbyte.com) Default system configuration complete Checking for input 0x00 : [E] 0x01 : e 0x10000000[E] 0x02 : c 0x20210000 0x10100000 0x100000[E] 0x03 : m 0 0 0 0 0 0[E] 0x04 : t 0x20000100 console=ttyS0,115200 root=/dev/ram rw initrd=0x20210000,654] 0x05 : e 0x10000000[E] 0x06 : [E] 0x07 : [E] 0x08 : [E] 0x09 : [E] > >e 0x10000000 +... Read from 0x601f0000-0x601fffff to 0x01ff0000: ... Read from 0x601ff000-0x601fffff to 0x01fef000: **Warning** FLASH configuration checksum error or invalid key Use 'fconfig -i' to [re]initialize database PHY: Intel LXT971 AT91RM9200 ETH: Waiting for link to come up. AT91RM9200 ETH: 100Mb ... waiting for BOOTP information Ethernet eth0: MAC address 00:23:31:37:00:1c IP: 10.0.0.207/255.255.255.0, Gateway: 10.0.0.3 Default server: 10.0.0.1 RedBoot(tm) bootstrap and debug environment [ROMRAM] Non-certified release, version UNKNOWN - built 12:01:32, Dec 13 2004 Platform: KwikByte KB9200 (ARM9) Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. Copyright (C) 2003, 2004, eCosCentric Limited RAM: 0x00000000-0x02000000, [0x0002ddf8-0x01fed000] available FLASH: 0x60000000 - 0x601fffff 32 x 0x10000 blocks RedBoot> fis init About to initialize [format] FLASH image system - continue (y/n)? y *** Initialize FLASH Image System ... Erase from 0x601f0000-0x601fffff: . ... Program from 0x01ff0000-0x02000000 to 0x601f0000: . RedBoot> fconfig -i Initialize non-volatile configuration - continue (y/n)? y Run script at boot: false Use BOOTP for network configuration: true Default server IP address: 10.0.0.201 Network hardware address [MAC]: 0x00:0x23:0x31:0x37:0x00:0x1C GDB connection port: 9000 Force console for special debug messages: false Network debug at boot time: false Default network device: at91rm9200_eth Update RedBoot non-volatile configuration - continue (y/n)? y ... Read from 0x601f0000-0x601fefff to 0x01ff0000: ... Erase from 0x601f0000-0x601fffff: . ... Program from 0x01ff0000-0x02000000 to 0x601f0000: . RedBoot>
If it proves necessary to re-install RedBoot, this may be achieved by repeating the above process. Alternatively, a new image may be downloaded and programmed into flash more directly using RedBoot's own commands. See the RedBoot documentation for details.
Initial Installation -- KB9202C
The KB9202C is not equipped with NOR flash, only Dataflash, so the installation method described above will not work. This board boots, via a second-stage loader into U-Boot. By default U-Boot then boots a Linux image that is also stored in Dataflash. The approach described here is to cause U-Boot to boot RedBoot instead of Linux. The following directions give basic instructions for installing RedBoot, for more details of how to configure U-Boot, please refer to the U-Boot documentation.
Connect a straight-through serial cable between the KB920C board serial port and a serial port of the host computer and start a terminal emulator such as minicom or HyperTerminal. Set the communication parameters to 115200 baud, 8 data bits, no parity bit and 1 stop bit. Power the board up and you should see the KwikByte loader and U-Boot startup messages. When it gets to the "Hit any key to stop autoboot" line, type any key. There is only a 1 second timeout here, so you need to be quick, or you can type ahead during the delay after the "NAND:" line. The final output should look like this:
KwikByte KB9202x Copy Loader v0.9 Loading boot loader. . . done U-Boot 1.2.0 (Sep 26 2007 - 17:32:22) DRAM: 64 MB NAND: NAND device: Manufacturer ID: 0x2c, Chip ID: 0xda (Micron NAND 256MiB 3,3V 8-bit) 256 MiB DataFlash:AT45DB642 Nb pages: 8192 Page Size: 1056 Size= 8650752 bytes Logical address: 0xC0000000 Area 0: C0000000 to C00020FF Copy Loader (8kB) Area 1: C0002100 to C00041FF Environment (8kB) Area 2: C0004200 to C003665F U-Boot (195kB) Area 3: C0036660 to C0041FFF Secondary Boot (45kB) Area 4: C0042000 to C0461FFF OS (4MB) Area 5: C0462000 to C083FFFF DF_SPARE In: serial Out: serial Err: serial Hit any key to stop autoboot: 0 KB920x >
Now we need to set up U-Boot to download the RedBoot image and program it into the DataFlash. First it is necessary to change U-Boot's environment to allow the image to be downloaded. In this example we will be downloading via tftp, so we need to set the ethernet and IP addresses for this board:
KB920x >setenv ethaddr 00:D0:93:00:05:B5 KB920x >setenv ipaddr 10.0.3.1 KB920x >setenv serverip 10.0.1.2 KB920x >saveenv KB920x >printenv bootargs=console=ttyS0,115200 noinitrd root=/dev/mtdblock0 rootfstype=jffs2 mem= 64M bootdelay=1 baudrate=115200 hostname=KB9202C kernel-size=31c8d0 bootcmd=cp.b c0042000 23000000 31c8d0; bootm 23000000 ethaddr=00:D0:93:00:05:B5 ipaddr=10.0.3.1 serverip=10.0.1.2 stdin=serial stdout=serial stderr=serial Environment size: 307/8444 bytes KB920x >
In the above example the
serverip variables are set to example values. They
should be set to the address of this board and the address of the TFTP
server in your own network. The redboot_UBOOT.bin
should be copied to the tftp server's root directory. It may now be
KB920x >tftp 0x20100000 redboot_UBOOT.bin TFTP from server 10.0.1.2; our IP address is 10.0.3.1 Filename 'redboot_UBOOT.bin'. Load address: 0x20100000 Loading: T ################### done Bytes transferred = 94236 (1701c hex) KB920x >
Now program the loaded binary into flash. In the following example, the new binary is installed into dataflash at offset 0x500000. This avoids overwriting the Linux image at offset 0x42000. If the Linux image is not required, RedBoot can be programmed in its place and the addresses in the following commands adjusted to match.
KB920x >cp.b 0x20100000 0xc0500000 0x20000 Copy to DataFlash... done KB920x >
Finally, change the default boot command to load and execute RedBoot rather than Linux. Make sure to include the backslash before the semicolon.
KB920x >setenv bootcmd cp.b 0xc0500000 0x20100000 0x20000\; go 0x20100000 KB920x >saveenv Saving Environment to dataflash...
Press the reset button on the board and the full boot sequence should be seen:
KwikByte KB9202x Copy Loader v0.9 Loading boot loader. . . done U-Boot 1.2.0 (Sep 26 2007 - 17:32:22) DRAM: 64 MB NAND: NAND device: Manufacturer ID: 0x2c, Chip ID: 0xda (Micron NAND 256MiB 3,3V 8-bit) 256 MiB DataFlash:AT45DB642 Nb pages: 8192 Page Size: 1056 Size= 8650752 bytes Logical address: 0xC0000000 Area 0: C0000000 to C00020FF Copy Loader (8kB) Area 1: C0002100 to C00041FF Environment (8kB) Area 2: C0004200 to C003665F U-Boot (195kB) Area 3: C0036660 to C0041FFF Secondary Boot (45kB) Area 4: C0042000 to C0461FFF OS (4MB) Area 5: C0462000 to C083FFFF DF_SPARE In: serial Out: serial Err: serial Hit any key to stop autoboot: 0 .O+AT91RM9200_ETH - Warning! ESA unknown. AT91RM9200 ETH: Waiting for link to come up. AT91RM9200 ETH: 100Mb Ethernet eth0: MAC address 00:23:31:37:00:1c IP: 10.0.2.6/255.0.0.0, Gateway: 10.0.0.3 Default server: 0.0.0.0, DNS server IP: 10.0.0.1 RedBoot(tm) bootstrap and debug environment [UBOOT] Non-certified release, version UNKNOWN - built 17:30:00, Jan 11 2008 Platform: KwikByte KB9202C (ARM9) Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. Copyright (C) 2003, 2004, 2005, 2006, 2007 eCosCentric Limited RAM: 0x00000000-0x04000000, [0x00120840-0x04000000] available RedBoot>
If it is necessary to reinstall RedBoot, the above steps for downloading and programming the new image should be repeated.
Should it prove necessary to rebuild a RedBoot binary, this is done most conveniently at the command line. The steps needed to rebuild the the ROMRAM version of RedBoot for the KB9200 are:
$ mkdir redboot_kb9200_romram $ cd redboot_kb9200_romram $ ecosconfig new kb9200 redboot $ ecosconfig import $ECOS_REPOSITORY/hal/arm/arm9/kb9200/VERSION/misc/redboot_ROMRAM.ecm $ ecosconfig resolve $ ecosconfig tree $ make
The steps needed to rebuild the the ROMRAM version of RedBoot for the KB9202 are:
$ mkdir redboot_kb9202_romram $ cd redboot_kb9202_romram $ ecosconfig new kb9202 redboot $ ecosconfig import $ECOS_REPOSITORY/hal/arm/arm9/kb9200/VERSION/misc/redboot_ROMRAM.ecm $ ecosconfig resolve $ ecosconfig tree $ make
The steps needed to rebuild the the UBOOT version of RedBoot for the KB9202C are:
$ mkdir redboot_kb9202c_uboot $ cd redboot_kb9202c_uboot $ ecosconfig new kb9202c redboot $ ecosconfig import $ECOS_REPOSITORY/hal/arm/arm9/kb9200/VERSION/misc/redboot_UBOOT.ecm $ ecosconfig resolve $ ecosconfig tree $ make
At the end of the build the install/bin subdirectory should contain the file redboot.bin.