Share E-Book
Scan to open this page

Scan with your phone to open this page

Author: Michael Barr, Anthony Massa

Rating No ratings yet

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 op

AI Reading Assistant

Whole-book reading guide from stratified index samples; jump to passages in the text

AI guide
【One-Line Pitch】 A hands-on guide that turns experienced C programmers into embedded developers by teaching the hardware/software boundary, the GNU toolchain, and the discipline of debugging systems that have no screen, no keyboard, and no second chances. Best for programmers who already know C and want to work close to the metal. 【Book Arc】 - **Opening (~0%–10%)**: Frames what makes embedded different—limited memory, unique hardware, real-world inputs/outputs—and previews the book's structure and example platform. - **Early (~10%–35%)**: Teaches you to read hardware: schematics, memory maps, register definitions, and datasheets, so you can translate a board into C code. - **Middle (~35%–55%)**: Moves into the build process—host vs. target, compiler/assembler/linker/locator stages, debug monitors like RedBoot—and gets a first program (a blinking LED) running. - **Late (~55%–85%)**: Covers the working core of embedded practice: interrupts, memory types, peripherals, task synchronization, and real-time requirements (excerpts do not detail every chapter here). - **Ending (~85%–100%)**: Extending functionality (buses, networking) and optimization—shrinking code, cutting memory use, saving power—plus appendices for setting up the toolchain and example board. 【Key Takeaways】 - **Embedded means self-reliance** (Middle): Assume nothing works—not even standard library routines like `printf` or `memcpy`. This mindset shapes every debugging decision. - **Hardware fluency is a prerequisite, not a bonus** (Early): Reading schematics, net labels, test points, and memory maps lets you write correct register-level code instead of guessing. - **Fixed-width integers matter in embedded C** (Early): Standard `int` size varies by compiler and target; embedded code often needs explicit fixed-width types for predictable behavior. - **Read-modify-write is the fundamental register idiom** (Middle): Using `&=` and `|=` to toggle individual bits in hardware registers is the pattern behind nearly every peripheral driver. - **The build is a pipeline, not a single command** (Middle): Compile, assemble, link, then locate—each stage has a distinct role, and the locator is what makes a binary run on the target. - **Debug monitors bridge host and target** (Middle): Tools like RedBoot download code, inspect memory, and initialize hardware, letting you test before you have a full OS. - **Reliability drives design** (Early): The Viking and Pathfinder examples show that redundancy, watchdog timers, and memory diagnostics are engineering responses to systems that cannot be repaired. - **Real-time requirements must be identified before choosing an OS** (Late): Whether your system has hard timing constraints determines your OS and application architecture (excerpts only gesture at this chapter). 【Reading Tips】 - Deep-read the hardware chapter (Early) even if you think you know C—it is the part most programmers skip and most need. - Skim the appendices on toolchain setup unless you are actually configuring the Arcom board; they are reference material. - Treat the example code as a teaching tool, not production code—the authors deliberately omit includes and declarations to focus on concepts. - When you hit the build-process chapter, actually run the commands on your own toolchain; the host/target split only clicks when you do it. - Keep a datasheet open beside you for at least one chapter; the book's value is in teaching you to read hardware docs, not in memorizing them. 【Coverage Limits】 The excerpts cover the book's framing, hardware fundamentals, and build process in detail, but only gesture at the later chapters on interrupts, memory, real-time requirements, and optimization. This guide reflects that imbalance.
Excerpt 1
are 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 t...
View in text
Excerpt 2
32-bit processor and 128 MB of RAM; the rover, on the other * For example, Atari and Nintendo have designed some of their systems this way. 10 | Chapter 1: I...
View in text
Excerpt 3
esses, we will show you how to create a header file for the Arcom board; the following code is the first section of this file. This part of the header file d...
View in text
Excerpt 4
ect Object Linker Relocatable Locator Executable Figure 4-1. The embedded software development process these tools combine their efforts to produce an execut...
View in text
Excerpt 5
mple, most debug monitors incorporate some kind of command- line interface (CLI) where commands can be issued to the debug monitor for Downloading the Blinki...
View in text
Excerpt 6
cate. Every processor and every communication protocol must choose one type of endianness or the other. Thus, two processors with different endianness will c...
View in text
Excerpt 7
omial (always a 1) is left out of the binary representation. For example, the polynomial in CRC16 has four nonzero coefficients. But the corresponding binary...
View in text
Excerpt 8
or example, performing a divide by zero causes an exception. A software interrupt is also used by a program to perform various debug functions, such as break...
View in text
Tags
AI categories
Programming LanguageSoftware
ISBN: 0596009836
Publisher: O'Reilly Media
Publish Year: 2006
Language: English
Pages: 328
File Format: PDF
File Size: 4.2 MB
Text Preview (First 20 pages)
Registered users can read the full content for free

Register as a Gaohf Library member to read the complete e-book online for free and enjoy a better reading experience.

Generating text preview…