Who uses real-time operating systems
Introduction to the RTOS world
Anyone dealing with the topic of real-time operating systems for the first time has to deal with a lot of new terms such as task, preemptive multitasking, semaphores and priority inversion. This article will shed more light on what all of this means.
Modern microcontrollers are becoming more and more complex and place increasing demands on the developers of embedded software. At the same time, such chips with complex peripheral elements and large integrated memory offer more performance than ever before. In order to be able to use all these advantages effectively, real-time operating systems (RTOS) are being used more and more often.
Figure 1: A real-time operating system divides an application program into several tasks.
What is a real-time operating system? Simply put, such software manages the time of a microprocessor or microcontroller. An RTOS also offers a multitasking environment in which several things happen at the same time. To do this, it divides a program into several tasks (Image 1). This measure leads the system to believe that several CPUs are available. In addition to multitasking, a real-time operating system also offers other valuable services: delays, the protection of shared resources and communication between individual tasks as well as synchronization are among its typical functions.
A task is a piece of program code that "thinks" that it has the CPU alone. This code can be independent or have interfaces to other software in the system, as is the case, for example, with a communication stack (TCP / IP, USB, etc.). In most cases, each task has its own stack space and a priority that corresponds to its importance. The application software can be split into several tasks. This division is based on modular function blocks, for example a GUI task, an audio task, a network stack, a motor controller, etc.
In principle, a task is formulated as a function that contains an infinite loop and therefore never returns to the initial call. Listing 1 shows a task formulated in pseudo-code. A task performs the function of the user application and then issues some blocking call. Such a blocking call can be a delay derived from the operating system, a wait state for a semaphore (Wait) or for another signal from an interrupt service routine (ISR) or another task. If a task is blocked and can no longer be executed, the operating system suspends it so that another task can run as scheduled.
After the delay time has expired or when the event occurs, the task is activated and the operating system takes it over to schedule its execution.
Fig. 2: E A task can have one of three states: blocked, ready and active (running).
A task can have one of three states (picture 2):
Blocked - the task waits for an event to occur or for a timeout to expire.
ready (ready) - the task is ready to be executed and waits for the real-time operating system to add it to the schedule for execution by the CPU.
active (running) - the task is currently being executed on the CPU; only one task can be in this state at a time.
Preemptive kernel and context switching
If you look at the specification of a real-time operating system, you will inevitably come across terms like "preemptive kernel" or "supports pre-emption". What exactly does that mean? Suppose a system is executing a low priority task while a higher priority task is blocked because it is waiting for a signal from an ISR. As soon as the interrupt occurs and the ISR is executed, the operating system interrupts the low priority task. After the end of the interrupt service routine, the program execution does not jump back to the task with low priority, but first processes the task with high priority. The task with high priority was given priority over the task with low priority.
Preemption helps a real-time operating system to react quickly, because the operational task with the highest priority is taken over by the RTOS for execution in the schedule and executed on the CPU. There are different scheduling algorithms:
- priority-based scheduling,
- FIFO (first in, first out),
- "Round-Robin" (in order) and
- Time slice.
The process in which one operating system stops one task and executes another is called a context switch. The context of a task consists of the contents of the CPU register including the stack pointer and the program counter. If a context switch occurs, the RTOS shifts the contents of the CPU register into the stack of a task, sets the task status to either "ready" or "blocked" and saves the value of the task pointer in the task control block of the corresponding task. The operating system then restores the context of the task to be executed on the CPU. To do this, it restores the stack pointer using the data from the task control block and reads the content of the CPU register from the task's stack back into the CPU. The RTOS sets the status of the corresponding task to "active" and the restored task is now continued.
During a context switch, the real-time operating system performs an internal operation so that the user application cannot run during this time. So the less time it takes to execute the context switch, the better. Real-time operating system vendors often specify the time it takes to perform a context switch for a particular family of CPUs.
The time required for a context switch can often be minimized by using special functions of the CPU used. For example, the CPU cores "H8S", "H8SX" and "SH-2A" from Renesas have special commands with which the contents of several CPU registers can be moved to or from the stack. Accordingly, only a single instruction has to be called up and executed in order to carry out several read-out or read-in processes. This reduces the amount of code and speeds up execution. The SH-2A-CPU also supports register banking. With this function, an ISR can be entered within just six cycles and all CPU registers can be copied into a register bank. This enables the system to react to interrupt signals in real time.
1. Introduction to the RTOS world
2. Control signals
3. Memory management and timers
Renesas Electronics Europe GmbH
- Which CEO has the greatest power
- Why is yoga losing popularity
- Should I try CAT or not
- Is CrossFit overhyped overrated
- What does my dream represent
- Will I ever get famous
- What is a mail request
- Gabapentin is a powerful medicine
- Why is glycolysis an example of catabolism
- Plastic water bottles can be frozen
- What is the future of electric vehicles
- What made Aquaman a good film
- What made you go from liberal to libertarian
- How can I reset my AMD drivers
- Can my injury be treated
- How did Ireland get out of poverty
- Why does al Assad speak good English
- COBOL is a computer language
- What defines financial abuse in a relationship
- Belongs to Google
- Why is Lord Krishna called Gopal
- What is the population of Doha
- Does the brain ever erase memories
- Will the Chinese AI get a Confucian bias?