EFDA-JET-CP(09)01/02
MARTe: a Multi-Platform Real-Time Framework
Development of real-time applications is usually associated with non portable code targeted at specific real-time operating systems. The boundary between hardware drivers, system services and user code is commonly not well defined, making the development in the target host significantly difficult. The Multi-threaded Application Real-Time executor (MARTe) is a framework built over a multi-platform library which allows the execution of the same code in different operating systems. The framework provides the high level interfaces with hardware, external configuration programs and user interfaces, assuring at the same time hard real-time performances. End users of the framework are required to define and implement algorithms inside a well defined block of software, named Generic Application Module (GAM), that is executed by the real-time scheduler. Each GAM is reconfigurable with a set of predefined configuration meta-parameters and interchanges information using a set of data pipes which are provided as inputs and required as output. Using these connections, different GAMs can be chained either in series or parallel. GAMs can be developed and debugged in a non real-time system and only once the robustness of the code and correctness of the algorithm are verified, deployed to the real-time system. The software also supplies a large set of utilities that greatly ease the interaction and debugging of a running system. Among the most useful are: a highly efficient real-time logger; HTTP introspection of real-time objects and HTTP remote configuration. MARTe is currently being used to successfully drive the Vertical Stabilisation Enhancement for the JET Plasma Control Upgrade project, with a control loop cycle of 50ms and a jitter under 1ms. In this particular project, MARTe is used with the Real Time Application Interface (RTAI)/Linux operating system exploiting the new x 86 multi-core processors technology.