When my first book was just a proposal on the desk of an editor at O’Reilly & Associates, there were just one or two books about embedded programming in C. Half a decade later there are literally dozens of books on that and related subjects, with new titles introduced monthly from a number of publishers. Yet almost all of the “embedded books” to date have focused on software; very little attention has been paid to hardware design directly.
O’Reilly is again leading the way by publishing Designing Embedded Hardware, by John Catsoulis. To be honest, I myself didn’t at first see why the world needed this book—until, that is, I reviewed an early draft last year. In hindsight, I see that this book is much overdue.
I am an electrical engineer by education, yet I have spent my career working entirely as a programmer. Despite years spent earning a BSEE and a later MSEE, I’ve never designed anything more than a toy circuit. Though I know how to read a schematic, am handy with an oscilloscope, and know the smell of liquid solder (and burnt fingertips!) firsthand, if I were assigned the task of designing hardware I wouldn’t know where to begin.
That’s where Designing Embedded Hardware comes in. The author assumes “nothing about your knowledge beyond a rudimentary understanding of digital and analog electronics.” That’s just what I needed someone to do to teach me to develop the hardware too. And I have a strong feeling I’m not the only programmer who could use such hand holding.
This book begins by outlining the basic principles of electronics and computer architecture, in a much more efficient, practical, and accessible way than the typical textbooks. By page 77, in fact, you’re ready to start applying those principles by designing circuits. The fun starts officially in Chapter 4, which gets into construction options (breadboards, wirewrap, and printed circuit boards), routing and signal quality concerns, and hardware debugging. There’s even a primer on soldering for the uninitiated.
The remainder of the book consists of two sections. The first of these contains chapters dedicated to designs based on each of various popular microcontroller families—specifically Microchip’s PIC, Atmel’s AVR, and Motorola’s 68k processors and 56000-series DSPs.
The third part of the book deals with peripherals and interfacing. The list of such design topics is long and includes implementing SPI and I2C busses, communicating serially (including RS-232C, RS-422, IrDA, and even USB), networking with RS-485, CAN, and Ethernet, and analog interfacing (e.g., A/D, D/A, sensors of various types, PWM, and motor control). And remember this is a hardware design book, so each of these discussions is complete with a circuit design for a common IC implementation.
For too long hardware design has been a black art. Or maybe it has just seemed so because of the lack of good books on the subject. I hope John Catsoulis’ new book will be as successful in the market as it was in showing me how to design hardware. I can’t wait to put my new skills into practice.