Using a Real-time Operating System in MCU Applications

May 21, 2018

Today’s MCUs (microcontrollers) are sophisticated enough to run an operating system, but they cannot run Windows, Linux or Linux variants due to the required resources. As a result, a wide range of MCU applications are based on real-time operating systems (RTOS).

The use of an RTOS in MCU applications is triggered by application complexity; a real-time operating system is used when there are more functions, interrupt sources and standard communications interfaces that must be supported. If the MCU application’s size is less than 64KB, an RTOS is not required, butif the MCU application is 1 MB or more in size,an RTOS may be necessary. While some MCU developers may be sceptical about using third-party software, an RTOS offers greater code reuse to increase the development team’s productivity. Here are more advantages and reasons for using an RTOS in MCU applications.

Pre-emptive Multitasking Design Paradigm

The pre-emptive multitasking design paradigm tends to be superior in complex real-time applications whose code base is enhanced progressively after every release. The design paradigm makes response times among every real-time event independent of each other. This means that new functions can easily be added without disrupting prevailing hard real-time functions. On the contrary, in sequential processing loops where events are checked by polling, adding new events alters the response times for all ongoing events.

Foreground loops, background loops, and other mechanisms are used to maintain real-time response to critical events. However, complex real-time applications designed to accommodate these mechanisms can be hard to modify and maintain. Unlike the custom run-time, real-time operating systems are designed to support numerous applications and do not require modification to support new applications.

Pre-tested and Pre-Integrated Communication Stacks and Drivers

An RTOS offers communications stacks like USB and TCP/IP with their necessary drivers. The software works out of the box to help developers save the time they would have spent integrating third-party software into their run-time environment and the hassle of implementing it from scratch. Also, MCU developers may not be very conversant with communication stacks; therefore, an RTOS that offers pre-tested and pre-integrated communications stacks and drivers provides developers with the perfect environment to focus on their area of expertise.

Application Portability

Real-time operating systems are designed to make applications more portable through offering standardized stack and driver API sets that abstract the specifics of underlying hardware. There is less risk that applications’ software can get interleaved with code written for low-level accesses to device-specific peripheral control registers.

System-Level Debug and Analysis Tools

Complex applications tend to behave unexpectedly; delayed response to real-time tasks, greater than anticipated CPU loads, or excessive memory leaks or usage are just some of many unplanned application reactions. Such problems are hard to diagnose because they require an in-depth understanding of resource usage and system behavior. Real-time operating systems provide the system-level debug and analysis tools to better understand and address these issues.

More Efficient CPU Resource Usage

Loop-based run-times conduct a lot of poll checking to determine whether interrupts have occurred, sosubstantial processor time is occupied doing nothing. Multitasking real-time operating system applications are interrupt driven to eliminate polling. Thisfrees up processor resources to be used by other tasks and triggers power saving mode when the applications are idle.

When Should you use an RTOS for an MCU Application?

You should consider switching to a real-time operating system if your MCU application often adds more features or if touchscreen UIs and internet connectivity become mandatory. Off-the-shelf software like an RTOS offers more resources for differentiating your MCU application and eliminates the need to over-focus on low-level peripheral control software.