Future-proof Your OS Selection
By Kerry Johnson, Director of Product Management, QNX Software Systems, email@example.com
The view of an embedded device as a fixed-function, standalone unit is changing dramatically. Devices are becoming network connected, with support for remote control, status monitoring, and in-field software upgrades. Devices currently thought of as simple are becoming complex — witness the rise of intelligent refrigerators and washing machines.
When determining how best to add software intelligence to their products, embedded developers need to consider the merits of moving from a software solution built entirely in-house to one that uses an off-the-shelf operating system (OS). As part of this process, developers must look beyond current requirements. Demands for human machine interfaces, data storage, wireless networking, and other capabilities are evolving quickly, creating the need for flexible system designs — and for OSs that make such designs easier to achieve.
To put this decision in context, let us consider some key trends.
• Increasing device complexity — As devices become interconnected to one another and to the Cloud, support for interfaces such as Bluetooth, WiFi, and Zigbee introduce new levels of software complexity. To delay obsolescence, a device may also support in-field software upgrade capabilities. This, in turn, requires more software.
• Ease of use — Software complexity cannot be passed along to the end user. Devices must remain easy to use, or customers will leave them on the shelf. In mission-critical environments, meanwhile, there is little or no room for human errors caused by complex user interfaces. To make the user experience more compelling and intuitive, new user interface and graphics technologies are finding their way into embedded devices.
• Increasing processing power through multicore processors — Connectivity, software intelligence, and improved graphics combine to tax the embedded processor. Multicore processors in their various forms are becoming the common way to achieve more computing capacity within an embedded power budget. Software that leverages parallel processing serves as a key enabling technology for these new devices.
• Safety and security — As devices grow more connected and complex, so do concerns for safety and security. These concerns go beyond simple network security and often require tamper-proof software designs. System reliability serves as a key indicator of device safety. Recently, more attention is being given to certifications in these areas.
The trends described above illustrate the importance of building systems that can evolve, adapt, and scale. Although deterministic real-time response and low OS overhead remain important, it has become equally important to consider a range of technologies.
User interface and graphics
The Apple iPhone demonstrated that a small form factor device can support a rich, intuitive user interface complete with multi-touch screens, gestures, smooth screen transitions, and animations. Economically, it isn’t feasible to create these appealing, easy-to-use features without support from the OS. The OS must provide hardware-accelerated 2D and 3D graphics capabilities and high-level user interface design tools. Also, to create a sophisticated user interface, developers must often combine multiple graphics technologies such as Adobe Flash, native graphics applications, HTML content, and video on the same display. The OS must provide facilities to layer these multiple technologies seamlessly.
As always, developers should look for standard interfaces to ensure portability. The Khronos Group defines a set of graphics standards for OpenGL ES (3D graphics with hardware acceleration), OpenVG (2D graphics with hardware acceleration), and OpenKODE (display composition).
Multicore processors come in a variety of shapes and sizes. Common variants include: 1) a single general-purpose processor with a DSP, 2) standalone dual- or quad-core general-purpose processors, and 3) multiple general-purpose processors and multiple DSP accelerators.
When selecting an OS, it is important to keep the target application in mind. For example, if the target is a low-cost media player, the OS should provide a clear way to handle general-purpose functions (such as the user interface) and a framework for handling DSP-accelerated codecs. If, however, the target is a high-end medical imaging system that requires pure computing capacity, the OS should support parallel processing through symmetric multiprocessing (SMP).
Safety and security
Some applications demand system-level safety or security certification. The Common Criteria for Information Technology Security Evaluation defines a set of security requirements that can be applied to embedded devices. Likewise, the International Electrotechnical Commission's (IEC) IEC 61508 defines a number of Safety Integrity Levels, such as SIL 3, that define techniques and measures to prevent systematic failures (bugs) from being designed into the device or system. The Federal Drug Administration (FDA) also requires device certification. A certifiable OS can greatly reduce the effort required to achieve such certifications. Even if certification isn’t an immediate requirement, it can be important to keep your options open. An OS that can be upgraded to a certifiable version without API changes is a real benefit.
Future proofing an OS decision also comes down to architecture. To keep pace with evolving requirements, an OS must provide the modularity and clear separation of responsibilities that allows new or updated services to be plugged in or out as required. The flexibility afforded by such modularity not only simplifies life for the developer, but can build satisfaction in the customer.