Preface
First figure out why you want the students to learn the subject and what you want them to know, and the method
will result more or less by common sense.
Richard Feynman
Embedded software is in almost every electronic device in use today. There is software hidden away inside our
watches, DVD players, mobile phones, antilock 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've been nearly impossible to create without it.
Someone has to write all that software, and there are tens of thousands of electrical engineers, computer
scientists, and other professionals who actually do. We are two of them, and we know from our personal experiences
just how hard it can be to learn the craft.
Each embedded system is unique, and the hardware is highly specialized to the application domain. As a result,
embedded systems programming can be a widely varying experience and can take years to master. However, one
common denominator across almost all embedded software development is the use of the C programming language.
This book will teach you how to use C in any embedded system.
Even if you already know how to write embedded software, you can still learn a lot from this book. In addition to
learning how to use C more effectively, you'll also benefit from the detailed explanations and source code associated
with common embedded software problems. Among the advanced topics covered in the book are memory testing and
verification, device driver design and implementation, real
-
time operating system internals, and code optimization
techniques.
Why We Wrote This Book
Each year, globally, approximately one new processor is manufactured per person. That's more than six billion new
processors each year, fewer than two percent of which are the Pentiums and PowerPCs at the heart of new
personal computers. You may wonder whether there are really that many computers surrounding us. But we bet that
within five minutes you can probably spot dozens of products in your own home that contain processors: televisions,
stereos, MP3 players, coffee makers, alarm clocks, VCRs, DVD players, microwaves, dishwashers, remote controls,
bread machines, digital watches, and so on. And those are just the personal possessionsmany more such devices are
used at work. The fact that every one of those products contains not only a processor, but also software, is the
impetus for this book.
One of the hardest things about this subject is knowing when to stop writing. Each embedded system is unique, and
we have therefore learned that there is an exception to every rule. Nevertheless, we have tried to boil the subject
down to its essence and present the things that programmers definitely need to know about embedded systems.
Intended Audience
This is a book about programming embedded systems in C. As such, it assumes that the reader already has some
programming experience and is at least familiar with the syntax of the C language. It also helps if you have some
familiarity with basic data structures, such as linked lists. The book does not assume that you have a great deal of
knowledge about computer hardware, but it does expect that you are willing to learn a little bit about hardware
along the way. This is, after all, a part of the job of an embedded programmer.
While writing this book, we had two types of readers in mind. The first reader is a beginnermuch as we were once.
He has a background in computer science or engineering and a few years of programming experience. The beginner is
interested in writing embedded software for a living but is not sure just how to get started. After reading the first
several chapters, he will be able to put his programming skills to work developing simple embedded programs. The
rest of the book will act as a reference for the more advanced topics encountered in the coming months and years
of his career.
The second reader is already an embedded systems programmer. She is familiar with embedded hardware and knows
how to write software for it but is looking for a reference book that explains key topics. Perhaps the embedded
systems programmer has experience only with assembly language programming and is relatively new to C. In that
case, the book will teach her how to use the C language effectively in an embedded system, and the later chapters
will provide advanced material on real
-
time operating systems, peripherals, and code optimizations.
Whether you fall into one of these categories or not, we hope this book provides the information you are looking for
in a format that is friendly and easily accessible.
Organization
The book contains 14 chapters and 5 appendixes. The chapters can be divided quite nicely into two parts. The first
part consists of Chapters 1 through 5 and is intended mainly for newcomers to embedded systems. These chapters
should be read in their entirety and in the order that they appear. This will bring you up to speed quickly and
introduce you to the basics of embedded software development. After completing
Chapter 5
, you will be ready to
develop small pieces of embedded software on your own.
This document is created with trial version of CHM2PDF Pilot 2.11.
- 1
- 2
前往页