Overview of the Release
To Contents | To previous page | To next page

## Overview of the Release

The Embedded Configurable Operating System (eCos) software is a set of tools and a run-time environment for developing embedded applications. eCos is a configurable, open source system that allows you to build a run-time system that closely matches the needs of your application.

eCos is aimed at embedded software developers using architectures with tight memory requirements, who want a portable framework for developing their applications.

This chapter outlines the features of eCos version 1.3.1. The initial release version was 1.3, and additional 1.3 releases will incorporate an additional number, represented in this manual by "x". Please note the exact version number of the version that you are using, because it is incorporated in certain file paths.

If you want to start programming eCos immediately, see Part II: Installation Guide and Part III: Programming Tutorial .

### Hardware Abstraction

eCos includes a Hardware Abstraction Layer ( HAL ) that hides the specific features of each CPU and platform so that the kernel and other run-time components can be implemented in a portable fashion.

The eCos HAL has now been ported to numerous architectures, and to one synthetic target, Linux i386. Notes on porting the HAL to new platforms are provided in the eCos Reference Manual , part: The eCos Hardware Abstraction Layer , section: Kernel porting notes .

### Embedded Kernel

The core of eCos is a full-featured, flexible, and configurable embedded kernel.

The kernel provides, among other features, multi-threading, a choice of schedulers, a full set of synchronization primitives, memory allocation primitives, and thread manipulation functions (see the eCos Reference Manual for the full kernel API).

The kernel is designed so that some parts of it can be changed or replaced without affecting other kernel components.

The following is a partial list of kernel features:

- choice of memory allocation algorithm

- choice of scheduling algorithm

- a rich set of synchronization primitives

- timers, counters, and alarms

- interrupt handling

- exception handling

- cache control

- thread support

- kernel support for multi-threaded debugging with GDB

- trace buffers

- infrastructure and instrumentation

The kernel API and configuration are described in the eCos Reference Manual .

### Configurability

The eCos kernel and other components can be configured in great detail at compile time, avoiding the addition of unwanted code to the library to be linked with your application code. There is no performance penalty for configuration.

Configuration is fine-grained, so that very small details of eCos' behavior can be tuned by selecting configuration options.

eCos is organized as a component architecture, with a language to describe the constraints between components and individual configuration options. These constraints are necessary to resolve inconsistent configurations, such as disabling the code which handles the real-time clock, while enabling per-thread timers.

The designer of a component or general-purpose library should write configurable code using a component definition language ( CDL ). Once that has been done there is no additional burden on the end user (i.e. an embedded systems programmer), who will be able to use eCos' graphical Configuration Tool to configure the kernel and basic libraries without needing to understand how the configuration infrastructure works.

A tutorial on how to configure eCos is located in Configuring and Building eCos from Source . The eCos User's Guide has complete information on running the Configuration Tool and CDL.

### µ ITRON and Other Operating Systems

eCos' configurability is the key to simulating different operating systems by using compatibility layers on top of eCos' kernel, because the semantics of basic kernel functions can be configured to match the semantics of other operating systems.

The specification for the µ ITRON operating system has been implemented on top of eCos. µ ITRON is configured by selecting appropriate options in the kernel (a real-time clock, the `mlqueue` scheduler, and no timeslicing); and writing a thin layer to map the µ ITRON system calls.

The µ ITRON port implements the complete µ ITRON 3.02 "Standard functionality" (level S) specification, as well as some of the "Extended" (level E) functions. The µ ITRON implementation is described in more detail in the eCos Reference Manual .

### ISO C Library

The ISO C and math library shipped with eCos was written to be configurable and tightly integrated with the kernel and the HAL.

By carefully selecting configuration options in the C library, you can significantly reduce the size of the final executable image.

### Serial Device Drivers

eCos provides serial device drivers for all supported eCos platforms, with the exception of the i386 Linux synthetic target and most simulator platforms. The serial drivers provide an API (documented in the eCos Reference Manual ) to control serial ports directly. The standard I/O library can be configured to use them as a transport layer.

### ROM Monitor Image

For the EDK7708 and i386 PC, the ROM images include a GDB stub. This allows GDB to connect to the board and download eCos programs.

### NOTE

When an eCos program is run on ARM or SH3 boards, the GDB stub in ROM does not provide thread debugging or asynchronous GDB interrupt support. If you require full debugging capabilities, you must include GDB stub support when configuring eCos .

No ROM image is required for the synthetic Linux target.

Please note that previous releases of CygMon are incompatible with eCos. You must use the version of CygMon that is provided with eCos rather than an older version of CygMon.

### Tests and Examples

Test suites are included for every portion of eCos shipped in this release; these are brief programs that test the behavior of most system calls and libraries in eCos. Test Suites describes how to build and run these test suites.

The last chapters in Part III: Programming Tutorial give examples that guide you through running eCos applications, starting from a "Hello world" program and then moving on to more complex programs that use additional kernel features.

### GNU Tools and their Documentation

Red Hat's GNUPro Toolkit, which includes the GCC and G++ compilers and the GDB debugger, is needed to build eCos applications. It is bundled with the CDROM distribution of the eCos Developer's Kit, and is also available on the net at `http://sourceware.cygnus.com/ecos/` .

Online HTML versions of the full GNUPro documentation are included with eCos, as well as a specific GNUPro tools reference guide for your hardware architecture, customized for use with eCos. The full GNUPro documentation can also be found on the web at `http://www.redhat.com/support/manuals/gnupro.html`

### NOTE

The Linux synthetic i386 target is an exception, as there is (currently) no GNUPro manual. However, the GNUPro source archive contains documentation for the tools. This documentation is usually also included as part of a default Red Hat Linux installation, accessible with the info program.

### eCos Documentation

The eCos documentation set includes Getting Started with eCos , the eCos User's Guide , the eCos Reference Manual , and a GNUPro Reference Manual for your specific architecture.

For users of the eCos Net releases, these are available online in HTML format at ``

`http://sourceware.cygnus.com/ecos/.`

Overview of the Release
To Contents | To previous page | To next page