Embedded software is in almost every electronic device designed today. There is software hidden away inside our watches, microwaves, VCRs, cellular telephones, and pagers; the military uses embedded software to guide smart missiles and detect enemy aircraft; communications satellites, space probes, and modern medicine would be nearly impossible without it. Of course, someone has to write all that software, and there are thousands of computer scientists, electrical engineers, and other professionals who actually do.
Each embedded system is unique and highly customized to the application at hand. As a result, embedded systems programming is a widely varying field that can take years to master. However, if you have some programming experience and are familiar with C or C++, you're ready to learn how to write embedded software. The hands-on, no-nonsense style of this book will help you get started by offering practical advice from someone who's been in your shoes and wants to help you learn quickly.
The techniques and code examples presented here are directly applicable to real-world embedded software projects of all sorts. Even if you've done some embedded programming before, you'll still benefit from the topics in this book, which include:
- Testing memory chips quickly and efficiently
- Writing and erasing Flash memory
- Verifying nonvolatile memory contents with CRCs
- Interfacing to on-chip and external peripherals
- Device driver design and implementation
- Optimizing embedded software for size and speed
So whether you're writing your first embedded program, designing the latest generation of hand-held whatchamacalits, or simply managing the people who do, this book is for you.
Embedded system programs differ from everyday interactive computer programs in many ways, not the least being they're normally designed to run reliably forever. Rarely a consideration in Windows apps.
There are other major differences: each embedded program normally runs on proprietary, dedicated hardware and must often be designed to make the hardware as cheap as possible to implement. Another difference; the processors are usually 8-bit or 16-bit to save money and though there is always some ROM there may be no RAM if enough registers are available.
Michael Barr's introduction sets the scene well to this intriguing subject, after which it's straight into programming embedded systems using Intel's 16-bit 80188EB processor on a Target1888EB board as an example hardware platform using C++--the de facto high level development language--for embedded systems--and assembler for the programs.
Barr clearly finds the subject matter both interesting and absorbing, which comes across well in his writing. The examples are lucid and easy to follow and the way in which he progresses the subject builds upon previously introduced material.
At 160 or so pages this is a remarkably readable book, so enjoy it from cover to cover before trying your hand with real kit. Once you've taken the concepts introduced in Programming Embedded Systems to heart you'll be working with far less readable manufacturer's data sheets. --Steve Patient