Cover | Table of Contents | Index | Colophon
Table of Contents
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 Hardware2. 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 Hardware3. Your First Embedded Program
Hello, World!
The Blinking LED Program
The Role of the Infinite Loop4. Compiling, Linking, and Locating
The Build Process
Building the Blinking LED Program
A Quick Look at Makefiles5. Downloading and Debugging
Downloading the Blinking LED Program
Remote Debuggers
Emulators
Other Useful Tools
Dig into the Hardware6. Memory
Types of Memory
Direct Memory Access
Endian Issues
Memory Testing
Validating Memory Contents
Using Flash Memory7. Peripherals
Control and Status Registers
The Device Driver Philosophy
Device Driver Design8. Interrupts
Overview
Interrupt Map
Interrupt Service Routine
The Improved Blinking LED Program
Summary of Interrupt Issues9. Putting It All Together
Application Overview
Working with Serial Ports
Command-Line Interface Processing10. Operating Systems
History and Purpose
The Scheduler
Tasks
Task Synchronization
Message Passing
Other Functionality
Interrupt Handling
Real-Time Characteristics
To Use or Not to Use an RTOS
Additional Resources11. eCos Examples
Introduction
Task Mechanics
Mutex Task Synchronization
Semaphore Task Synchronization
Message Passing
eCos Interrupt Handling12. Embedded Linux Examples
Introduction
Accessing Hardware in Linux
Task Mechanics
Mutex Task Synchronization
Semaphore Task Synchronization
Message Passing13. Extending Functionality
Common Peripherals
Networking for All Devices Great and Small14. Optimization Techniques
Increasing Code Efficiency
Decreasing Code Size
Problems with Optimizing Compilers
Reducing Memory Usage
Power-Saving Techniques
Limiting the Impact of C++A. The Arcom VIPER-Lite Development Kit
B. Setting Up Your Software Development Environment
C. Building the GNU Software Tools
D. Setting Up the eCos Development Environment
E. Setting Up the Embedded Linux Development Environment
Index
Return to Programming Embedded Systems
