by Dr. Johan Kraft, Percepio AB
Some decades ago, the embedded industry shifted focus from assembly to C programming. Faster processors and better compilers allowed for raising the level of abstraction in order to improve development productivity and quality.
We are now in the middle of a new major shift in firmware development technology. The increasing use of real-time operating systems (RTOSes) represents the third generation of embedded software development. RTOSes introduce a new abstraction level that enables more complex applications, but not without complications.
An RTOS is a fast, deterministic operating system for use in embedded and IoT applications. These operating systems are often very small and so are suitable for use in microcontrollers (MCUs). The main job of an RTOS is to provide multithreading, thereby allowing for separation of software functionality into multiple "parallel" programs, which are known as "tasks." An RTOS creates the illusion of parallel execution by rapidly switching the executing task. Unlike general-purpose operating systems, an RTOS gives the developer full control over the multithreading and therefore enables deterministic real-time behavior.
There are many benefits of using an RTOS, but it is not a solution in itself and it comes with new challenges. Many developers have already dived into RTOS-based design, often without fully realizing the implications; they have used development tools that are without proper support for RTOS-based development; and -- due to this -- they may have encountered significant difficulties with regard to debugging and validation.
Please read the full article online at www.embedded.com here.