eCos Support for the Renesas SDK7780 Development Board — Overview


The Renesas SDK7780 Development Board (henceforth just "SDK7780") has an SH7780 processor, 128MB of external SDRAM, 128MB of external flash memory, an SMSC LAN91C111 ethernet controller with integrated PHY, two 9-pin SCIF serial interfaces 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 SDK7780 contains two banks of two Spansion S29GL256M flash parts. The banks may be swapped between CS0 and CS1 by SW4-1. Bank A contains ETS and the TFTP bootloader and is left alone. Bank B contains RedBoot which is usually installed by the bootloader. Flipping SW4-1 causes the system to boot from Bank B. Only Bank B, accessed via CS0, is managed by eCos. Bank A is left untouched to preserve ETS and allow RedBoot to be reprogrammed. In a typical setup, the first two flash blocks (256K bytes) are reserved for use for the ROM RedBoot image. The topmost block is used to manage the flash and hold RedBoot fconfig values. The remaining blocks between 0x80040000 and 0x83FDFFFF can be used by application code.

The board is fitted with a JTAG socket allowing use of the E10A JTAG interface to perform hardware debugging. At present there is no GDB support for this device, howver it may be used from HEW to debug application in ROM or loaded via serial or ethernet.

There is a serial driver CYGPKG_DEVS_SERIAL_SH_SCIF which supports the two on-chip serial devices. Either of these devices can be used by RedBoot for communication with the host. If a device is needed by the application, either directly or via the serial driver, then it cannot also be used for RedBoot communication. Either the alternative serial port, or another communication channel such as ethernet should be used instead. The serial driver package is loaded automatically when configuring for the sdk7780 target.

There is an ethernet driver CYGPKG_DEVS_ETH_SH_SDK7780 which provided configuration parameters for the onboard ethernet device. The device itself is supported by the CYGPKG_DEVS_ETH_SMSC_LAN91CXX package. These drivers are also loaded automatically when configuring for the sdk7780 target, although not activated until generic ethernet package support is also added.

There is a watchdog driver CYGPKG_DEVICES_WATCHDOG_SH_SH4A. This driver is also loaded automatically when configuring for the SDK7780 target.

There is a driver for the on-chip real-time clock (RTC) at CYGPKG_DEVICES_WALLCLOCK_SH3. This driver is also loaded automatically when configuring for the SDK7780 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, LMI, INTC, TMU, CAC, UBC, CPG) are initialized only as far as is necessary for eCos to run. Other devices (eg DMAC, MMCIF, HAC, SSI, FLCTL etc) are not touched.


The SDK7780 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.4.4, sh-elf-gdb version 6.3, and binutils version 2.16.