From robots, cars, home appliances to calculators, thermostats, ATMs and mobile phones, embedded systems are everywhere. And at the heart of almost every embedded system is its operating system (OS), which plays a critical role in keeping the system alive and running. “Therefore it is essential to choose the right OS at the very beginning of the design cycle itself,” notes Neeraj Saraf, CEO, Seal Technologies. Let us explore the important parameters that must be considered while selecting the perfect OS for your embedded application.
An OS can greatly affect the development of the design. According to Andrew Longhurst, engineering and business development manager, Wittenstein high integrity systems, by selecting an appropriate OS, the developer gains three things: one, a task based design that enhances modularity, simplifies testing and encourages code re-use; two, an environment that makes it easier for engineering teams to develop together; and three, abstraction of timing behaviour from functional behaviour, which should result in a smaller code size and more efficient use of available resources.
Peripheral support, memory usage and real-time capability are key features that govern the suitability of the OS. Longhurst says, “Using the wrong OS, particularly one that does not provide sufficient real-time capability, will severely compromise the design and viability of the final product. The OS needs to be of high quality and easy to use.” He adds, “It is hard enough developing embedded projects and you do not want to be struggling with OS-related problems as well. The OS must be a trusted component that the developer can rely on, supported by in-depth training and good, responsive support.”
In the case of systems with real-time characteristics, a hard, real deterministic OS would be the right choice, whereas for applications that require no real-time behaviour but run a set of applications with rich user experience, an embedded Linux with a good graphics library or Android would be the right fit, informs Thilak Kumar, manager, field engineering, Wind River Systems. Therefore choosing the right OS early in the design cycle is very important. He says, “If it is not realised, it could put the entire project at risk, especially if the OS is unable to meet key system requirements.”
On another note, Mubeen Jukaku, technology head, Emertxe Information Technologies, feels, “Design engineers should be able to create a design with effort spent in creating the application rather than other factors specific to the OS.”
Now that we know the importance of choosing the right OS for developing embedded systems, let us take a look at the parameters to be considered for selecting the same.
Selecting the OS
Embedded systems are meant to run for long, and sometimes these are unattended or non-upgradable. In any case, these should be robust, reliable and secure. “Support for device drivers, ease of porting and extending/configuring the kernel also matters a lot if devices are peripheral-rich and you have future plans of upgrading the hardware,” says Jukaku. For power management, the OS should be able to provide power-saving features, like suspend/wake-on-interrupts. He adds, “Some other factors include availability of software protocols and development libraries, which could be specific to the application area. The level of vendor/community support for the OS also needs to be high.”
While designing an embedded system, parameters such as computing power, memory, electrical power, real-time behaviour, regulatory guidelines, connectivity, safety, security and manageability should also be considered while selecting an OS. Citing an example, Kumar says, “If you are designing a life-critical device, such as a pacemaker, then the OS would need to be deterministic, small and extremely power efficient.” He adds, “If you are designing an avionics system, it would still need to be power efficient but not as much as the pacemaker. For sub-systems, meeting safety requirements outlined by the regulatory authority is one of the most important requirements and a certified/certifiable OS would be more appropriate.”
For developers, real-time operating system (RTOS) selection has traditionally been a matter of preference and convenience, as they tend to look at compatibility with their choice of compilers, debuggers and other development tools, informs Prasad Suri, AVP-sales, product engineering services, ValueLabs. He says, “Many use integrated development environments (IDEs) that enable them to develop a wider range of RTOSs.”
Another critical factor for the success of a project is the selection of an OS that ensures right time to market for the application. Suri adds, “RTOSes that offers simple system services, intuitive naming conventions, documentation, good support and availability of full source code should be preferred as these characteristics enable developers to become productive in a short period and complete projects on schedule.”