Home Page Icon
Home Page
Table of Contents for
Cover
Close
Cover
by Anthony Massa, Michael Barr
Programming Embedded Systems, 2nd Edition
Dedication
A Note Regarding Supplemental Files
Foreword
Preface
Why We Wrote This Book
Intended Audience
Organization
Conventions, Typographical and Otherwise
Obtaining the Examples Online
Using Code Examples
Comments and Questions
SafariĀ® Enabled
Personal Comments and Acknowledgments
From Michael Barr
From Anthony Massa
1. Introduction
What Is an Embedded System?
History and Future
Real-Time Systems
Variations on a Theme
Common System Components
Requirements That Affect Design Choices
Embedded Design Examples
Digital Watch
Video Game Player
Mars Rover
Life As an Embedded Software Developer
The C Language: The Lowest Common Denominator
Other Embedded Languages
Choosing a Language for the Book
Consistent Coding Practices
A Few Words About Hardware
2. Getting to Know the Hardware
Understanding the Big Picture
Hardware Basics
Schematic Fundamentals
Examine the Landscape
Memory Map
Learn How to Communicate
Getting to Know the Processor
Processors in General
The PXA255 XScale Processor
Study the External Peripherals
Initialize the Hardware
3. Your First Embedded Program
Hello, World!
The Blinking LED Program
The ledInit Function
The ledToggle Function
The delay_ms Function
The Role of the Infinite Loop
4. Compiling, Linking, and Locating
The Build Process
Compiling
Linking
Startup code
Locating
Building the Blinking LED Program
Compile
Link and Locate
Format the Output File
A Quick Look at Makefiles
5. Downloading and Debugging
Downloading the Blinking LED Program
Debug Monitors
RedBoot
Downloading with RedBoot
Running programs with RedBoot
When in ROM...
Managing ROM with RedBoot
Remote Debuggers
Debugging on the Arcom Board
Emulators
Other Useful Tools
Simulators
Hardware Tools
Lint
Version Control
Dig into the Hardware
6. Memory
Types of Memory
Types of RAM
Types of ROM
Hybrid Types
Direct Memory Access
Endian Issues
Endianness in Devices
Endianness in Networking
Memory Testing
Common Memory Problems
Electrical wiring problems
Missing memory chips
Improperly inserted chips
Developing a Test Strategy
Data bus test
Address bus test
Device test
Putting it all together
Validating Memory Contents
Checksums
Cyclic Redundancy Checks
Using Flash Memory
Working with Flash Memory
Flash Drivers
7. Peripherals
Control and Status Registers
Bit Manipulation
Testing bits
Setting bits
Clearing bits
Toggling bits
Shifting bits
Bitmasks
Bitfields
Struct Overlays
The Device Driver Philosophy
A Serial Device Driver
Register interface
State variables
Initialization routine
Device driver API
Testing the Serial Device Driver
Extending the Functionality of the Serial Device Driver
Device Driver Design
8. Interrupts
Overview
Priorities
Levels and Edges
Enabling and Disabling
Interrupt Map
Interrupt Service Routine
Shared Data and Race Conditions
The Improved Blinking LED Program
How Timers Work
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
The Scheduler
Real-Time Scheduling
Scheduling Points
Locking and Unlocking
Tasks
Task States
Context switch
The idle task
Task Context
Task Priorities
Rate monotonic scheduling
Task Mechanics
Task Synchronization
Mutexes and Semaphores
Deadlock and priority inversion
Message Passing
Other Functionality
Interrupt Handling
Real-Time Characteristics
To Use or Not to Use an RTOS
RTOS Selection Process
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 Functionality
Common Peripherals
Inter-Integrated Circuit Bus
Serial Peripheral Interface
Programmable Logic
Programmable Logic Device
Complex Programmable Logic Device
Field Programmable Gate Array
Pulse Width Modulation
Analog circuits
Digital control
Networking for All Devices Great and Small
Benefits of Network Support
Networking Solutions for Embedded Systems
14. Optimization Techniques
Increasing Code Efficiency
Decreasing Code Size
Problems with Optimizing Compilers
Reducing Memory Usage
Power-Saving Techniques
Processor Modes
Clock Frequency
External Memory Access
Limiting the Impact of C++
1. The Arcom VIPER-Lite Development Kit
2. Setting Up Your Software Development Environment
Windows Host Installation
Cygwin Installation
GNU Software Tools Installation
Linux Host Installation
GNU Software Tools Installation
Example Code Installation
3. Building the GNU Software Tools
Extracting the Source Files
Building the Toolchain
4. Setting Up the eCos Development Environment
The eCos Build Environment
eCos Source Code Installation
Building the eCos Library
5. Setting Up the Embedded Linux Development Environment
Linux Build Environment Setup
Embedded Linux Examples
Building the Linux Examples
Downloading and Running the Linux Examples
Debugging Embedded Linux Examples
About the Authors
Copyright
Search in book...
Toggle Font Controls
Playlists
Add To
Create new playlist
Name your new playlist
Playlist description (optional)
Cancel
Create playlist
Sign In
Email address
Password
Forgot Password?
Create account
Login
or
Continue with Facebook
Continue with Google
Sign Up
Full Name
Email address
Confirm Email Address
Password
Login
Create account
or
Continue with Facebook
Continue with Google
Next
Next Chapter
Programming Embedded Systems
Add Highlight
No Comment
..................Content has been hidden....................
You can't read the all page of ebook, please click
here
login for view all page.
Day Mode
Cloud Mode
Night Mode
Reset