If you’re developing an IoT device, then you need to carefully consider the operating system that you want to use. IoT devices all share common constraints that need to be factored in by an IoT OS, including power, memory, and processing speed.
These device constraints mean that the natural go-to OS choice for many developers, Linux, is often not suitable. Many IoT devices simply do not have enough onboard RAM to support even stripped-down versions of the OS.
This is why the Real-Time Operating Systems (RTOS) is a good alternative for IoT devices. As such, there are now plenty of open source and commercial RTOS options on the market. So, in this article, we’ll talk you through how to choose the best RTOS for your IoT device.
What is an RTOS?
First up, what is an RTOS? At its most basic level, it’s a software component that can execute only one program at a time, but which rapidly switches between programming tasks, in order to execute multiple tasks simultaneously, as opposed to an OS which can run multiple programs with separate memory spaces. The responsibility of both an RTOS and OS is to abstract hardware, but the full-blown OS will normally do this to a much higher degree than an RTOS.
Instead, an RTOS differs from a traditional OS such as Linux, as it delivers deterministic, hard real-time responses to external events (the RT is for Real-Time). A traditional OS, on the other hand, provides non-deterministic, soft real-time responses. What this means, in practice, is that RTOS software can deliver highly responsive processing for a limited number of pre-determined tasks far quicker than a traditional OS, while an OS is much more effective at processing large quantities of different tasks.
Key Points to Consider When Choosing an RTOS
There’s now a broad choice of open source and commercial RTOSs for IoT devices on the market. As the choice can be bewildering, here are the key points to consider when choosing the best RTOS for your IoT device.
- Performance: You have plenty of choice when it comes to performance. Your memory and processing footprint requirements are the first things you need to consider. ROM, RAM and flash should all be assessed for your memory needs, while interrupt latency and context switch times should be assessed for your processing needs
- Scalability: 8-bit and 16-bit MCUs had been the hardware of choice for IoT devices, but 32-bit MCUs are now becoming increasingly popular, leading to many manufacturers using two different powered processes in devices. Therefore, your RTOS should be scalable in order to manage any future MCU upgrades.
- Graphical User Interfaces: The GUI requirements can have a big impact on your choice of RTOS for IoT. Do you just need basic graphics libraries for your devices, or do you need something more advanced such as 3D rendering, multi-layer interfaces and customizations?
- Connectivity: What are the communications protocols that your RTOS requires to provide connectivity to your embedded devices? Ethernet, Wi-Fi, Bluetooth, and IEEE 802.15.4? Your RTOS will enable you to choose specific communication stacks that you require for connectivity, so you only use what you need.
- Modularity: As you’re no doubt working with limited RAM, your RTOS will come with a mandatory core kernel, with customized middleware and protocols stacks. By building only what you need around the core kernel you’re able to control device memory requirements, which is much harder with a traditional OS.
- Security: Your IoT device and system security requirements need to be carefully considered. Each RTOS on the market provides a differing range of security add-ons, such as secure boot, SSL support, and drivers for encryption. Here at Nabto, we provide ultra-secure IoT connectivity using p2p encryption with no third-party dependencies. Learn more about our p2p IoT connectivity solution here
- Ecosystem: What’s the adoption like within your industry of each RTOS that you’re considering? Is there support for other architectures and processors? Is there an active community of developers sharing code and other information on GitHub, or stack overflow and other platforms? A large community of users provides social proof of the software’s efficacy and, of course, provides a useful resource to learn from.
Popular Open Source RTOS for IoT
Some of the most popular open source RTOSs for IoT include:
- Apache Mynewt
- ARM mbed OS
Popular Commercial RTOS for IoT
Some of the most popular commercial RTOSs for IoT include:
- TI RTOS
- Microsoft Azure (ThreadX)
- SafeRTOS (Commerical FreeRTOS)
- REX OS
- Nucleus RTOS