
Programming Embedded Systems.
With C and GNU Development Tools
Michael Barr & Anthony Massa(Author)
O'Reilly (Publisher)
2nd Edition
Published on 14. November 2006
Book
326 pages
978-0-596-00983-0 (ISBN)
Description
If you have programming experience and a familiarity with C--the dominant language in embedded systems--Programming Embedded Systems, Second Edition is exactly what you need to get started with embedded software. This software is ubiquitous, hidden away inside our watches, DVD players, mobile phones, anti-lock brakes, and even a few toasters. The military uses embedded software to guide missiles, detect enemy aircraft, and pilot UAVs. Communication satellites, deep-space probes, and many medical instruments would have been nearly impossible to create without embedded software.
The first edition of Programming Embedded Systems taught the subject to tens of thousands of
people around the world and is now considered the bible of embedded programming. This second edition has been updated to cover all the latest hardware designs and development methodologies.
The techniques and code examples presented here are directly applicable to real-world embedded software projects of all sorts. Examples use the free GNU software programming tools, the eCos and Linux operating systems, and a low-cost hardware platform specially developed for this book. If you obtain these tools along with
Programming Embedded Systems, Second Edition, you'll have a full environment for exploring embedded systems in depth. But even if you work with different hardware and software, the principles covered in this book
apply.
Whether you are new to embedded systems or have done embedded work before, you'll benefit from the topics in this book, which include:
* How building and loading programs differ from desktop or server
computers
* Basic debugging techniques--a critical skill when working with
minimally endowed embedded systems
* Handling different types of memory
* Interrupts, and the monitoring and control of on-chip and external
peripherals
* Determining whether you have real-time requirements, and whether
your operating system and application can meet those requirements
* Task synchronization with real-time operating systems and embedded
Linux
* Optimizing embedded software for size, speed, and power consumption
* Working examples for eCos and embedded Linux
So whether you're writing your first embedded program, designing the
latest generation of hand-held whatchamacalits, or managing the people
who do, this book is for you. Programming Embedded
Systems will help you develop the knowledge and skills you
need to achieve proficiency with embedded software.
Praise for the first edition:
"This lively and readable book is the perfect introduction for those venturing into embedded systems software development for the first time. It provides in one place all the important topics necessary to orient programmers to the embedded development process.
--Lindsey Vereen, Editor-in-Chief, Embedded Systems Programming
The first edition of Programming Embedded Systems taught the subject to tens of thousands of
people around the world and is now considered the bible of embedded programming. This second edition has been updated to cover all the latest hardware designs and development methodologies.
The techniques and code examples presented here are directly applicable to real-world embedded software projects of all sorts. Examples use the free GNU software programming tools, the eCos and Linux operating systems, and a low-cost hardware platform specially developed for this book. If you obtain these tools along with
Programming Embedded Systems, Second Edition, you'll have a full environment for exploring embedded systems in depth. But even if you work with different hardware and software, the principles covered in this book
apply.
Whether you are new to embedded systems or have done embedded work before, you'll benefit from the topics in this book, which include:
* How building and loading programs differ from desktop or server
computers
* Basic debugging techniques--a critical skill when working with
minimally endowed embedded systems
* Handling different types of memory
* Interrupts, and the monitoring and control of on-chip and external
peripherals
* Determining whether you have real-time requirements, and whether
your operating system and application can meet those requirements
* Task synchronization with real-time operating systems and embedded
Linux
* Optimizing embedded software for size, speed, and power consumption
* Working examples for eCos and embedded Linux
So whether you're writing your first embedded program, designing the
latest generation of hand-held whatchamacalits, or managing the people
who do, this book is for you. Programming Embedded
Systems will help you develop the knowledge and skills you
need to achieve proficiency with embedded software.
Praise for the first edition:
"This lively and readable book is the perfect introduction for those venturing into embedded systems software development for the first time. It provides in one place all the important topics necessary to orient programmers to the embedded development process.
--Lindsey Vereen, Editor-in-Chief, Embedded Systems Programming
More details
Language
English
Place of publication
Sebastopol
United States
Target group
Professional and scholarly
Edition type
Revised edition
Illustrations
Illustrations
Dimensions
Height: 232 mm
Width: 179 mm
Weight
534 gr
ISBN-13
978-0-596-00983-0 (9780596009830)
Schweitzer Classification
Other editions
Additional editions

E-Book
10/2006
1st Edition
O'Reilly
€32.49
Available for download

E-Book
10/2006
O'Reilly
€41.99
Available for download
Previous edition

Michael Barr
Programming Embedded System in C and C++
Book
03/1999
O'Reilly
€24.50
Article exhausted; check for reprint
Person
Michael Barr is a leading authority on the design of embedded computer systems. He has provided expert testimony in court, appeared on the PBS show "American Business Review", and been quoted in newspaper articles. Barr is also the author of more than forty technical articles, co-author of the "Embedded Systems Dictionary", and founder of Embedipedia.net. For three and a half years he served as editor-in-chief of Embedded Systems Programming magazine. Mr. Barr is CTO of the Netrino Consultants Network, which he founded in 1996. Netrino consultants have designed and developed software that runs millions of systems worldwide, from consumer electronics to medical devices. Anthony Massa has been developing embedded software since 1994 and wrote "Embedded Software Development with eCos" (Prentice Hall PTR).
Content
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 The Scheduler Tasks 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 Functionality 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++ 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