TASTE is a set of freely-available tools dedicated to the development of embedded, real-time systems. It is developed by the European Space Agency together with a set of partners from the space industry.
TASTE allows software designers to easily integrate heteregeneous pieces of code produced either manually (in C or Ada) or automatically by external modelling tools such as MATLAB Simulink and SDL using Pragmadev Studio or OpenGEODE.
By using TASTE, a software system architect can easily produce a complete and homogeneous system in three steps as depicted by the following figure (see below).
- Produce an homogeneous SW system from a set of heterogeneous functions (Written in C, Ada, Simulink, VHDL, SCADE, and/or SDL)
- Provide facilities for schedulability analysis (Integrates CHEDDAR, MAST, and Marzhin)
- Provide features for early verification and testing of the generated SW (GUIs and Python scripts)
- Provides built-in behavioural modelling facilities (state machine editor) and automatic code generation
- Generate multiple implementations (manage distribution) from one unique model: ease application portability
- Supports the integration of FPGA components
- Support expandability of features through openness to external tools.
- Supports connection with SQL databases
This picture shows one of the main TASTE graphical editors, called "Interface View editor". This tool is used to capture the system logical architecture, in terms of functions connected through their interfaces:
This picture shows an example of an SDL/RTDS "function skeleton" generated by TASTE. TASTE generates an SDL state machine and all its "SIGNAL" and datatypes parameters, so that the end user only has to fill the content of the state machine. TASTE does the same for Ada, C, Simulink, SCADE, and VHDL.
TASTE also comes with two built-in (free) SDL editors that allow graphical description of state machines, and automatic code generation:
This picture shows a graphical user interface automatically generated by TASTE to "stub" a function declared in the Interface View. It is possible to interact with the rest of the system at runtime, by sending and receiving messages, and plotting data. Trace of execution (exchanges of messages) is recorded in the form of sequence diagrams (MSC documents) and can be converted to Python scripts. This way, complex interaction with the system can be programmed in order to validate operational scenario at runtime on the target.
Supported architectures and targets
TASTE is able to generate systems from a high-level abstraction. It can generate applications for the following architectures:
- x86 with the following operating systems: Linux, Mac OS X, FreeBSD, RTEMS, and Windows.
- ARM with the GNAT Runtime. Successfully tested on STM32F405, F407, F429 boards, and the Crazyflie quadcopter.
- SPARC (LEON) with RTEMS and Open Ravenscar Kernel (ORK+). For LEON/RTEMS, TASTE can be interfaced with the RASTA board which provides interfaces for serial, Spacewire and 1553 buses.
TASTE is made of a number of components and does not have a single licensing scheme.
All tools can be used freely; and almost all of them are available under open-source licenses (GPL or LGPL).
An overview of the licenses used in the core TASTE components follows below. As an executive summary: run-time libraries and code created by TASTE's code generators become a part of any "flight code" compiled binaries - so they were chosen to be licensed in such a way, that allows them to be freely used; with no licensing impacts of any kind.
Simply put, their license does not "contaminate" your own software.
- Ocarina — AADL parser and code generator, http://www.openaadl.org — licensed under the GPLv3 with run-time exceptions.
- ASN1SCC and DMT — ASN.1 toolchains, https://github.com/ttsiodras/asn1scc — licensed under the GPLv2 (or later) with run-time exceptions.
- OpenGEODE — SDL editor and code generator, https://github.com/esa/opengeode — licensed under LGPL3 (it includes no run-time).
- RTEMS — Real-Time Executive for Multiprocessor Systems, https://www.rtems.org — licensed under GPL2 with a specific runtime exception licence from https://www.rtems.org/license
- Buildsupport (model transformation) - licensed under LGPLv3 (developed specifically for TASTE)
- TASTE orchestrator (build script) - licensed under LGPLv3 (developed specifically for TASTE)
2. Modeling tools: these tools produce intermediate models or perform analysis on these models. As such, they generate no artefacts that are part of the final product, but only inputs to code generators. The output of the code generators - that actually "flies" - is governed by modeling-tool specific licenses; but generally speaking, these licenses are usually designed to allow use on production code with no restrictions.
- Interface, Deployment and Concurrency view editors are closed-source, developed specifically for TASTE by Ellidiss with a specific license that allows end-user to use the tools in the context of TASTE only. See $HOME/tool-src/ellidiss-GUI/TASTE-linux/doc/License.pdf in TASTE VM for more details.
- Cheddar and Marzhin (Scheduling Analysis) are third-party tool integrated to TASTE by Ellidiss, and distributed under specific TASTE conditions that allows end-user to use the tools in the context of TASTE only. See $HOME/tool-src/ellidiss-GUI/TASTE-linux/doc/License.pdf in TASTE VM for more details.