
xii Preface
the book are memory testing and verification, device driver design and implemen-
tation, real-time operating system internals, and code optimization techniques.
Why I Wrote This Book
I once heard an estimate that in the United States there are eight microprocessor-
based devices for every person. At the time, I wondered how this could be. Are
there really that many computers surrounding us? Later, when I had more time to
think about it, I started to make a list of the things I used that probably contained
a microprocessor. Within five minutes, my list contained ten items: television, ste-
reo, coffee maker, alarm clock, VCR, microwave, dishwasher, remote control,
bread machine, and digital watch. And those were just my personal possessions—I
quickly came up with ten more devices I used at work.
The revelation that every one of those products contains not only a processor, but
also software, was not far behind. At last, I knew what I wanted to do with my
life. I wanted to put my programming skills to work developing embedded com-
puter systems. But how would I acquire the necessary knowledge? At this point, I
was in my last year of college. There hadn’t been any classes on embedded sys-
tems programming so far, and I wasn’t able to find any listed in the course catalog.
Fortunately, when I graduated I found a company that let me write embedded
software while I was still learning. But ...