Living to Learn
Learning is a process, not an activity with an end.
For novel ideas about building embedded systems (both hardware and firmware), join the 30,000+ engineers who subscribe to The Embedded Muse, a free biweekly newsletter. The Muse has no hype and no vendor PR. Click here to subscribe.
By Jack Ganssle
Colleges do a lousy job of preparing engineers for the real world. It's appalling that so little of a typical curricula is dedicated to making things work, to experiencing dramatic failure in all its guises, to taking an idea from inception through design and debug to a functioning product.
Engineering is about making things. Though we do need the theoretical grounding colleges seem so enamored of - now more than ever as complexity spirals - what differentiates us from scientists is our focus on producing products. Things that work. Things that improve life for the world's masses. Personally, I love to make things, and take great delight in the process of invention that leads to something that finally works.
It seems, though, that most young engineers graduate convinced that their education is over. After four or five years of struggling through differential equations and organic chemistry, they just know that studying is yet another of life's unpleasant obstacles they've finally overcome.
Embedded design is a dynamic field that changes daily. The knowledge half-life is around 2 years; if you are not studying constantly, then count on being obsolete before turning thirty. Yes, it's possible to find a comfortable niche where you can park for a number of years, ignoring the advance of technology. When it's time to hit the job market, though, you may be shocked to find everyone speaking an incomprehensible language.
Though night courses are a great way to catch up with new programming methods like C++, it's awfully hard to find universities offering state of the art information about hardware design. Generally the best courses are those offered by vendors. Any successful vendor is pushing the very latest technology, and many recognize that they simply must offer some sort of training. Take advantage of these (often free) opportunities. Convince your boss that a day or two here and there is time well spent.
Probably the best way to stay current is to read constantly and widely. Greedily suck ideas from EDN and other publications. Don't expect to understand everything immediately, but never give up the battle just because you don't understand the concepts. The whole goal is to learn new things!
Blow up your TV. Spend time in good bookstores, both real ones and the virtual, order-by-mail, varieties. Never has so much information been available in so many easily digestible forms. Though lots of books still resemble those heavy tomes we slugged through in college, now many are fun and almost light... even when equations litter the pages.
Every embedded hardware designer simply must read High Speed Digital Design (a Handbook of Black Magic) by Howard Johnson and Martin Graham (1993 PTR Prentice Hall, NJ). Though the book will challenge you if your grasp of theory is rusty, it's worth reading even if you must skip the math.
Modern components are so fast that even slowly-clocked systems suffer from all sorts of speed problems. This book leaves no stone unturned in the quest for reliable digital designs.
The authors cover transmission line theory in detail. At first glance I shuddered, remembering with no joy two incomprehensible semesters of electromagnetics. Johnson and Graham balance theory with lots of practical information. For example, a right angle bend on a PCB trace is a transmission disaster... that you can sure simply by rounding the edges of the track.
Most of us vaguely know that corrupting a PCB ground or power plane is not a good thing to do. Yet we sometimes yield to temptation when that board will simply not route on 6 layers, so running a couple of tracks on the plane. In a few paragraphs this book shows why this is a horrible idea, as the current return for any track runs under the track itself. A slot etched in the ground plane, to allow the routing of tracks, may block a return path. Current will flow around the slot, greatly increasing the path's inductance. Even designers with the best of intentions may accidentally create this situation by poorly specing out hole sizes for connectors. If the holes are too large, they may intersect, creating a similar, though unintended, slot.
What's the best way to stack layers on a PCB? The book includes an entire chapter about this, though I would have liked to see more discussion about how signals couple with different stack configurations.
Vias, too, get their own chapter. There's lots of good advice. The best sound bite is that small vias are much faster than larger ones. Small sure helps routing as well, especially with SMT boards, so there's a ray of hope for us yet!
One of the biggest challenges faced by digital designers is propagating signals off-board through cables. A chapter about this subject is worth the price of the book alone. Ribbon cable is far better than I realized, especially when you run grounds as the authors recommend.
What's the best way to use a scope on a high speed system? What is the effect of that short little ground wire coming from the probe? It turns out that the 3 inch ground lead can degrade the displayed risetime by more than 4 nsec! The authors offer the best description of scope probe problems, and solutions, I've ever seen. They show how to build a better probe using parts found in any shop.
Did you know that skin effect, the tendency of high frequency signals to travel only in the outer edges of a conductor, can become important on PCB tracks at frequencies as low as 4 MHz? Halving the length of a conductor improves its frequency response by a factor of 4. Until reading this book I was under the impression that only RF designers needed to worry about this effect.
Read this book. Pass it along to your PCB designers. Then, read it again.
Clive Maxfield's book Bebop to the Boolean Boogie, 1995, Hightext Publications, Solana Beach, CA, is the MTV version of an embedded how-to book. It's fun. It's a fast read. You'll find neither calculus nor much about basic electronics. It's focus is entirely on logic design, and is designed as a primer for those without much grounding in this area.
Hardware designers who have been at this for a couple of years probably have the material down pat. It seems, though, that the embedded world is evolving into two camps - digital design and firmware - with less and less communication between the two. Increasing specialization means there are fewer people who can deal with system-wide problems. If you are an embedded software guru who just doesn't understand the electronics part of the profession, then get this book and spend a few delightful hours getting a good grounding in digital design basics. Then watch the startled looks as your water cooler discussions include comments about state machine design.
Bebop covers all the basic bases, from the history of number systems (much more interesting than the tiresome number system discussions found in all elementary texts), to basic logic design, PALs, and even PCB issues. I often run into engineers who have no idea how chips are made - the book gives a great, wonderfully readable, overview of the process.
Its discussion of memories is fast-paced and worthwhile. A chapter about DRAM RAS/CAS operation would be a nice addition, as would something about Flash, but there's a limit to what you can pack into 450 pages.
I found the chapter about Linear Feedback Shift Registers the most interesting. This subject never goes away. It pops up constantly on the embedded systems Internet listservers (comp.realtime and comp.arch.embedded), often under the guise of CRCs. These pages are worthwhile even for experienced digital engineers.
And yes, the seafood gumbo recipe in Appendix H is worth the price of the book alone.
Jan Axelson's The Microcontroller Idea Book (1994, Lakeview Research, Madison, WI) is an ideal introduction to low-end embedded design. The book's protagonist is 8052-BASIC CPU, a very low-end controller suited for those with no assembly language or C expertise. It takes the reader from essentially no knowledge of programming through the Basic language, meanwhile offering lots of insight into the design of simple embedded systems. This work is much too simple for the experienced engineer, but is worthwhile for the novice embedded designer.
The next time I hire an new college graduate with either a CS or EE degree I'll have them work through both "Bebop" and "Ideas". A week spent soaking up these practical concepts will help ground their feet in reality and balance the four years of theory still ringing in their ears.
Another Hightext publication, Programming Microcontrollers in C, by Ted Van Sickle (1994, Solana Beach, CA) is a succinct introduction to embedded firmware. Where "Bebop" is ideal for the digital designer wannabe, Programming is a must-read for engineers trying to get their hands around software issues.
In 88 pages Van Sickle gives a very readable, complete introduction to C programming. To quote the book, "programming is a contact sport", so don't expect to become a C whiz till you've written and debugged a few thousand lines of code. The book's discussion does make a great starting point for those wanting to broaden their background.
Obviously, with the Motorola backing all of the text is oriented to their processors, primarily the 68HC11 and 68HC16. If you are considering using these chips, I'd advise looking through the book to get a feel for what the CPUs can do. The text is definitely not an advanced user's guide (thankfully! Motorola's manuals serve this function), but gives a nice overview of using the timers, pulse width modulators, interrupts, and the like.
Even better is its discussion about actually using the Byte-Craft and Intermetrics compilers. Everyone dreads setting up a new environment; this book will ease that process, especially since it includes header files.
I get a constant stream of queries for introductory texts to the embedded world. This is that book. It, or something similar, should be required reading in even computer since curriculum where embedded systems get virtually no mention.
Space limits the number of books I can cover here, and worse, permits only the most cursory of reviews. Believe me: these books are hot stuff, and are worth their cost.
More important than a discussion of any one book is developing a philosophy that embraces continuous learning. As a parent, one of my greatest hopes is to instill a love of learning and a competence at reading into their little skulls. All else follows from this; without it, nothing but stagnation is possible.
Never succumb to the temptation to let someone else dictate your career. Too many professionals avoid training because their company won't pay for it. That's career suicide. Take charge of your future, yourself, because no one else will.
Frustration is a part of learning so practice patience. Most engineering texts border on unreadable. Cull the best of the bunch, sigh when yet another book disappoints, but continue seeking out the pearls.
Avoid excessive specialization. My dad relates the story of an engineer at Grumman in the early 60s who knew everything there was to know about designing wheels for lunar roving vehicles. Presumably pencil cup donations are keeping the family fed now.
Take time to read a little poetry, some science fiction, and literature. The greatest ideas come from those who exercise their mental muscles in many, diverse areas.