Rick Grehan
EMBEDDED SYSTEMS PROGRAMMING IN C AND ASSEMBLY LANGUAGE, John Forrest Brown, Van Nostrand Reinhold, ISBN 0-442-01817-7, $49.95
DEVELOPING REAL-TIME EMBEDDED SOFTWARE IN A MARKET-DRIVEN COMPANY, Karen S. Ellison, Wiley, ISBN 0-471-59459-8, $39.95
It must have been providence that arranged to have these two books arrive almost simultaneously. Here's a topic--developing embedded systems--explored by authors in two occasionally overlapping dimensions.
Although these books are complementary and not contradictory, I did encounter passages that suggested placing the authors together in a closed room would make for lively conversation. John Forrest Brown's Embedded Systems Programming in C and Assembly Language has a ``roll up your sleeves and do it'' attitude;
Karen S. Ellison's Developing Real-Time Embedded Software in a Market-Driven Company is all about planning. I'll examine Embedded Systems Programming first.
I'm going to admit up front that I was confused about the audience that Brown was targeting. Initially, I was convinced that the audience was embedded systems software developers; specifically, those working in C and assembly language.
Not far into it, I decided I was wrong. True, there are plenty of code examples (and an included disk if you don't want to type everything in), but the book also contains guidelines on the design process. Admittedly, these guidelines are brief, but the appendixes hold reasonably complete requirements and design documents. I concluded that the person most likely to read this book would be a software engineer contemplating an embedded systems project.
For hardware platforms--specifically, CPUs--the book examines only the Intel 80x86 and Motorola 680x0 processors. In all assembly language examples, the au
thor provides source code for both CPUs. Although Brown handled the parallel presentation of both CPUs well, I found it disturbing that he ignored a huge slice of the embedded CPU pie. Where are the Intel 8051s or the Zilog Z8s? And the Motorola 6800s?
The author suggests that most embedded architectural schemes are built around either a VME bus--and therefore will use a 680x0--or an STD bus--and therefore will use an 80x86. It seems to me that a more likely answer is that the examples given in the book, which consist of a pilot control panel and an interface box for a guided-missile-to-aircraft interface, are simply too complex to be easily handled by 8-bit embedded processors.
This is a book on C and assembly language, of course, and the author divides the work between those two languages as you might expect. C handles most of the computational work; assembly language picks up the ball when there's an interrupt service routine or start-up code to be managed. Start-up code is important enough t
hat Brown devotes an entire chapter to it. In embedded systems, the start-up code is what starts all the digital blood flowing.
Meanwhile, Developing Real-Time Embedded Software is a case study of a ``hypothetical'' design project of an 80188-based drive controller. I put hypothetical in quotes because the documentation is so complete, the author's explanations and analyses so detailed, that I can't be certain that the described system isn't sitting in a computer somewhere.
Where Brown's book is heavy on programming tools and techniques, Ellison's is all on design guidelines. Ellison justifies the book's emphasis: ``System problems usually are not due to poor coding of individual components, but to poor design.'' I was gratified to see Ellison pay so much attention to performance analysis, three chapters in all. The first two such chapters concentrate on the analysis of individual system components (again, using the drive controller as the model project); the third chapter shows you how to pull
all the components together and build an overall performance view of the system.
The entire design document--diagrams, tables, text, and all--is in the appendixes. I am tempted to say that if you learn by example, you should go straight for the appendixes. That would, however, be a mistake here. The author's style is too illuminating to miss. Besides, toward the beginning, Ellison suggests three alternative reading approaches. Pick the one you like best.
Earlier, I wrote that anyone contemplating software development in the embedded marketplace would be a likely buyer of Embedded Systems Programming. I will now modify that and suggest that you seek out both books: Embedded Systems Programming to see the kind of software you'll be dealing with, and Developing Real-Time Embedded Software so you'll get your project right the first time.
Rick Grehan is technical director of the BYTE Lab. He can be reached on the Internet or BIX at
rick_g@bix.com
.