eCos

eCos has been designed to support deeply embedded applications with critical real-time performance requirements. It provides a highly optimized kernel that implements pre-emptive real-time scheduling policies, a rich set of synchronization primitives and low latency interrupt handling. Higher layers provide the functionality required for general embedded application support including memory management, language support libraries, compatibility APIs, device management, networking and file systems.

eCos provides a wealth of runtime functionality that can be incorporated and configured into a custom version of the operating system specific to your applications requirements. The primary runtime features are listed in the following table.

Runtime Functionality
Hardware Abstraction Layer (HAL)
Common HALFunctionality shared by all HALs including generic debugging and driver API.
Architecture HAL Functionality specific to the given architecture including exception/interrupt handlers, cache control, context switching code, and so forth.
Variant HALProcessor family variant extensions to the standard architecture code
Auxiliary HALFunctionality common between variants
Platform HALFunctionality specific to a platform. Isolates platform porting code from rest of the system.
Real-time kernel
Interrupt handlingTwo stage ISR/DSR design. Kernel never disables interrupts during normal operation, delivering best-in-class interrupt latencies.
Exception handlingProcessor exception handling
SchedulingChoice of real-time priority based round robin and bitmap schedulers. Preemptive timeslice can be disabled for cooperative multithreading. Additional schedulers can be added.
Thread supportComprehensive thread management. Supports per-thread data.
Synchronization primitives Rich set of primitives includes mutexes, condition variables, binary & counting semaphores, mail boxes, event flags, and spin locks
Timers, counters and alarmsGeneric timer based functions
Memory allocation Choice of memory allocators: Fixed block, variable block, and dynamic heaps
SMPShared memory symmetric multi-processing support for selected architectures
Debug and instrumentation supportTracing, profiling timers*, CPU performance monitoring, and so forth
Libraries
ISO C and math libraries Standard C library based on the ISO 9899:1990 / ANSI C3.159-1989 (C-89) specification
C++/STL library* Standard C++ library based on the ISO 14822 specification
POSIXPOSIX (ISO/IEC 9945-1) standards based API. Includes threads, signals, synchronization, timers, message queues, and file & device I/O.
µITRON Optional compatibility layer implements version 3.02 of this Japanese µITRON standard RTOS API
Networking
Plug-in infrastructure Generic networking interface, supports the ability to add alternative networking stacks. Provides a standard BSD socket interface.
lwIP stack* Lightweight IP stack. Extremely small resource footprint, but fewer features than FreeBSD derived stack. Functionality includes IP, TCP, UDP, ICMP, ARP, DHCP, SLIP and PPP protocols. Socket and native API support. eCosPro version has been rigourously tested, stabilized, and further optimized for space and speed. Optional eCosPro-mDNS (Bonjour/Zeroconf)** package.
FreeBSD derived stack The default eCos stack implements comprehensive functionality including: IP, TCP, UDP, ICMP, ARP, IPv6, BOOTP/DHCP clients, DNS client, TFTP/FTP clients, SNMP v3 client, embedded web servers, SNTP, PPP***, SecureSockets (SSL)** and Secure Shell (SSH)**.
File Systems
Plug-in infrastructure Generic file system interface, with additional automounting and removable media support*. Provides a standard fileio API interface for use with C/C++ and Posix.
RAM file systemSimple in-memory file system
ROM file systemSimple in-memory read only file system
FAT file system*Supports FAT12/16/32 formats. eCosCentric additions include long file names, multi-threaded access, internationalization, and removable media support. Integration with USB host stack's mass storage class is fully supported. Comprehensive testing with a wide range of removable flash and USB storage devices has been undertaken, minimising any potential compatibility issues.
Journalling Flash File System (JFFS2)* High reliability file system used for NOR-based flash memory systems
NAND flash file system (Yaffs)** High reliability file system used for NAND-based flash memory systems
Multimedia File System (MMFS)** High performance, high reliability, streaming multimedia file system
Linux ext2Read only support built-in to RedBoot
Device support and device drivers
I/O infrastructureGeneral purpose framework for device drivers, and the layering of drivers.
CAN** Controller Area Network device API and drivers
Ethernet*Standard drivers are compatible with RedBoot, BSD and lwIP stacks. There are also lwIP specific drivers optimized for reduced resource usage.
Flash*Version 2 design allows the concurrent support of multiple flash devices and types. Used by both RedBoot and eCos. FlashSafe library provides failsafe flash storage and retreval system.
I2C***I2C bus hardware drivers and alternative generic GPIO based bit-banged driver.
IDE*Hard disk interface, with optional DMA support
MMC, SD, SDHC, CompactFlash, and DataFlash**Removable flash card support
PCISupports PCI bus based devices
Serial I/O*RS232 based serial and tty devices
Serial EEPROM*SPI and I2C connected memory access support
SPI***Serial peripheral interface bus driver.
USB** Device & host stacks. Class support includes mass storage, networking and serial.
Wallclock*Real time clock (RTC) support
Watchdog*Simple portable API
Debug & test support
gdb stubsBasic target resident debug agent, supports serial and Ethernet communications
RedBoot* Bootloader with integrated debug agent. Includes simple flash file management, file system support, scripting, reliable in-field system updates, and more. Supports serial and Ethernet based communciations.
BootUp* Lightweight customizable bootloader, can support reliable in-field system and application updates, secure booting and more.
Hardware debug* JTAG/BDM based debugging. Eclipse and gdb based download and source level debugging support. Ecoflash utility provides a generic and portable flash memory management tool.
Test codeRuntime tests covering the range of runtime functionality

* Additional or enhanced functionality and additional hardware support only available in eCosPro Developer's Kits
** Optional add-on to eCosPro Developer's Kits
*** Previously only available in the eCosPro Developer's Kit. Infrastructure elements now contributed to eCos project by eCosCentric.

In-depth technical descriptions of the runtime functionality are available in the online eCos documentation. eCos also includes a range of host based tools supporting the development of eCos-based embedded applications.