eCos Support for the KB920x Board Family -- Overview
Description
This document covers the KwikByte KB920x family of single board
computers based on the Atmel AT91RM9200. The KB9200 contains the
AT91RM9200 processor, 32Mb of SDRAM, 2MB of flash memory, an Intel
LXT971 PHY and external connections for one serial channel, ethernet
and the various other peripherals supported by the AT91RM9200. The
KB9201 is similar but with an additional SPI dataflash. The KB9202
uses a different flash memory device and increases the flash memory
capacity to 16MB. The KB9202B extends SDRAM to 64MB, and the KB9202C
replaces the NOR flash with Dataflash.
For typical eCos development, a RedBoot image is programmed into the
flash memory, and the board will boot into this image from
reset. RedBoot provides gdb stub functionality so it is then possible
to download and debug stand-alone and eCos applications via the gdb
debugger. This can happen over either a serial line or over ethernet.
Supported Hardware
On the KB9200 and KB9201, the flash memory consists of 32 blocks of 64k
bytes each. On the KB9202, the flash memory consists of 128 blocks of
128k bytes each. In a
typical setup, the first two flash blocks are used for the ROMRAM RedBoot
image. The topmost block is used to manage the flash and hold RedBoot
fconfig values. The remaining blocks can be used by
application code. For the KB9200/KB9201 these are 29 blocks between
0x60020000 and 0x601EFFFF; for the KB9202 these are 125 blocks between
0x60020000 and 0x60FDFFFF.
There is a serial driver CYGPKG_IO_SERIAL_ARM_AT91
which supports both the Debug Unit and USART serial devices. These
devices can be used by RedBoot for communication with the host. If
either of these devices is needed by the application, either directly
or via the serial driver, then it cannot also be used for RedBoot
communication. Another communication channel such as ethernet should
be used instead. The serial driver package is loaded automatically
when configuring for the KB9200, KB9201 or KB9202 targets.
There is an ethernet driver
CYGPKG_DEVS_ETH_ARM_AT91RM9200 for the on-chip
ethernet device. A second package
CYGPKG_DEVS_ETH_ARM_KB9200 is responsible for
configuring this generic driver to the KB920x hardware. These drivers
are also loaded automatically when configuring for the KB9200, KB9201
or KB9202 targets.
eCos manages the on-chip interrupt controller. Timer counter 0 is
used to implement the eCos system
clock and the microsecond delay function. Other on-chip devices
(Caches, PIO, UARTs, EMAC) are initialized only as far as is necessary
for eCos to run. Other devices (RTC, I2C, SPI, MCI etc.) are not
touched unless the appropriate driver is loaded.
Tools
The KB920x port is intended to work with GNU tools configured for an
arm-eabi target. The original port was undertaken using
arm-elf-gcc version 3.3.3, arm-elf-gdb version 6.1, and
binutils version 2.14, and subsequently retested with arm-elf-gcc
version 3.4.3, arm-elf-gdb version 6.3 and binutils version 2.16.