Ocarina is a stand-alone AADL model processor, written in Ada. It is distributed under the GPLv3 plus runtime exception.
It supports the following features:
Parser: support both AADL1.0 and AADLv2 syntaxes;
Code generation: targetting C real-time operating systems: RT-POSIX, Xenomai, RTEMS; and Ada using GNAT for native and Ravenscar targets;
Model checking: mapping of AADL models onto Petri Nets, timed (TINA) or colored (CPN-AMI);
Schedulability analysis: mapping of AADL models onto Cheddar or MAST models
Model Analysis: using the REAL language, one can analyse an AADL model for particular patterns or compute metrics.
Ocarina is an independent tool, it can either be used
Stand-alone: from the commande line
OSATE2 Integration: Ocarina can also be integrated to OSATE2 using a dedicated plug-in, see the following page for more details.
Library: Ocarina can be integrated in third-party tool, like Cheddar.
Ocarina runs on Linux, Windows, Mac OS X. Thanks to Ada portability, it can be ported to any platform supported by GNAT for native development.
Usage of Ocarina
Ocarina is used in the following projects:
TASTE toolchain: Ocarina is used as a library in the buildsupport tool, supporting model transformation, and as a stand-alone tool for code generation targetting various RTOSes;
Cheddar scheduling tool: a old version of Ocarina is used in Cheddar to support the import of AADL1.0 models.
In addition, Ocarina is used as teaching tool:
AADL classes at Telecom ParisTech: Lab session on the modeling of Distributed Real-Time Embedded System and code generation using Ocarina;
CpSc 875 Software Architecture at Clemson Univ.: Course on software architecture, Ocarina is used to generate Petri Nets from AADL models.
EMS Specialized Master at ISAE: Course on Architecture Design of Real-time Systems.
Ocarina documentation is bundled with the tarball. For your convenience, we provide:
Up-to-date snapshots from the github development branch are built every night and posted in the download area
Snapshots are rebuilt every night, at 9:30pm CET (UTC+1), and pushed on the website at 11pm.
Install Ocarina from source distribution
Ocarina requires a valid GNAT Ada compiler installed. We recommend either latest GNAT GPL or a GCC from the FSF.
To compile and install Ocarina, just type:
./configure [options] make make install
to get the list of possible options.
- To change the installation directory, use the flag
- To compile the documentation, use the flag
Note this requires a valid LaTeX + TeXinfo installation.
- If you modify source files, build Ocarina after a checkout or make distclean, or the directory hierarchy of the source files, you should re-generate autoconf and automake files (configure, Makefile.in…); to do this, from the main directory, run:
For more details, please refer to Ocarina’s documentation.
History of the Ocarina project
Here is a brief summary of the timeline of Ocarina:
Ocarina was initiated in 2004 by Telecom ParisTech as part of the ASSERT to support code generation from AADL1.0 models. The first users were the European Space Agency, MBDA and Astrium, targetting an Ada Ravenscar runtime.
At the completion of the ASSERT project, Ocarina effort was pursued as part of the Flex-eWare project. Ocarina has been extended to support model evaluation using REAL, and code generation targetting C/RT-POSIX OS between 2007 and 2009.
Starting 2008, Jérôme Hugues is in charge of the maintenance and the evolution of Ocarina as part of the TASTE toolchain, an offspring of ASSERT. TASTE completes ASSERT by adding new features and support for new operating systems. The TASTE toolchain relies on Ocarina for the generation of mission-critical space on-board software.
Since mid-2009, Telecom ParisTech is no longer involved in Ocarina, and is developping another AADL toolchain, based on Eclipse, codenamed RAMSES.
The development of Ocarina has been opened through TASTE in 2010, and subsequently deployed on github in 2013.
About Ocarina’s license
Ocarina is distributed under the GPLv3 plus runtime exception.
The GPLv3 plus runtime exception guarantees that Ocarina, but also the code it generates can be distributed under customer-specific terms and conditions. Specifically, the licence ensures that you can generate proprietary, classified, or otherwise restricted executables.