eCos Support for the SuperH SH4-202 MicroDev Board — Overview


The SuperH SH4-202 MicroDev board (henceforth just "MicroDev") has an SH4-202 processor, 64MB of external SDRAM, 32MB of external flash memory, an SMSC LAN91C111 ethernet controller and connectors plus required support chips for all the on-chip peripherals.

For typical eCos development, a RedBoot image is programmed into the flash memory, and the board will boot 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

The flash memory consists of 128 blocks of 256k bytes each. In a typical setup, the first flash block is used for the ROM RedBoot image and the second is used to store a version of RedBoot that can run out of RAM. The topmost two blocks are used to manage the flash and hold RedBoot fconfig values. The remaining 124 blocks between 0xA0080000 and 0xA1F7FFFF can be used by application code.

The board is fitted with a PLCC socket suitable for an EEPROM (or PROM) such as the 1Mbit ST M29WO10B. This is enabled by toggling two DIP switches, after which the EEPROM is mapped into the same address as the flash memory. Therefore, the flash is not accessible if booting from the EEPROM.

There is a serial driver CYGPKG_DEVS_SERIAL_SH_SCIF which supports the on-chip serial device. This device can be used by RedBoot for communication with the host. If this device 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 MicroDev target.

There is an ethernet driver CYGPKG_DEVS_ETH_SH_MICRODEV for the on-chip ethernet device. This driver is also loaded automatically when configuring for the MicroDev target.

eCos manages the on-chip interrupt controller. Timer 0 is used to implement the eCos system clock, and timer 1 is used to implement a microsecond delay function. Timer 2 is unused and left for the application. Other on-chip devices (FEMI, EMI, INTC, TMU, CAC, UBC) are initialized only as far as is necessary for eCos to run. Other devices (eg RTC, DMAC, etc) are not touched.


The MicroDev port is intended to work with GNU tools configured for an sh-elf target. The original port was done using sh-elf-gcc version 3.2.1, sh-elf-gdb version 5.3, and binutils version 2.13.1.