That innovative products aren't rare in the embedded systems industry is a testament to our engineering and inventive skills.
If you read as much marketing literature as I do you're probably sick of the stock phrases that infest the press kits produced by so many companies. “Disruptive technology” is the latest PR-speak, but Dictionary.com defines “disruptive” as “characterized by unrest or disorder or insubordination,” none of which sounds all that great to me. “Innovative” is another adjective favored by marketers every time their company simply supports yet another obscure variant of some microprocessor family.
Innovation in our industry carries a cachet of cool, of something fundamentally new and truly remarkable. That innovative products aren't rare is a testament to our engineering and inventive skills. But it diminishes the descriptive power of that adjective to use it in every mediocre press release.
At the Embedded Systems Conference in Boston (held this past September in conjunction with SD Best Practices and RFID World), I was dazzled by a number of truly innovative products.
After 25 years of integrated development environments and an even longer history of real-time operating systems, it's pretty hard to get excited about yet another operating system or compiler vendor. But Green Hills Software (GHS) has become one of the most consistently innovative companies in the embedded space. Who else has built a static analyzer, one that finds execution-time bugs like buffer overflows, into the compile-time checks? How many companies couple that sort of development environment to operating systems that can be certified to the highest of safety-critical standards?
While security issues have practically melted down the PC business, we embedded folks have managed to remain mostly blissfully unaware about these issues in our domain. Even the furor over recent voting machine debacles have left most of us unconcerned about firmware security. Yet, our products control factories that mix medicines, expedite rapid funds transfers, manage credit-card transactions, and much more. I believe most of us have mixed up “security” and “reliability.” Although related, these are very different topics that require different solutions.
At the show, GHS showed their virtualization technology, which can now take advantage of the vPro features in some Intel processors. vPro is a marketing buzzword that encompasses a number of hardware and software features that Intel is pushing into the security fray. It includes Intel Virtualization Technology, which is composed of ten Virtual Machine Extension instructions that let a monitor launch guest operating systems that run completely independently from each other.
GHS's new version of their Integrity operating system can supervise this virtualization. The company demonstrated Integrity running on a PC. I want to call this a Windows machine, but it isn't; it's an Integrity machine that boots into that operating system's own limited GUI. From that desktop one can launch other operating systems, like Windows or Linux.
GHS demonstrated Integrity running two copies of the Windows desktop. I can't help but wonder what that implies about Microsoft's license fees, but each of these desktops was a full Windows implementation completely isolated from the other. Neither could affect the other in any way. Although both were running full-motion video, performance was breathtaking.
The company claims one could run unclassified programs while the other slaved away working with top secret data with no fear of classified information leakage. Or, one could surf the vilest of porn sites without worrying about some nasty download destroying the computer. Infection? Just delete the one bad Windows instance while the other continues to run unaffected. Although VMware offers some similar capabilities, it's far from secure.
This virtualization technology scales directly into the embedded space, which is indeed GHS's primary market, for applications that must be absolutely kept within, as the company puts it, a padded cell.
Functionality no longer sells products. Every cell phone does pretty much the same stuff, but size, form factor, and color are the secret sauce of sales. Diamond-encrusted models garner sales to the narcissistic glitterati. Apple, absolute master of industrial-design-as-marketing, won the MP3 battles due to a brilliant mix of design and well-executed functionality. The thing is not only beautiful, it works.
At least part of the iPod's success stems from the simplicity and elegance of the unit's scrollwheel, a nearly novel new interface that's utterly simple it and intuitive. It seems like a natural for a wide range of embedded systems.
I don't know for sure how the iPod's scrollwheel operates, but many such touch devices use capacitive sensors. “Buttons” are just pads on the PCB that are part of a relaxation oscillator circuit. Touch the pad, or even bring your finger near the pad, and you alter the circuit's capacitance, shifting the oscillator's frequency. Various vendors sell ICs that incorporate the op amps and other components needed to implement this sort of circuit.
Microchip had a different, innovative, idea, called the mTouch, which they demonstrated at the show. The company offers a dizzying array of microcontrollers, each with a unique mix of memory and on-board I/O. Some include analog comparators. Why not use a standard PIC to handle capacitive buttons? In effect, they demonstrated a nonproduct, something that's not for sale at all. It's a free design kit including schematics and code to create buttons using their line of controllers.
This is one of those products, ah, ideas, one has to see to appreciate. The demo board includes several conventional capacitive buttons plus a dozen of them arranged in a slider. Drag your finger along the slider to adjust an application's volume or other parameters. There's also an iPod-like scrollwheel that feels, well, simply iPodish. It's fun, it doesn't bounce, there's no squirrelly response like one sometimes sees with these controls.
The demo board isolates the user from the PCB by a few millimeters of clear plastic. Clearly, one could build a completely waterproof device using these buttons. The sensitivity is software adjustable. We were able to reliably activate buttons even from a distance of an inch or two, suggesting that a system could be encased in serious bit of Plexiglas, should the need exist, say in instruments that must be explosion-proof.
See www.microchip.com/mtouch for more details.
What's the easiest way to eliminate bugs? Don't put them in there in the first place. And since most projects burn half the schedule in debugging, I guess we should call the rest of the project “bugging.”
Code inspections, which everyone hates, have been proven to be the most cost-effective approach to creating great code. Yet my informal surveys of the embedded market suggests only about 2% of us employ any sort of inspection with regularity. It's sort of like a doctor offering an antibiotic to someone suffering from a life-threatening infection, and the patient refusing the medicine on the grounds of it tasting bad.
Linux (all praise to its Sainted Heart) and other open-source projects are widely touted to have far fewer bugs than their proprietary alternatives. Why? Because of the OSS mantra: with enough eyes, all bugs are shallow . That's exactly the philosophy behind inspections.
Formal Fagan inspections are very effective but require a sizeable team. Many alternatives exist from walkthroughs to informal pass arounds. But those are tough to manage. Did Joe, who might be in the next cubicle or half a world away, inspect my code yet? How does he communicate his comments to me or to a future maintainer? If we're inspecting changes, what did he do a diff against?
SmartBear Software (from a clever pun on the phrase “a smart bear makes all the difference” in John Irving's novel Hotel New Hampshire ) showed their Code Collaborator tool, which manages the entire inspection process. Even better, the company gave out gobs of copies of their must-read little red book about inspections. It's still free from their web site (www.smartbearsoftware.com).
Code Collaborator is firstly a diff tool that compares changes. It's a darn good one, too, and seems to perfectly align code in two panes no matter how many extra lines get added. An inspector can immediately see what has been changed between versions.
But there are plenty of diff tools around. Code Collaborator combines differencing with complete integration into your version control and bug-tracking packages (it supports all of the common ones). Built-in communications tools like live and not-live chat supports chatter between developers located together or remotely. It logs those dialogs for future reference.
The tool provides issue-management functions. If someone identifies a problem during review that issue stays active till positively closed. If a reviewer mistakenly flags good code as being bad, the author can document why there was no problem, which has got to make for easier maintenance in the future. If one person was confused, there's a good chance someone else will be, too.
Code Collaborator produces a variety of metrics and customizable reports, which are essential when the boss wonders why we're busy reviewing someone else's code instead of cranking out more buggy stuff. It's always wise to give the boss solid numbers.
At $495 for a single license this is a critical tool for any company wishing to do inspections without formal meetings or heavy process. You'll save that much money in avoiding just a few hours of debugging.
At sixes and sevens
…or 7s and 9s? Check out IAR's new site for all things ARM. It's called 7sand9s.com, but does indeed also include information about 10s and 11s. Like Microchip's mTouch it also isn't a product, but is a useful resource for ARM developers.
The highlight is a chip selector that, while incomplete, lets one search across multiple companies for the exact ARM part for your design.
Alas, space constraints mean I can't talk about some of the other innovative products that surfaced at the show. See www.embedded.com/esc/boston/ for more information about which companies exhibited their wares.
Jack Ganssle () is a lecturer and consultant specializing in embedded systems' development issues. For more information about Jack .