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 this time, Tower has a backend for the FreeRTOS 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 backend.