eCos User Guide

Documentation licensing terms

This material may be distributed only subject to the terms and conditions set forth in the Open Publication License, v1.0 or later (the latest version is presently available at

Distribution of the work or derivative of the work in any standard (paper) book form is prohibited unless prior permission is obtained from the copyright holder.


Altera® and Excalibur™ are trademarks of Altera Corporation.

AMD® is a registered trademark of Advanced Micro Devices, Inc.

ARM®, StrongARM®, Thumb®, ARM7™, ARM9™ is a registered trademark of Advanced RISC Machines, Ltd.

Cirrus Logic® and Maverick™ are registered trademarks of Cirrus Logic, Inc.

Cogent™ is a trademark of Cogent Computer Systems, Inc.

Compaq® is a registered trademark of the Compaq Computer Corporation.

eCos® is a registered trademark of eCosCentric Limited.

Fujitsu® is a registered trademark of Fujitsu Limited.

IBM®, and PowerPC™ are trademarks of International Business Machines Corporation.

IDT® is a registered trademark of Integrated Device Technology Inc.

Intel®, i386™, Pentium®, StrataFlash® and XScale™ are trademarks of Intel Corporation.

Intrinsyc® and Cerf™ are trademarks of Intrinsyc Software, Inc.

Linux® is a registered trademark of Linus Torvalds.

Matsushita™ and Panasonic® are trademarks of the Matsushita Electric Industrial Corporation.

Microsoft®, Windows®, Windows NT® and Windows XP® are registered trademarks of Microsoft Corporation, Inc.

MIPS®, MIPS32™ MIPS64™, 4K™, 5K™ Atlas™ and Malta™ are trademarks of MIPS Technologies, Inc.

Motorola®, ColdFire® is a trademark of Motorola, Inc.

NEC® V800™, V850™, V850/SA1™, V850/SB1™, VR4300™, and VRC4375™ are trademarks of NEC Corporation.

PMC-Sierra® RM7000™ and Ocelot™ are trademarks of PMC-Sierra Incorporated.

Red Hat, RedBoot™, GNUPro®, and Insight™ are trademarks of Red Hat, Inc.

Samsung® and CalmRISC™ are trademarks or registered trademarks of Samsung, Inc.

Sharp® is a registered trademark of Sharp Electronics Corp.

SPARC® is a registered trademark of SPARC International, Inc., and is used under license by Sun Microsystems, Inc.

Sun Microsystems® and Solaris® are registered trademarks of Sun Microsystems, Inc.

SuperH™ and Renesas™ are trademarks owned by Renesas Technology Corp.

Texas Instruments®, OMAP™ and Innovator™ are trademarks of Texas Instruments Incorporated.

Toshiba® is a registered trademark of the Toshiba Corporation.

UNIX® is a registered trademark of The Open Group.

All other brand and product names, trademarks, and copyrights are the property of their respective owners.

Table of Contents
I. Introduction
1. Key Features
2. eCos Overview
3. eCos Licence Overview
Questions and answers
Previous License
4. Notation and Conventions
GDB and GCC Command Notation
Directory and File System Conventions
Version Conventions
5. Documentation Roadmap
II. Installing eCos
6. System Requirements
7. Installation on Linux
8. Installation on Windows
9. Target Setup
Connecting Via Serial Line
Connecting Via Ethernet
Using A Simulator Target
Using A Synthetic Target
III. Programming With eCos
10. Programming With eCos
The Development Process
11. Configuring and Building eCos from Source
eCos Start-up Configurations
Configuration Tool on Windows and Linux Quick Start
Ecosconfig on Windows and Linux Quick Start
12. Running an eCos Test Case
Using the Configuration Tool
Using the command line
Testing Filters
13. Building and Running Sample Applications
eCos Hello World
A Sample Program with Two Threads
14. More Features — Clocks and Alarm Handlers
A Sample Program with Alarms
IV. The eCos Configuration Tool
15. Getting Started
Invoking the eCos Configuration Tool
The Component Repository
eCos Configuration Tool Documents
16. Getting Help
Context-sensitive Help for Dialogs
Context-sensitive Help for Other Windows
Context-sensitive Help for Configuration Items
Methods of Displaying HTML Help
17. Customization
Window Placement
18. Screen Layout
Configuration Window
19. Updating the Configuration
Adding and Removing Packages
Platform Selection
Using Templates
20. Searching
21. Building
Selecting Build Tools
Selecting User Tools
22. Execution
23. Creating a Shell
Keyboard Accelerators
V. eCos Programming Concepts and Techniques
24. CDL Concepts
About this chapter
Component Repository
Component Definition Language
Configuration Items
25. The Component Repository and Working Directories
Component Repository
Build Tree
Install Tree
Application Build Tree
26. Compiler and Linker Options
Compiling a C Application
Compiling a C++ Application
27. Debugging Techniques
Kernel Instrumentation
VI. Configuration and the Package Repository
28. Manual Configuration
Directory Tree Structure
Creating the Build Tree
Conflicts and constraints
Building the System
Coarse-grained Configuration
Fine-grained Configuration
Editing an eCos Savefile
Editing the Sources
Modifying the Memory Layout
29. Managing the Package Repository
Package Installation
Package Structure
VII. Appendixes
A. Target Setup
MN10300 stdeval1 Hardware Setup
MN10300 Architectural Simulator Setup
AM33 STB Hardware Setup
TX39 Hardware Setup
TX39 Architectural Simulator Setup
TX49 Hardware Setup
VR4300 Hardware Setup
VRC4375 Hardware Setup
Atlas/Malta Hardware Setup
PowerPC Cogent Hardware Setup
PowerPC MBX860 Hardware Setup
PowerPC Architectural Simulator Setup
SPARClite Hardware Setup
SPARClite Architectural Simulator Setup
ARM PID Hardware Setup
ARM AEB-1 Hardware Setup
ARM Cogent CMA230 Hardware Setup
Cirrus Logic ARM EP7211 Development Board Hardware Setup
Cirrus Logic ARM EP7212 Development Board Hardware Setup
Cirrus Logic ARM EP7312 Development Board Hardware Setup
Cirrus Logic ARM EP7209 Development Board Hardware Setup
Cirrus Logic ARM CL-PS7111 Evaluation Board Hardware Setup
StrongARM EBSA-285 Hardware Setup
Compaq iPAQ PocketPC Hardware Setup
Arm Industrial Module AIM 711 Hardware Setup
SH3/EDK7708 Hardware Setup
SH3/CQ7708 Hardware Setup
SH3/HS7729PCI Hardware Setup
SH3/SE77x9 Hardware Setup
SH4/CQ7750 Hardware Setup
SH4/SE7751 Hardware Setup
NEC CEB-V850/SA1 Hardware Setup
NEC CEB-V850/SB1 Hardware Setup
i386 PC Hardware Setup
i386/Linux Synthetic Target Setup
B. Real-time characterization
Board: ARM AEB-1 Revision B Evaluation Board
Board: Atmel AT91/EB40
Board: Intel StrongARM EBSA-285 Evaluation Board
Board: Cirrus Logic EDB7111-2 Development Board
Board: ARM PID Evaluation Board
Board: Intel IQ80310 XScale Development Kit
Board: Toshiba JMR3904 Evaluation Board
Board: Toshiba REF 4955
Board: Matsushita STDEVAL1 Board
Board: Fujitsu SPARClite Evaluation Board
Board: Cogent CMA MPC860 (PowerPC) Evaluation
Board: NEC VR4373
Board: Intel SA1110 (Assabet)
Board: Intel SA1100 (Brutus)
Board: Motorola MBX
Board: Hitachi EDK7708
Board: CQ CqREEK SH3 Evaluation Board (cq7708)
Board: Hitachi HS7729PCI HS7729 SH3
Board: Hitachi Solution Engine 7751 SH4 (se7751)
Board: PC
Board: NEC V850 Cosmo Evaluation Board
Board: NEC V850 Cosmo Evaluation Board
Board: ARM Industrial Module AIM711 (S3C4510)
C. GNU General Public License
List of Tables
11-1. Configuration for various download methods
18-1. Cell types
23-1. Keyboard accelerators
24-1. CDL Expressions
24-2. Configuration properties
List of Figures
11-1. Configuration Tool
11-2. Template selection
11-3. Configuring for the target
11-4. Selecting the Build Library menu item
11-5. Save file dialog
11-6. Build tools dialog
11-7. User tools dialog
11-8. Selecting the Build Tests menu item
12-1. Run tests
12-2. Properties dialog box
13-1. Two threads with simple print statements after random delays
15-1. Configuration Tool
15-2. Repository relocation dialog box
15-3. Save As dialog box
15-4. Open dialog box
16-1. HTML Help viewer
17-1. Settings dialog, Display tab
17-2. Settings dialog, Viewers tab
19-1. Packages dialog box
19-2. Platforms dialog box
19-3. Platform Modify dialog box
19-4. Templates dialog box
19-5. Options
19-6. Resolve conflicts window
20-1. Find dialog box
21-1. Build tools
21-2. User tools
22-1. Properties dialog box
22-2. Run tests
22-3. Add files from folder
25-1. Component repository
List of Examples
11-1. Getting help from ecosconfig
11-2. ecosconfig output — list of available packages, targets and templates
14-1. A sample program that creates an alarm
27-1. Hello world with tracing
27-2. Using instrument buffers
27-3. Instrument buffer output
28-1. eCos linker script fragment