The advent of the internet of things (IoT) has created somewhat of a renaissance for real-time operating systems (RTOSes). Historically used primarily for deeply embedded applications and markets where safety-critical applications are key, RTOSes are quickly moving into the mainstream. Many IoT applications are leveraging microcontrollers where the benefits of using an RTOS are clear: scheduling, semaphores, queues, etc.
µC/OS-III® is a highly configurable RTOS kernel that has been used in hundreds of embedded applications all around the world, and even in space. Configuration choices affect performance, and in this paper, I’ll provide several configuration adjustments you can make to improve the performance of µC/OS-III.
µC/OS-III also has a rich set of built-in instrumentation that collects real-time performance data. This data can be used to provide invaluable insight into your kernel-based application, allowing you to have a better understanding of the run-time behavior of your system. Having this information readily available can, in some cases, uncover potential real-time programming errors and allow you to optimize your application. However, when enabled, µC/OS-III’s kernel instrumentation affects performance. So, once your application performs satisfactorily and meets your real-time needs, you can compile-out the instrumentation code, which would not only reduce code and data size, but would further improve the kernel’s performance.
Part 1 of this white paper explores how you can configure and use µC/OS-III to its fullest potential without losing any of the instrumentation capabilities built into µC/OS-III.
In Part 2 of this paper, we’ll look at how you can improve performance by selectively disabling instrumentation capabilities in µC/OS-III.
This paper assumes you are using a Cortex-M, but these improvements are applicable to many other CPU architectures. This document also assumes you are familiar with µC/OS-III. This paper serves as a quick and easy guide to maximize the benefits of designing with µC/OS-III by understanding the wide range of capabilities built into the kernel.