This document covers the configuration and usage of eCos and RedBoot on the Spectrum Digital OMAP-L137 Evaluation Module. This board is fitted with an OMAP L137 processor, 64 MBytes of SDRAM, four megabytes of serial NOR flash attached to the SPI0 bus, 32K of EEPROM attached to the I2C0 bus, a DB9 serial connector for UART2, a KSZ8893MQL ethernet switch/phy, a jtag connector, and a number of other peripherals and expansion sockets. eCos support for the devices and peripherals on the board is described below.
For typical eCos development, a RedBoot image is programmed into the SPI NOR flash memory, and the board will load 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.
This documentation is expected to be read in conjunction with the OMAP L1xx processor HAL documentation and further device support and subsystems are described and documented there.
Bootstrap on the OMAP-L137 is complicated. The chip has two processors, a DSP and an ARM. The chip powers up with the DSP running a primary bootloader from on-chip memory, and with the ARM powered down. The primary bootloader checks the state of a number of GPIO pins to determine how to proceed. In a typical setup it will proceed to read in an AIS script from the serial NOR flash on the SPI0 bus and execute the script's instructions. The AIS script will load a secondary bootloader into on-chip memory and transfer control to that. The secondary bootloader will load a tertiary bootloader elsewhere in on-chip memory, activate the ARM processor, and put the DSP to sleep. The tertiary bootloader will initialize more of the hardware, in particular the external SDRAM, load RedBoot or another ROM startup eCos application, and transfer control. RedBoot can then be used to download and debug a RAM startup application, or in production systems it can load such an application from flash or other storage and start it.
There are 4 MBytes of SPI NOR flash, arranged in 64 64K blocks. In a typical setup the first four blocks are used to hold a boot image containing the AIS script for the primary bootloader, the secondary and tertiary bootloaders, and RedBoot. The topmost block is used to manage the flash and also holds RedBoot fconfig values. The remaining blocks can be used by application code.
On this board only uart2 is connected, and this is normally used by RedBoot for communication with the host. If the device is needed by the application, either directly or via the serial driver, then it cannot also be used for RedBoot communication and another communication channel such as ethernet should be used instead. The port also includes support for the ethernet, watchdog, and real-time clock devices and for the SPI and I2C buses. Details of this support can be found below.
In general, devices (Caches, GPIO, UARTs) are initialized only as far as is necessary for eCos to run. Other devices (RTC, SPI, I2C, etc.) are not touched unless the appropriate driver is loaded, although in some cases, the HAL boot sequence will set up the appropriate power control and pin multiplexing configuration.
The board support is intended to work with GNU tools configured for an arm-eabi target. The original port was undertaken using arm-eabi-gcc version 4.4.5, arm-eabi-gdb version 7.2, and binutils version 2.20.