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.”
Trends in selection of an OS
“We have seen an increase in the use of multi-core devices,” notes Longhurst. This presents an interesting challenge to OS suppliers, as the OS also needs to support core-to-core communication and asymmetrical and/or symmetrical processing models. He adds, “The type of OS support required is highly dependent upon the architecture of the application. Therefore a one-size-fits-all approach is not appropriate, as each solution will require a certain amount of customisation to achieve an optimum design.”
Another obvious trend is related to the Internet of Things (IoT) or machine-to-machine (M2M) communication, where embedded devices that existed in isolation in the past need to be connected now. Kumar says, “Connectivity is essential for better manageability of assets, which allows businesses to move from a device-centric model to a service-oriented model. With connectivity, there is also the threat of security that needs to be addressed.”
The other very prominent trend is software defined networking (SDN) and network function virtualisation (NFV). He adds, “This is driving consolidation of efforts in the networking and telecommunication markets where delivering carrier-grade reliability, while also achieving high-performance throughput with minimal latency, is absolutely essential.”
Platform era. There has always been a need to tailor-make embedded OSes for specific application domains. Many times this is like re-inventing the wheel and often unnecessary. Jukaku notes, “Recently, there has been a trend in building domain-specific OSes or software stacks that consist of the OS, application stack, framework and development environments—commonly known as platform.” Citing an example, he explains, “In the automotive industry, there is automotive-grade Linux, which is a Linux based software stack for the connected car. Google is also bringing Android to the car with Android auto. Similarly, in the IoT space, ARM has come up with mbed OS for IoT devices.”
Adoption of open source. Another trend seen is the wide adoption of open source software in the embedded space. Jukaku says, “Organisations are adopting open source software because of their reliability, stability, accuracy, cost, openness and support.”
Choose wisely, build effectively
It is not only the OS functionality and features that you will need to consider, but also the licensing model that will work best for your project’s budget and the company’s return on investment. Longhurst says, “The company behind the OS is just as important as selecting the correct OS itself.” He adds, “Ideally you want to build a relationship with the OS supplier that can support not only your current product but also products of the future. To do this, you need to select a proactive supplier with a good reputation, working with leading silicon manufacturers to ensure they can support the latest processors and tools.” Trust, quality of product and quality of support is everything.
From skill point of view, Jukaku says, “Understanding the architecture of the OS, integrating appropriate board-support packages, hardware interfacing and customising, and tuning for specific needs are all very important to have.” These skills make the OS easier for a new product designer to get started with.