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.
|Hardware Abstraction Layer (HAL)
|Functionality shared by all HALs including generic debugging and driver API.
|Functionality specific to the given architecture including exception/interrupt handlers, cache control, context switching code, and so forth.
|Processor family variant extensions to the standard architecture code
|Functionality common between variants
|Functionality specific to a platform. Isolates platform porting code from rest of the system.
|Two stage ISR/DSR design. Kernel never disables interrupts during normal operation, delivering best-in-class interrupt latencies.
|Processor exception handling
|Choice of real-time priority based round robin and bitmap schedulers. Preemptive timeslice can be disabled for cooperative multithreading. Additional schedulers can be added.
|Comprehensive thread management. Supports per-thread data.
|Rich set of primitives includes mutexes, condition variables, binary & counting semaphores, mail boxes, event flags, and spin locks
|Timers, counters and alarms
|Generic timer based functions
|Choice of memory allocators: Fixed block, variable block, and dynamic heaps
|Shared memory symmetric multi-processing support for selected architectures
|Debug and instrumentation support
|Tracing, profiling timers*, CPU performance monitoring, and so forth
|ISO C and math libraries
|Standard C library based on the ISO 9899:1990 / ANSI C3.159-1989 (C-89) specification
|Standard C++ library based on the ISO 14822 specification
|POSIX (ISO/IEC 9945-1) standards based API. Includes threads, signals, synchronization, timers, message queues, and file & device I/O.
|Optional compatibility layer implements version 3.02 of this Japanese µITRON standard RTOS API
|Generic networking interface, supports the ability to add alternative networking stacks. Provides a standard BSD socket interface.
|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)**.
|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 system
|Simple in-memory file system
|ROM file system
|Simple 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
|Read only support built-in to RedBoot
|Device support and device drivers
|General purpose framework for device drivers, and the layering of drivers.
|Controller Area Network device API and drivers
|Standard drivers are compatible with RedBoot, BSD and lwIP stacks. There are also lwIP specific drivers optimized for reduced resource usage.
|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 bus hardware drivers and alternative generic GPIO based bit-banged driver.
|Hard disk interface, with optional DMA support
|MMC, SD, SDHC, CompactFlash, and DataFlash**
|Removable flash card support
|Supports PCI bus based devices
|RS232 based serial and tty devices
|SPI and I2C connected memory access support
|Serial peripheral interface bus driver.
|Device & host stacks. Class support includes mass storage, networking and serial.
|Real time clock (RTC) support
|Simple portable API
|Debug & test support
|Basic target resident debug agent, supports serial and Ethernet communications
|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.
|Lightweight customizable bootloader, can support reliable in-field system and application updates, secure booting and more.
|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.
|Runtime 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.