Embedded software development, even for real-time applications, evolved along the years from using the assembly language and custom-built schedulers - often derived from a cyclic executive - towards higher-level languages and execution models. In turn, this requires a much more sophisticated support at the toolchain level with respect to the past, especially when a real-time operating system (RTOS) is involved. In this paper, the mutual relationships between several key mechanisms internal to a C-language toolchain and the underlying RTOS are analyzed. These relationships are sometimes neglected in practice, but can easily lead to subtle and hard to debug time-dependent errors. The discussion is carried out with reference to a real-world GCC-based open-source toolchain for the C language and the FreeRTOS RTOS, both of considerable practical interest.
RTOS support in C-language toolchains
I Cibrario Bertolotti
2017
Abstract
Embedded software development, even for real-time applications, evolved along the years from using the assembly language and custom-built schedulers - often derived from a cyclic executive - towards higher-level languages and execution models. In turn, this requires a much more sophisticated support at the toolchain level with respect to the past, especially when a real-time operating system (RTOS) is involved. In this paper, the mutual relationships between several key mechanisms internal to a C-language toolchain and the underlying RTOS are analyzed. These relationships are sometimes neglected in practice, but can easily lead to subtle and hard to debug time-dependent errors. The discussion is carried out with reference to a real-world GCC-based open-source toolchain for the C language and the FreeRTOS RTOS, both of considerable practical interest.I documenti in IRIS sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.


