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
2003 marks Embedded System Programming's 15th year of publication. That represents about half the life of the embedded industry, which started in 1971 when Intel introduced their 4004, the first microprocessor. Before the 4004 an "embedded" system was a device with a minicomputer, something that cost tens of thousands of dollars, weighed a lot, probably did not have a disk drive, and had core memory instead of RAM.
The first embedded developers were EEs, not computer science types. Early processors were finicky and difficult to use. The 8008 had a hardware stack just 7 levels deep - push or call more than 7 times and your program ran off into the weeds. RCA's 1802 didn't have a stack at all. Most work was done in assembly, or in PL/M, a crude not-very-high level language Intel derived from a more useful IBM lingo.
Development systems used paper tape for mass storage, sucking in even the tools at a breathtaking 10 characters per second over an ASR-33 teletype. I worked on a project that required 3 days to completely assemble the code. Debuggers were crude; early ones had a single hardware breakpoint the user flipped into a switch matrix on the computer's front panel.
Despite the poor tools and slow interaction with the machine, we built systems of astonishing complexity, cramming complete instruments, even with floating point curve fitting routines into 4k of ROM. I suspect that today our modern languages and decent tools would compress those months of work to a few short weeks, though ROM requirements might be a lot higher.
Tedious? Yep, but what fun we had!
Everything has changed in the intervening decades. The 32 bit processors we take for granted now weren't even in our dreams in the olden days. Tools have greatly improved, and our knowledge of software engineering has evolved to a much more mature level. Everything changes, except for the fun of building these systems.
Talking to developers at last week's Embedded Systems Conference in San Francisco only confirms the fact that we all love crafting new embedded products. Yes, polls suggest that job satisfaction levels are at an all-time low today. But it appears to me that most of the grumbling stems from unhappy work environments, not from the work itself. I heard lots of bitching about bosses, but saw the light dance in excited eyes when folks described their latest technical triumph.
As a kid I loved making things. That's why I became an engineer, and that's why I remain one. My career has always been on the border of hardware and software, as (to me) working up and troubleshooting a digital circuit is thrilling, almost as exciting as making motors twirl and LEDs flash by writing and debugging my code.
The people in my neighborhood complain noisily about their jobs. All except for the one engineer, who in his 60s still gets worked up talking about his latest 8051 project. while his wife's eyes glaze over.
Sometimes I despair that too many people have lost their passions in life. I rail against couch potatoes who seem to idly wait for their boring lives to end. At the ESC, though, I saw a crowd of 10,000 excited and passionate folks totally immersed in the arcane yet thrilling (to us) world of embedded systems.
Perhaps this is why I get so many emails from embedded wannabes. Our passions are contagious. Who wouldn't want a career that offers a decent salary and a ton of fun?