Name

eCos Support for the i386 PC — Overview

Description

This document covers the eCos support for all i386 based PCs. This configuration of eCos should run on all i386/486/Pentium motherboards and PC compatible embedded devices.

For typical eCos development, a RedBoot image is programmed onto a disk device 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

eCos runs the i386 CPU in 32-bit protected mode. The segment registers are initialized to provide a flat 32-bit address space and the MMU is not enabled. Coherence between the cache and device memory is handled entirely by the hardware.

There is a serial driver CYGPKG_IO_SERIAL_GENERIC_16X5X which supports the 16X5X UARTs used by the PC. The CYGPKG_IO_SERIAL_I386_PC package provides customization of this generic driver to the PC hardware. These devices can be used by RedBoot for communication with the host. If any 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 packages are loaded automatically when configuring for the PC target.

Supported Ethernet devices include the Intel i82559, Intel i82544, National Semiconductor DP83816 and RealTek RTL8139. Each of these devices is supported by a generic device driver plus a package that customizes it to the PC hardware environment.

eCos manages the standard PC priority interrupt controller. PIT timer 0 is used to implement the eCos system clock and the microsecond delay function. eCos assumes that the PCI bus will be configured by the BIOS.

Tools

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