Real-time systems programming with GNAT and OpenRavenscar

Juan Antonio de la Puente

Abstract

Ada implementations for embedded real-time programming, including full annex D support, have often been found expensive and difficult to use for research, due to the lack of availability of their source code. On the other hand, the full potentiality of Ada tasking has often been considered as giving raise to undeterminism which prevented its use in high integrity systems. The Ravenscar profile defines a subset of Ada tasking that can be implemented by a small, reliable kernel, and can eventually be used in high integrity applications.

OpenRavenscar is an implementation of the Ravenscar profile for GNAT that has been developed at the Technical University of Madrid at the initiative of the European Space Agency (ESA). It consists of ORK, a Ravenscar-compliant kernel for the ESA standard ERC32 (SPARC v7) architecture, a cross-development port of GNAT for ORK/ERC32, and adapted versions of libraries, utilities, and the GDB debugger. It is distributed under a GPL license, which means that its source code is openly available for experimentation and maintenance. It is expected to be used for mission-critical on-board spacecraft software in the next future.

The paper describes the implementation of the ORK kernel, its integration with GNAT, and it use for programming real-time systems with predictable and analyzable temporal behavior. The ORK architecture, its design structure, and some details related to the implementation of the Ravenscar profile, are discussed in some detail.