Embedded Control System Development with Giotto Thomas A. Henzinger, Benjamin Horowitz, Christoph Meyer Kirsch UC Berkeley
Giotto Giotto is a time-triggered and platform independent programming language + compiler + runtime library Giotto aims at hard real-time control applications on distributed platforms (safety-critical applications) Giotto provides an abstract programming model for embedded control system development Giotto runtime library for VxWorks (using timer services, scheduling services, TCP/IP stack)
Embedded System Development Control Engineer Control Design Application decomposes designs simulates Software Engineer Platform Giotto Program decomposes implements tests Functionality & Timing Matlab! Giotto!
A Giotto Task fSensors State Actuators Frequency 10ms
Semantics of a Giotto Task f State Time Task time t Frequency 10ms time t+10ms Don’t care SensorsActuators
Multiple Giotto Tasks Task QQ t+10ms P t+5mst Don’t care t+5ms Don’t care t
Concrete Syntax start slow ( ) { mode slow ( ) period 10 ms entryfreq 1 { taskfreq 1 do int motor1 = P ( bool bump ) ; taskfreq 2 do int motor2 = Q ( int position ) ; exitfreq 2 if position = 5 then fast ( ) ; } mode fast ( ) period 10 ms entryfreq 2 { taskfreq 1 do int motor1 = P ( bool bump ) ; taskfreq 4 do int motor2 = R ( int position ) ; }
Compilation Control Engineer Control Design Application decomposes designs simulates Software Engineer Platform Giotto Program decomposes implements tests Functionality & Timing Matlab! Giotto!
The Giotto Compiler Giotto Executable Giotto Program Compilation Giotto Runtime Library Distributed Platform Functionality & Timing Scheduling & Communication VxWorks
The Giotto Compiler Giotto Compiler Giotto Program Giotto Executable Possible Answers: Giotto Executable Not Schedulable
Giotto-Platform Giotto Compiler Hosts, Nets, Performance Giotto Program Giotto-P Program Distributed Platform
Giotto-Scheduler Giotto Compiler Task to Host, Priority Hosts, Nets, Performance Giotto Program Giotto-P Program Giotto-PS Program Distributed Platform
Giotto-Communication Giotto Program Giotto Compiler Giotto-P Program Distributed Platform Giotto-PS Program Giotto-PSC Program Task to Host, Priority Hosts, Nets, Performance Connection to Net, TDMA
The Giotto Runtime Library Giotto Executable Giotto Program Compilation Giotto Runtime Library Distributed Platform Functionality & Timing Scheduling & Communication VxWorks
The Giotto Runtime Library Giotto Runtime Library Distributed Platform VxWorks Timer Service Scheduling Service TCP/IP Stack Scheduling & Communication Abstraction Task, Connection Mapping Task Scheduling Scheme TDMA Slots Real-Time OS Services
The Giotto Runtime Library Available on VxWorks and x86 targets Current Experimental Robots: –credit card size x86 single board computer running VxWorks –wireless Ethernet –Lego motors, sensors Next Experimental Platform: –unmanned Yamaha helicopters –PC 104 single board computer running VxWorks –wireless Ethernet, GPS, inertial navigation sensor, …
End