From industrial control to home appliances and handheld devices, there is a continuing trend towards embedding increasing degrees of both intelligence and connectivity into all kinds of end products.
This growing computing power and ability to communicate, of course, produces more feature-rich products; more than that, it has produced a dramatic uplift in the variety and complexity of the interactions between products and their human users.
At the same time, users' expectations have themselves increased dramatically. Simple textual displays appear old-fashioned and 'non-intuitive'. And products ranging from kitchen appliances to motor vehicles " that only five or ten years ago were routinely operated via dials, push-buttons and electromechanical controls " are now graphics-equipped.
As a result, increasing numbers of embedded designers are required to design relatively complex graphical user interfaces (GUIs).
Software content and OSs
This move to more intelligence, more interconnectivity and more graphics has in turn encouraged engineers to approach their designs at a higher level. Software content has become as important as hardware design, and increasing numbers of designs contain not just significant amounts of application code, but also a compact embedded operating system.
If the deployment of an operating system in a product such as a kitchen appliance seems excessive, it is worth remembering the benefits that such an approach can deliver. These primarily centre on increased productivity in the development cycle, the availability and re-usability of device drivers and other commonly-used code blocks, and the removal from the design team's shoulders of many of the low level details of the design.
As a consequence, operating systems such as embedded Linux are increasing in popularity, in particular for GUI-driven applications. Because it is free of licence fees and royalties, Linux itself is particularly attractive in cost-sensitive applications; many developers also appreciate its naturally robust nature, derived from the open source nature of the software.
For the embedded designer tasked with building a connected, GUI-driven product, Linux also offers some specific advantages. Firstly, the operating system can be relied upon to handle the details of internetworking, at a level that is familiar to most programmers. The design team also gets access to a wide range of open source graphics libraries such as GTK, as well as commercial products that commonly include GUI builder and font rendering tools, and higher-level functionality such as OpenGL.
By removing the hardware dependencies from the application, Linux provides a standard development environment for the design team. All of the interaction and testing takes place on a standard PC, and the final step in the project is to recompile the source code for the appropriate target platform.