Archives
 
 
 
  Special
 
 
 
  About Us
 
 
 

Newsletter
Free E-mail Newsletter from BYTE.com

 
    
           
Visit the home page Browse the four-year online archive Download platform-neutral CPU/FPU benchmarks Find information for advertisers, authors, vendors, subscribers Request free information on products written about or advertised in BYTE Submit a press release, or scan recent announcements Talk with BYTE's staff and readers about products and technologies

ArticlesEmbedded Systems Programming


August 1994 / Book and CD-ROM Reviews / Embedded Systems Programming
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 .

Up to the Book and CD-ROM Reviews section contentsGo to next article: A Holocaust StorySearchSend a comment on this articleSubscribe to BYTE or BYTE on CD-ROM  
Flexible C++
Matthew Wilson
My approach to software engineering is far more pragmatic than it is theoretical--and no language better exemplifies this than C++.

more...

BYTE Digest

BYTE Digest editors every month analyze and evaluate the best articles from Information Week, EE Times, Dr. Dobb's Journal, Network Computing, Sys Admin, and dozens of other CMP publications—bringing you critical news and information about wireless communication, computer security, software development, embedded systems, and more!

Find out more

BYTE.com Store

BYTE CD-ROM
NOW, on one CD-ROM, you can instantly access more than 8 years of BYTE.
 
The Best of BYTE Volume 1: Programming Languages
The Best of BYTE
Volume 1: Programming Languages
In this issue of Best of BYTE, we bring together some of the leading programming language designers and implementors...

Copyright © 2005 CMP Media LLC, Privacy Policy, Your California Privacy rights, Terms of Service
Site comments: webmaster@byte.com
SDMG Web Sites: BYTE.com, C/C++ Users Journal, Dr. Dobb's Journal, MSDN Magazine, New Architect, SD Expo, SD Magazine, Sys Admin, The Perl Journal, UnixReview.com, Windows Developer Network