21–22 May 2014
ESA/ESTEC
CET timezone

RTEMS Leon Upgrade

21 May 2014, 16:30
50m
Einstein (ESA/ESTEC)

Einstein

ESA/ESTEC

Speaker

Mr Helder Silva (Edisoft)

Description

Activity: GSTP ESA TO: Mr. Christophe Honvault - Software Systems Division In the frame of the General Support Technology Programme, EDISOFT executed the activity named On Board operating system Upgrade for LEON, contract number 4000103825. The Kick-Off of RTEMS LEON Upgrade was performed in the 9th February 2012 and ended on 31st March 2014. The following activities have been achieved during the study. • RTEMS was enhanced to provide means to store inside RTEMS the fatal and non-fatal error messages with the file and line of error occurrence. The mechanism used has two distinct ring buffers, one for fatal error messages and another to non-fatal error messages, with the capacity of 100 and 200 messages, respectively. RTEMS is now capable of storing internal error messages and provides a similar method for the application to store and report fatal and non-fatal errors. • RTEMS Rate Monotonic Manager was enhanced to include the definition of the deadline concept. RTEMS is now able of detecting and signalling the periodic tasks deadline misses and of measuring execution time of periodic tasks. • RTEMS thread dispatch was improved to detect task stack overflow and underflow. The mechanism used is based in an insertion of 2 unsigned 32-bits integers with a special “watermark” (0xAAAAAAAA and 0x77777777) in the stack header and footer. Within the thread dispatch, both stack footer and header are compared with the predefined “watermark” to detect stack overflow and underflow. • RTEMS now includes an API to mask and unmask a specific interrupt in the hardware. • Binary semaphores with priority inheritance and ceiling are now safer to be used. RTEMS currently does not allow that a task that owns semaphores having priority inheritance or priority ceiling protocols to be suspended, to change the task mode to non-preemptible, to change priority, to be blocked in calls with the exception of obtaining semaphores with priority inheritance and ceiling, respectively, and to mix semaphores with different priority protocols. • Additionally, the removal of the dynamic memory allocation in the RTEMS initialization was performed. Although it was detected an improvement in some RTEMS directives, the modification introduced a significant increase in memory occupancy of applications, limited the tasks stack to 8Kbytes and obliged the use of floating point (CPU_HARDWARE_FP) in a task. • Several combinations of compilers, linkers and assemblers were used with RTEMS. The conclusions taken in the execution of this task, based on the measurements taken in the CPU Occupancy, Timing Report and Memory Report for the different toolchains, optimizations and hard-float flag, were to maintain the RTEMS Improvement original toolchain (GCC 4.2.1 and Binutils 2.18) in the development of RTEMS LEON Upgrade project. The modifications to RTEMS that could lead to a significant loss of product history were not introduced in the RTEMS Improvement main stream but kept in a specific configuration controlled branch. The RTEMS Improvement, implementing now the RTEMS LEON Upgrade results, is currently being used in several ESA space missions, including Galileo FOC, Solar Orbiter, IXV, IMA, smallGEO, Sentinel2, MTG and EarthCare.

Presentation materials