Dear Dennis...
EN-Genius Network's Dennis Feucht answers your design
queries in his new Circuit Design Clinic!
October, 2006
|
 |
EN-Genius Network presents a new, interactive
analog design service to readers! Send us your design questions (with
relevant data; schematics in JPEG or GIF, please) for some free
engineering advice from EN-Genius Network's circuit
consultant, Dennis Feucht, on how you might solve a design problem or
improve circuit performance. Submissions may be edited for clarity or
brevity, and submitters and their email addresses will remain anonymous
(unless otherwise indicated). Please send your questions to Dennis here.
So, You Want to Be an Embedded Engineer
by Dennis L. Feucht
Before saying anything about topic or content, I must say that this is a fun book to read. Do not be misled, however, by the title; this book will not help techno-geeks interact more intimately with those of opposite gender polarity. The author is nevertheless very experienced and consequently very opinionated. Happily, almost all of his opinions are correct (relative, of course, to my own) and consequently the book offers good advice to youth and others wanting to make a living designing microcontrollers into products. This book is not written in the style of the rigorous engineering books of days gone by. (See my review of Antenna Theory by Balanis for an example of such a book.) It is not intended to take on the topic in that manner, but take it on it does. The author, who has too many middle names to have them printed in full on the book cover (or inside), gives me the distinct impression that he has done an impressive number of embedded computing projects, and clearly speaks from experience. Consequently, many small tokens of competency appear throughout the book, manifested as pertinent facts about microcontrollers and their suppliers that are neither found on data sheets nor company websites.
He starts rolling in Chapter 2 on "Education," discussing formal-education options and their practical consequences. He has little regard for BSEET degrees over the BSEE. Offering hope to analog EEs, he does not consider the computer-engineering form of the EE degree to have much advantage over the mainline BSEE. A master's degree, however, has great advantage over a BSEE. He describes the world of job-search nowadays, a weird world of too many qualified people chasing too few American jobs, who are matched to them by procrustean computer algorithms. As an aside, an item of advice with which I would differ with Edwards is to offer a serious option to any formal college education at all, most of which is overpriced nowadays, according to former Stanford University economics professor Gary North. (His only exception is the hard sciences and engineering, so there is some equivocation here.) He recommends getting a lower-cost college education; see http://snipurl.com/discountcolleges or www.garynorth.com for more.
The author perceptively distinguishes between small and large embedded systems. Small systems are those in which a microcontroller component is included in the board design. A large system is based on buying a board that runs a typical desktop operating system and programming it like one would program on a desktop computer.
In the small systems Chapter (3), entitled "Teaching Yourself, Bottom Up," he reviews the most popular choices of commercially-available microcontrollers, beginning with the 8051 -- good for bit-level manipulation, but having a limited architecture. Then he moves on to his favorite (and mine too, besides the venerable 6502-based controllers of Renesas) the Atmel AVR. It has a Harvard architecture, and the mega-AVR parts have a hardware multiplier, making them essentially low-end DSP machines. Next is the TI MSP430, though unlike the other small controllers, it is a 16-bit machine and hard to prototype because of its fine-pitch packaging, but otherwise reminiscent of the venerable PDP-11. Of course, Microchip's PIC shows up, but he (and I) do not prefer it to the AVR because of some architectural limitations (such as a lack of conditional jump instructions and inaccessible internal stack). Even as a teaching tool, its preference is questionable. The rest are covered more quickly: DSPs of all kinds, Rabbit Semi, the Freescale 68HC09, Zilog Z80 variants, NSC's COP, NEC's 78K series, and finally the 6502 variants.
As for programming languages, C++ gets a strong negative because object-oriented programming on small systems is unreasonable. Java is a better choice. (As an aside, to doing OOP in a small-system way is to use the object-oriented features of that underground embedded language, Forth.) The author, not surprisingly, chooses C (" it is essential to learn C really thoroughly," p 86), and assembly language -- usually the latter for under somewhere between 4 k to 8 k of object code. Beware of copy-protected development tools and avoid those with hardware protection devices (dongles). An AVR project example follows, with photos of the development system setup.
Chapter 4 covers large embedded systems. The approach is aimed at those with considerable high-level language experience who want to work into embedded systems. Covered here are solutions based on the x86, ARM, and the PowerPC, using operating systems Linux and eCos. The author favors open-source software.
After covering the design alternatives, small and large, the book addresses the larger question of how to make a living (Chapter 5), "Working for Yourself as an Embedded Engineer." He discusses the pros and cons of self-employment (that is, working independent of employment), moonlighting, bookkeeping, and the usual line on taxes (though clearly not adequately investigated, legally and politically, as presented). Also discussed are ways to find and keep customers, pricing your services, work practices, and contracts. Chapters 6 and 7 cover working for small and large companies.
Any "analoger" desiring to go digital with microcontrollers should get a copy of this book and read much or all of it. It is the next best thing to sitting down with an experienced "embedder" and having him give a firehose briefing about the various aspects, the many important details, and the contours of the terrain in embedded computing work. You might differ with Edwards on some advice, but, overall, his outlook conveys a maturity in the field that is worthy of attention.
|