|For novel ideas about building embedded systems (both hardware and firmware), join the 25,000+ engineers who subscribe to The Embedded Muse, a free biweekly newsletter. The Muse has no hype, no vendor PR. It takes just a few seconds (just enter your email, which is shared with absolutely no one) to subscribe.|
By Jack Ganssle
The average embedded system uses a 32 bit microprocessor with 2Mb of RAM. Or an 8 bit controller sporting 2k program space. Nearly every embedded system today requires TCP/IP stacks. except for that vast number that live inside unconnected smart toothbrushes and other consumer appliances.
Most smart products get replaced or are obsoleted in months. No need to worry about maintainable code. Except for the huge range of devices like instruments and industrial controllers that function quietly for decades.
Reliability isn't an issue; if the electronic coffee spoon fails there's little impact. Bummer about those pacemakers, avionics, and even car computers that must be near-perfect.
C++ and Java are the usual choices for firmware today. Except for the other 90% of the market that uses C and even assembly. Linux is the only OS with a future, though it's less important in the embedded space than Windows.
I see most of the surveys about embedded systems and find them baffling. The correlation from one to the next is weak, at best. The data itself seems peculiar. Do 20% of all embedded systems really run Windows? A 2000 poll suggested as much. Maybe it's true. but it's awfully hard to believe.
Survey questions are lousy, at best. What does it mean when x% of the respondents claim to use (for instance) C++? Is this in an embedded system (lots of us write desktop code, too)? How does the number translate into the number of units sold? Is one developer using Windows CE in a product manufactured in zillion-lots a huge part of the market. or an insignificant player?
Consider 32 bit processors: they're a huge part of the market now, and are increasingly more important. But how many of those are consumed by relatively few consumer products (cell phones and the like)? Do PDAs, relatively large computers packaged in tiny boxes, count as embedded systems? If so, they skew the data substantially.
ASIC volume has skyrocketed, accompanied by growth in the sales of processors as IP components. Instead of selling a real "thing", the IP companies provide binary files that describe the product, which customers incorporate into their unique silicon. The magazines rave about the ASIC revolution, yet how many developers really work with the million-unit quantities that make ASICs so compelling? 50? 100? The volumes are huge, but is that representative of the industry?
There's no doubt that the embedded market has changed dramatically as high-powered ultra-cheap solutions appear for high volume products. That does not mean that there's been a reduction in products sold by the tens, hundreds or thousands.
Our field resists generalizations. At any talk at an Embedded Systems Conference, attendees may be using tiny CPUs with minimal code needs to huge multi-megabyte firmware bases. One very popular class covers building big internet-connected apps while another talks about optimizing your use of C in small systems. People using FPGAs - a cool but relatively expensive customized logic solution - sit with ASIC folks. Any single developer may work on both a PIC and a MIPs, using assembly, C, C++ and Java.
Magazines and web sites respond to users' real needs, as best perceived by surveys and the like. But there's no "average" in the embedded space. It's not like the PC market where all developers have the same platform. How should a magazine deal with the vast range of applications, architectures, code sizes, tools, and complexity? Any ideas?