Foreword.
Preface
1. Introduction
What Is an Embedded System?
Variations on a Theme
Embedded Design Examples
Life As an Embedded Software Developer
The C Language: The Lowest Common Denominator
A Few Words About Hardware
2. Getting to Know the Hardware
Understanding the Big Picture
Hardware Basics
Examine the Landscape
Learn How to Communicate
Getting to Know the Processor
Study the External Peripherals
Initialize the Hardware
3. Your First Embedded Program
Hello, World!
The Blinking LED Program
The Role of the Infinite Loop
4. Compiling, Linking, and Locating
The Build Process
Building the Blinking LED Program
A Quick Look at Makefiles
5. Downloading and Debugging
Downloading the Blinking LED Program
Remote Debuggers
Emulators
Other Useful Tools
Dig into the Hardware
6. Memory
Types of Memory
Direct Memory Access
Endian Issues
Memory Testing
Validating Memory Contents
Using Flash Memory
7. Peripherals
Control and Status Registers
The Device Driver Philosophy
Device Driver Design
8. Interrupts
Overview
Interrupt Map
Interrupt Service Routine
The Improved Blinking LED Program
Summary of Interrupt Issues
9. Putting It All Together
Application Overview
Working with Serial Ports
Command-Line Interface Processing
10. Operating Systems
History and Purpose
he Scheduler
Task Synchronization
Message Passing
Other Functionality
Interrupt Handling
Real-Time Characteristics
To Use or Not to Use an RTOS
Additional Resources
11.eCos Examples
Introduction
Task Mechanics
Mutex Task Synchronization
Semaphore Task Synchronization
Message Passing
eCos Interrupt Handling
12.Embedded Linux Examples
Introduction
Accessing Hardware in Linux
Task Mechanics
Mutex Task Synchronization
Semaphore Task Synchronization
Message Passing
13.Extending Functional
Common Peripherals
Networking for All Devices Great and Small
14.Optimization Techniques
Increasing Code Efficiency
Decreasing Code Size
Problems with Optimizing Compilers
Reducing Memory Usage
Power-Saving Techniques
Limiting the Impact of C++
……
Index