Synopses & Reviews
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 ofpeople 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 withProgramming 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 bookapply.
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 servercomputers
- Basic debugging techniques--a critical skill when working withminimally endowed embedded systems
- Handling different types of memory
- Interrupts, and the monitoring and control of on-chip and externalperipherals
- Determining whether you have real-time requirements, and whetheryour operating system and application can meet those requirements
- Task synchronization with real-time operating systems and embeddedLinux
- 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 thelatest generation of hand-held whatchamacalits, or managing the peoplewho do, this book is for you. Programming EmbeddedSystems will help you develop the knowledge and skills youneed 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
Synopsis
Authored by two of the leading authorities in the field, this guide offers readers the knowledge and skills needed to achieve proficiency with embedded software.
Synopsis
Did you write C code last week? Does your code work? Is your design clean? If you answered yes to the first question but got queasy over the second two, you need to know about Test Driven Development. TDD helps you write code that works the first time, and then helps you keep it running as the code evolves to meet new needs.
In Test Driven Development for Embedded C, author James W. Grenning shows embedded software developers how to bring the benefits of TDD to embedded C.
In the book, you'll see how to apply TDD to C and the world of embedded software development. Learn how to break key dependencies, allowing code to be tested thoroughly. Explore how to test-drive your product's core logic, exploiting the power of your development environment to deliver better software.
In fact, as the book shows, you can test-drive a device driver before you even have the device soldered into a circuit board. Avoid the natural delays when testing on the target by using the tailored TDD Microcycle, employing off-target tests and dual-targeted code.
Learn how to make code testable and more flexible, better able to handle the inevitable changes demanded by the market. The tests drive development and then serve as an executable specification, keeping track of the critical details and assumptions baked into the code.
In Test Driven Development for Embedded C, you'll find that TDD is a different way to program-unit tests are written in a tight feedback loop with the production code, producing testable code and greatly reducing wasteful debugging. TDD also influences design. When tests are considered part of design, you create modular and loosely coupled code, the hallmarks of a good design.
With Test Driven Development for Embedded C, C developers-even embedded C developers-can finally write cleaner, testable code with TDD.
About the Author
Michael Barr is a leading authority on the design of embeddedcomputer systems. He has provided expert testimony in court, appearedon the PBS show "American Business Review", and been quoted innewspaper articles. Barr is also the author of more than fortytechnical articles, co-author of the "Embedded Systems Dictionary",and a founder of EmbeddedGurus.net. For three and a half years heserved as editor-in-chief of Embedded Systems Programming magazine.Mr. Barr also founded Netrino, LLC. The firm helps product companiesdevelop embedded software faster in three ways: by teaching bestpractices, by consulting with system designers, and by outsourcingfirmware implementation. Netrino's engineers have designed ordeveloped software that runs millions of products worldwide, fromconsumer electronics to medical devices.Anthony Massa has over a decade of experience in embedded softwaredevelopment. He has worked on the architecture and development ofsoftware for several products in use today, including satellite andcable modems, wireless radios, set-top boxes, and head-endtransmission equipment. Anthony has written several articles inleading software development magazines focusing on embedded softwaredevelopment and is author of the book Embedded SoftwareDevelopment with eCos.Anthony is Chief Engineer of Software at Elintrix(http://www.elintrix.com), a provider of wireless networked and signalprocessing products. He holds a dual B.S./B.A. degree in electricalengineering from the University of San Diego.
Anthony Massa has over a decade of experience in embedded software development. He has worked on the architecture and development of software for several products in use today, including satellite and cable modems, wireless radios, set-top boxes, and head-end transmission equipment. Anthony has written several articles in leading software development magazines focusing on embedded software development and is author of the book Embedded Software Development with eCos.Anthony is co-founder and Chief Engineer of Software at Elintrix (http://www.elintrix.com), a provider of wireless networked and signal processing products. He holds a dual B.S./B.A. degree in electrical engineering from the University of San Diego.
Table of Contents
Dedication Foreword Preface Chapter 1: Introduction Chapter 2: Getting to Know the Hardware Chapter 3: Your First Embedded Program Chapter 4: Compiling, Linking, and Locating Chapter 5: Downloading and Debugging Chapter 6: Memory Chapter 7: Peripherals Chapter 8: Interrupts Chapter 9: Putting It All Together Chapter 10: Operating Systems Chapter 11: eCos Examples Chapter 12: Embedded Linux Examples Chapter 13: Extending Functionality Chapter 14: Optimization Techniques Appendix 1: The Arcom VIPER-Lite Development Kit Appendix 2: Setting Up Your Software Development Environment Appendix 3: Building the GNU Software Tools Appendix 4: Setting Up the eCos Development Environment Appendix 5: Setting Up the Embedded Linux Development Environment