Programming Embedded Systems, Second Edition
With C and GNU Development Tools
By
Michael Barr,
Anthony Massa
October 2006
Pages: 326
| Table of Contents
| Index
| Forum
| Colophon
Table of Contents
-
Chapter 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
-
Chapter 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
-
Chapter 3 Your First Embedded Program
-
Hello, World!
-
The Blinking LED Program
-
The Role of the Infinite Loop
-
Chapter 4 Compiling, Linking, and Locating
-
The Build Process
-
Building the Blinking LED Program
-
A Quick Look at Makefiles
-
Chapter 5 Downloading and Debugging
-
Downloading the Blinking LED Program
-
Remote Debuggers
-
Emulators
-
Other Useful Tools
-
Dig into the Hardware
-
Chapter 6 Memory
-
Types of Memory
-
Direct Memory Access
-
Endian Issues
-
Memory Testing
-
Validating Memory Contents
-
Using Flash Memory
-
Chapter 7 Peripherals
-
Control and Status Registers
-
The Device Driver Philosophy
-
Device Driver Design
-
Chapter 8 Interrupts
-
Overview
-
Interrupt Map
-
Interrupt Service Routine
-
The Improved Blinking LED Program
-
Summary of Interrupt Issues
-
Chapter 9 Putting It All Together
-
Application Overview
-
Working with Serial Ports
-
Command-Line Interface Processing
-
Chapter 10 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 Resources
-
Chapter 11 eCos Examples
-
Introduction
-
Task Mechanics
-
Mutex Task Synchronization
-
Semaphore Task Synchronization
-
Message Passing
-
eCos Interrupt Handling
-
Chapter 12 Embedded Linux Examples
-
Introduction
-
Accessing Hardware in Linux
-
Task Mechanics
-
Mutex Task Synchronization
-
Semaphore Task Synchronization
-
Message Passing
-
Chapter 13 Extending Functionality
-
Common Peripherals
-
Networking for All Devices Great and Small
-
Chapter 14 Optimization Techniques
-
Increasing Code Efficiency
-
Decreasing Code Size
-
Problems with Optimizing Compilers
-
Reducing Memory Usage
-
Power-Saving Techniques
-
Limiting the Impact of C++
-
Appendix 1 The Arcom VIPER-Lite Development Kit
-
Appendix 2 Setting Up Your Software Development Environment
-
Windows Host Installation
-
Linux Host Installation
-
Example Code Installation
-
Appendix 3 Building the GNU Software Tools
-
Extracting the Source Files
-
Building the Toolchain
-
Appendix 4 Setting Up the eCos Development Environment
-
The eCos Build Environment
-
Appendix 5 Setting Up the Embedded Linux Development Environment
-
Linux Build Environment Setup
-
Embedded Linux Examples
Return to Programming Embedded Systems