The Tower Language is an eDSL for composing Ivory programs into real-time systems. Tower programs specify communication channels, tasks, and signal handlers, and generate Ivory code which implements scheduling and communication for real-time operating systems.
Tower is both a specification language and a code generator. A Tower program describes communication channels and tasks, and provides an Ivory implementation of each task. Tower compiles the specification for the program and delegates code generation to an operating-system specific backend.
At the moment, Tower is still under active development and is not stable. There is no formal documentation, but there are some examples.
At this time, Tower has a backend for the FreeRTOS operating system, a backend for the eChronos operating system, and a backend for an AADL description of the system, designed for use with an external code generator. Users who want to use Tower for embedded systems will want to use the FreeRTOS or eChronos backend.
Simple examples and tests of the Tower framework are found in tower-examples
. The Simple example contains a number of trivial tasks demonstrating each type of communication primitive.