The Giotto system is a programming methodology for embedded control systems running on possibly distributed platforms. The Giotto system consists of a time-triggered programming language, a compiler, and a runtime system. Giotto aims at hard real-time applications with periodic behavior.

The Giotto Language and Compiler

The Giotto programming language provides an abstract programmer's model. Giotto strictly separates the platform-independent functionality and timing concerns from platform-dependent scheduling and communication issues. The time-triggered predictability of Giotto makes it particularly suitable for safety-critical applications with hard real-time constraints.

The Runtime System

The runtime system is composed of two virtual machines. The first one is called Embedded Machine (E Machine) and handles the interaction with the environment (reactive). It interprets E code, which supervises the execution of software tasks in response to physical events.
The other one is the Scheduling Machine (S Machine) and handles the interaction with the running platform (proactive). It interprets S code, which specifies the temporal order of task execution. Figure 1 shows how E and S machine interact with the physical environment, software tasks, and hardware platform.

Fig 1. E Machine and S Machine

The Giotto project has been supported by the Air Force Office of Scientific Research, by the California MICRO program, by DARPA, by the National Science Foundation, and by Wind River Systems.