Prelude is a high-level language for programming real-time embedded
control systems. It is built upon Synchronous Languages (such as
Lustre)
and inherits their formal properties. It adds real-time primitives to
enable the programming of multi-periodic systems. The objective of the
language is not to replace other synchronous languages but instead to
provide a higher layer of abstraction, on top of classic synchronous
languages. It can be considered as a real-time software architecture
language that enables to assemble locally mono-periodic synchronous
systems into a globally multi-periodic synchronous system.
The preludec compiler generates synchronized multi-task C
code, that is independent of the target OS. Communication is achieved by
a tailor-made buffering communication protocol. The compilation was
defined formally and produces completely deterministic code, which
respects the real-time semantics of the original program (period,
deadlines, release dates and precedences) as well as its functional
semantics (respect of variables consumption). The Prelude compiler produces
code for either monocore or multicore architectures.
For installation, check the INSTALL file of the distribution.
Download
You can download Prelude from
its forge
(the user 'guest' (passwd: 'oneraguest') can be used to file a bug report or access read-only sections of the Forge).
You will need OCaml installed to compile the source distribution, which
should be packaged for most Linux distributions, otherwise you can get
it from here.
To compile the code generated by preludec, the simplest way is to
install SchedMCore.
You can however use your favorite RTOS instead, following the
instructions in the README.
Feedback is welcome and encouraged: Email:julien dot forget at univ-lille1 dot fr
Supported features
The following features are supported by the current distribution: