Don't blink. As embedded hardware continues its rush toward more cores, giant clusters, video cell phones, and multimedia players, software developers turn to more third-party software and improved tools to keep pace. And programming paradigm shifts continue to move along at a glacial clip.
Still, adoption of more middleware won't just be acceptable—it will be required. Communication platforms such as the Object Management Group's data distribution services (DDS) and Common Object Request Broker Architecture/ embedded (CORBA/e) are emerging in requirement specs.
Graphics Are More Than Pretty
Multimedia represents only part of the graphics picture. For developers, graphical tools like those in QNX's Momentics pack lots of information into a smaller space that can be analyzed visually (Fig. 1). In this case, a picture is worth more than a thousand words.
Getting developers to exploit these new tools will continue to be a challenge to vendors. Trace tools can be invaluable. However, developers tend to use as few tools as possible because of their learning curve. Advances in analysis tools and ease of use should change a few minds this year. Generally speaking, diagnostic tools should pique a bit of interest.
Graphical programming languages such as UML and LabVIEW will continue their move into conventional text-based programming strongholds (Fig. 2). Convincing these strongholds to adopt these new tools is getting easier with improved integration via text-based tools. Round-trip modification support will become a requirement, not simply a possible feature in the future.
It's All About Integration
The 2006 Callisto Simultaneous Release brought into lockstep nine projects, including the C/C++ Development Tooling (CDT) and the Test and Performance Tools Platform, plus the Eclipse platform. Eclipse vendors followed suit, so expect their releases to trail the Eclipse release closely. This process will repeat itself in 2007 with the Europa releases.
Another trend in this space is a move away from fully custom Eclipse packages to add-ons designed to work with the standard release. Add-ons reduce vendor support requirements and enhance integration of third-party plugins, making user maintenance significantly easier.
Eclipse continues to mature, making it a major competitor for established integrated development environments (IDEs) like Microsoft Visual Studio and Freescale CodeWarrior. It has forced these IDEs to become more open to third-party enhancement that benefits all developers. Like Linux, Eclipse tends to be the first target for new plug-ins instead of the second or third. Expect many tool vendors to target it exclusively.
Operating-System Use Grows
Linux will make further inroads into new system designs with improved real-time support and standard application-specific configurations like Carrier Grade Linux. Other operating systems (OSs) have little to worry about because the trend is toward more OS use.
Embedded systems are seeing more use of standard OSs due to the need to support standard protocol stacks and middleware. Even low-end 8- and 16-bit platforms are benefiting from compact, offthe-shelf OSs. There's also an expanding market in this area to handle the growing number of 32bit microcontrollers with comparable, small memory footprints.
The plethora of OSs is a boon, but it can also be a problem. Support for legacy applications and OSs is making virtualization an attractive alternative. Virtualization has been proven in the enterprise, and embedded developers now are taking advantage of it. This approach will also be used for security and reliability reasons. It will let systems run an OS and applications whose security and reliability may be suspect without spreading potential problems to other isolated virtual environments.
Virtualization answers the question of how to mix real-time and non-real-time environments. Each can run in its own virtual machine. And, running multiple OSs on a single embedded platform will occur when using multiple application-specific processors, such as is the case with Texas Instruments' DaVinci platform and its multicore CPU and DSP architectures.
Single Processors Are Passe
Programming an isolated, single-core processor will remain a major chore, but it has gone from the norm to the unusual. Developers' programming habits are changing now that they're targeting multicore and clusters of multicore processors.
Simple TCP/IP sockets still will handle the bulk of interprocessor traffic, but standards like MPI (message passing interface), DDS, and CORBA/e will move from use in specialized areas to more general applications. Expect this to be a long process, one that's just starting. The complexity developers must address gets even worse when adding in issues like virtualization, network management, and security.
Security, Power, And More Challenges
Multicore and increased networking bring on challenges because of hardware improvements. Issues like security and power management must be addressed due to the greater level of connectivity and portability. Power is also an issue because of hardware performance and density. All of this forces developers to now incorporate support that was often ignored or wasn't a concern in the past.
Security must be addressed because authorized updates and secure data exchanges have become requirements, not luxuries. Applications must be more robust to survive cyber attacks. Increased use of hardware encryption, key storage, and supporting software will occur this year, though adoption of industry-wide standards like SELinux in the embedded space will remain slow and steady. Solutions addressing networks of proprietary nodes will remain the norm for now with standards cropping up in odd places such as security within a ZigBee network.
If things aren't complex enough already, consider licensing issues. This additional area of middleware will see more daylight this year as content and features become more dynamic and software upgrades and feature enhancements become standard fare across a product's lifetime.
For more, see "Software Safety And Correctness."