RTEMS Centre was a project under the European Space Agency-Portugal Task Force aiming to develop a support and maintenance centre to RTEMS operating system. RTEMS is the Real-Time Operating System for Multiprocessor Systems. It is a full featured Real Time Operating System that supports a variety of open API and interface standards. It provides a high performance environment for embedded applications including multitasking capabilities, homogeneous and heterogeneous multiprocessor systems, event-driven, priority-based, pre-emptive scheduling, optional rate monotonic scheduling, inter-task communication and synchronization, priority inheritance, responsive interrupt management, dynamic memory allocation, and high level of user configurability.
 
 

 

Real Time Executive for Multiprocessor Systems (RTEMS) is a free open source Real Time Operating System (RTOS) designed for deeply embedded systems that aim to be competitive with closed source and commercial products. It was developed to support applications with the most inflexible time frames requirements, making it possible for the user to develop hard real time systems. RTEMS is maintained by the On-Line Research Corporation (OAR), albeit several of the features and platform support for it have been developed by RTEMS community. The first version of what is today RTEMS was released in 1988.

Being a free open source project is a big advantage in terms of economic and operational-functional factors. Relatively to the operational-functional factors, the advantage resides in the fact that it brings us the possibility to correct eventual bugs, improve a particular component and add new functionalities, besides allows a better understanding of the software architecture and the study in detail of each module.

RTEMS supports several CPUs from different architectures which include the SPARC, i386, PowerPC, ARM, Motorola, MIPS and Hitachi processor families. The basic kernel features supported include multitasking, different scheduling algorithms (Event Driven, Priority Based Pre-emptive and Rate Monotonic), inter-task synchronization and communication, interrupt management and dynamic memory management. The kernel is highly configurable as it allows selecting which modules to use before it is compiled, avoiding unnecessary delays and memory usage on the final product. As for networking capabilities, it uses a customized high performance FreeBSD TCP/IP stack and supports different protocols like UDP, TCP, ICMP, RARP and DHCP; additionally there are also servers implemented for FTP and HTTP protocols. Supported file systems include the IMFS (In Memory FileSystem), FAT12, FAT16, FAT32 and clients for TFTP and NFS. Despite lacking an IDE or polished monitoring/trace tools, there is support for remote debugging using GDB via the ethernet or serial ports.

Applications can be developed in C, C++ and Ada95 (although the support is limited for Ada95) using different APIs such as Ada, POSIX, µITRON and RTEMS’ own API set (based on the RTEID/ORKID standard). All of them, with the exception of Ada API, use RTEMS internal functions. The RTEID (Real Time Executive Interface Definition) was developed by Motorola with technical input from the company that developed the pSOS RTOS. The VITA (VMEbus Industry Trade Association) adopted RTEID as a draft for their interface, ORKID (Open Real Time Kernel Interface Definition). Posterior efforts in RTOS interface standardization resulted in the POSIX (Portable Operating System Interface) 1003.1b standard, which included real time extensions. The µITRON (Micro Industrial The Real time Operating system Nucleus) is an interface that aims to standardize RTOS specifications for embedded systems.

On a conceptual level RTEMS can be characterized by three layers: hardware support, kernel and APIs. The user then develops his application by using the available APIs. The next image gives another perspective into this.

RTEMS CENTRE has performed a deeper analysis of each manager of the Classic API of the operating system. Additionally, it has performed the reverse engineering of each manager. The RTEMS SuperCore handlers were also analysed, functions, variables, headers, implementations, inlines and macros. The following figure presents a sample of the full reverse engineering made to the RTEMS SuperCore, in this case the class diagram of Core Semaphore Handler.

RTEMS CENTRE Support Platform (http://rtemscentre.edisoft.pt) was developed in order to complement the RTEMS official website. The aim of such platform is to make public the technical know-how and developments produced of the RTEMS CENTRE.

The RTEMS Timeline Tool aims to support the application developer by giving important information of the system runtime context. It monitors data into the following categories:

  •  Schedulability analysis;
  • Stack and memory usage;
  • RTEMS API calls;
  • Configuration Tables;
  • Interrupt Generation.

The RTEMS Configuration and Installation Tool is a graphical application that is accessible by either the command line or the Eclipse IDE. The user interacts with the application to set options and parameters of RTEMS. At the end of the configuration process, the application uses the provided values to deploy the RTEMS toolchain.

The RTEMS Applications Configuration Tool is a graphical application that is accessible by either the command line or the Eclipse IDE. The graphical interface interacts with the user to obtain the necessary application dependent configurable parameters (e.g. number of tasks, etc). The configuration component generates a C source file containing the configured parameters. This source file includes the standard RTEMS “confdefs.h” file in order to apply the desired options.