Giotto A tool-supported design methodology for developing hard real-time applications Cyber Physical Systems Lab Ramtin Raji Kermani.

Slides:



Advertisements
Similar presentations
A Hierarchical Co-ordination Language for Interacting Real-time Tasks Arkadeb Ghosal, UC Berkeley Thomas A. Henzinger, EPFL Daniel Iercan, "Politehnica"
Advertisements

1 Translation Validation: From Simulink to C Michael RyabtsevOfer Strichman Technion, Haifa, Israel Acknowledgement: sponsored by a grant from General.
Sensor Network Platforms and Tools
Overview: Chapter 7  Sensor node platforms must contend with many issues  Energy consumption  Sensing environment  Networking  Real-time constraints.
Time Safety Checking for Embedded Programs Thomas A. Henzinger, Christoph M. Kirsch, Rupak Majumdar and Slobodan Matic.
The Fixed Logical Execution Time (FLET) Assumption Tom Henzinger University of California, Berkeley.
MotoHawk Training Model-Based Design of Embedded Systems.
Event Driven Real-Time Programming CHESS Review University of California, Berkeley, USA May 10, 2004 Arkadeb Ghosal Joint work with Marco A. Sanvido, Christoph.
Overview of PTIDES Project
Page 1 Building Reliable Component-based Systems Chapter 13 -Components in Real-Time Systems Chapter 13 Components in Real-Time Systems.
Integrated Design and Analysis Tools for Software-Based Control Systems Shankar Sastry (PI) Tom Henzinger Edward Lee University of California, Berkeley.
Chess Review November 21, 2005 Berkeley, CA Edited and presented by Trading Latency for Composability Slobodan Matic UC Berkeley.
February 11, 2010 Center for Hybrid and Embedded Software Systems Ptolemy II - Heterogeneous Concurrent Modeling and Design.
From Models to Code: The Missing Link in Embedded Software Tom Henzinger University of California, Berkeley Joint work with Ben Horowitz and Christoph.
Chess Review May 11, 2005 Berkeley, CA Composable Code Generation for Distributed Giotto Tom Henzinger Christoph Kirsch Slobodan Matic.
Aalborg Media Lab 21-Jun-15 Software Design Lecture 1 “ Introduction to Java and OOP”
Programming Languages Structure
Expressing Giotto in xGiotto and related schedulability problems Class Project Presentation Concurrent Models of Computation for Embedded Software University.
HAS. Patterns The use of patterns is essentially the reuse of well established good ideas. A pattern is a named well understood good solution to a common.
Giotto A Time-Triggered Language for Embedded Programming Thomas A. Henzinger, Benjamin Horowitz Christoph M. Kirsch, Rupak Majumdar UC Berkeley.
February 21, 2008 Center for Hybrid and Embedded Software Systems Mapping A Timed Functional Specification to a Precision.
Interfaces for Control Components Rajeev Alur University of Pennsylvania Joint work with Gera Weiss (and many others)
7th Biennial Ptolemy Miniconference Berkeley, CA February 13, 2007 PTIDES: A Programming Model for Time- Synchronized Distributed Real-time Systems Yang.
Designing Predictable and Robust Systems Tom Henzinger UC Berkeley and EPFL.
November 18, 2004 Embedded System Design Flow Arkadeb Ghosal Alessandro Pinto Daniele Gasperini Alberto Sangiovanni-Vincentelli
Using JetBench to Evaluate the Efficiency of Multiprocessor Support for Parallel Processing HaiTao Mei and Andy Wellings Department of Computer Science.
MOBIES Project Progress Report Engine Throttle Controller Design Using Multiple Models of Computation Edward Lee Haiyang Zheng with thanks to Ptolemy Group.
Giotto and TMO Yerang Hur System Design Research Lab. Dept. of Computer and Information Science.
L EC. 01: J AVA FUNDAMENTALS Fall Java Programming.
CS190/295 Programming in Python for Life Sciences: Lecture 1 Instructor: Xiaohui Xie University of California, Irvine.
Comparative Programming Languages hussein suleman uct csc304s 2003.
© Janice Regan, CMPT 128, Jan CMPT 128 Introduction to Computing Science for Engineering Students Creating a program.
REAL-TIME SOFTWARE SYSTEMS DEVELOPMENT Instructor: Dr. Hany H. Ammar Dept. of Computer Science and Electrical Engineering, WVU.
Chapter 1 Introduction Dr. Frank Lee. 1.1 Why Study Compiler? To write more efficient code in a high-level language To provide solid foundation in parsing.
1. Introduction 1.1 Background 1.2 Real-time applications 1.3 Misconceptions 1.4 Issues in real-time computing 1.5 Structure of a real-time system.
Co-design Environment for Secure Embedded Systems Matt Eby, Janos L. Mathe, Jan Werner, Gabor Karsai, Sandeep Neema, Janos Sztipanovits, Yuan Xue Institute.
CIS 540 Principles of Embedded Computation Spring Instructor: Rajeev Alur
Languages for HW and SW Development Ondrej Cevan.
Unit-1 Introduction Prepared by: Prof. Harish I Rathod
1.  10% Assignments/ class participation  10% Pop Quizzes  05% Attendance  25% Mid Term  50% Final Term 2.
REAL-TIME SOFTWARE SYSTEMS DEVELOPMENT Instructor: Dr. Hany H. Ammar Dept. of Computer Science and Electrical Engineering, WVU.
Tutorial Robot: an implementation of the Embedded Machine Daniel Jhin Yoo EECS (Senior) Alvin AuYoung EECS (Junior)
Theory of Programming Languages Introduction. What is a Programming Language? John von Neumann (1940’s) –Stored program concept –CPU actions determined.
A compiler is a computer program that translate written code (source code) into another computer language Associated with high level languages A well.
What’s Ahead for Embedded Software? (Wed) Gilsoo Kim
CIS 540 Principles of Embedded Computation Spring Instructor: Rajeev Alur
CS4315A. Berrached:CMS:UHD1 Introduction to Operating Systems Chapter 1.
1 Asstt. Prof Navjot Kaur Computer Dept PRESENTED BY.
Software Systems Division (TEC-SW) ASSERT process & toolchain Maxime Perrotin, ESA.
T imed Languages for Embedded Software Ethan Jackson Advisor: Dr. Janos Szitpanovits Institute for Software Integrated Systems Vanderbilt University.
Evolution of C and C++ n C was developed by Dennis Ritchie at Bell Labs (early 1970s) as a systems programming language n C later evolved into a general-purpose.
Giotto Embedded Control Systems Development with Thomas A. Henzinger Ben Horowitz Christoph M. Kirsch University of California, Berkeley
Review A program is… a set of instructions that tell a computer what to do. Programs can also be called… software. Hardware refers to… the physical components.
February 11, 2016 Center for Hybrid and Embedded Software Systems Organization Faculty Edward A. Lee, EECS Alberto Sangiovanni-Vincentelli,
February 14, 2013 Center for Hybrid and Embedded Software Systems Organization Faculty Edward A. Lee, EECS Alberto Sangiovanni-Vincentelli,
Embedded Control System Development with Giotto Thomas A. Henzinger, Benjamin Horowitz, Christoph Meyer Kirsch UC Berkeley.
Computer System Structures
Introduction to Compiler Construction
CSCI-235 Micro-Computer Applications
Ptolemy II - Heterogeneous Concurrent Modeling and Design in Java
Ptolemy II - Heterogeneous Concurrent Modeling and Design in Java
Assembler, Compiler, Interpreter
CS190/295 Programming in Python for Life Sciences: Lecture 1
Programming Languages
Shanna-Shaye Forbes Ben Lickly Man-Kit Leung
Retargetable Model-Based Code Generation in Ptolemy II
Ptolemy II - Heterogeneous Concurrent Modeling and Design in Java
Language Processors Application Domain – ideas concerning the behavior of a software. Execution Domain – Ideas implemented in Computer System. Semantic.
Ptolemy II - Heterogeneous Concurrent Modeling and Design in Java
Assembler, Compiler, Interpreter
Presentation transcript:

Giotto A tool-supported design methodology for developing hard real-time applications Cyber Physical Systems Lab Ramtin Raji Kermani

Embedded Software Development One of the fastest growing topics of the computer industry Electronics, Medical implants, Cruise control, Flight autopilot etc. Communicate with physical world (Environment) Control a system (Robot movement, control an electronic gadget) Correctness: Time + Value We need more sophisticated tools for this Using Real-time OS: VxWorks, LynxOS, Windows CE, etc OR bare-iron

Control Software development Using Legacy programming languages: C, C++, Ada Using Engineering software: Matlab, Simulink, LabVIEW Real-time Java Design process: o Modeling o Simulation o Analysis and verification o Code generation for a specific platform Traditional methods are usually platform dependent

The Giotto Project at CHESS The Giotto project started as a part of CHESS research group (Center for Hybrid and Embedded Software Systems) at the University of California Berkeley The research is considered inactive in UC Berkeley but still a research topic at ETH Zurich Institute of Technology 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

What is Giotto? Giotto is a tool-supported programming methodology for designing embedded control systems with periodic, possibly concurrent, task execution nature. The tools include o A time-triggered programming language o A compiler o A run-time environment (including multiple virtual machines). Based on LET (Logical Execution Time) assumption The goal is to raise the level of abstraction while keeping the programs unambiguous Suitable for designing distributed platforms

What is Giotto? Separation of timing and functionality Separation of platform-dependent and platform-independent constraints A Giotto program: o Functionality Code (C, Oberon, etc) o Giotto Timing code (Giotto Code) For a sequence of time-triggered sensor readings we have a deterministic time-triggered sequence of actuator updates

Giotto Development Process

What is Giotto? Modes A Giotto program is composed of “modes” Each mode is consist of a specific set of “task” Switching between modes ( if condition true)

What is Giotto? Tasks Tasks carry the code for functionality program Each application is composed of a series of tasks Written in any Programming language (C, C++, Ada, Oberon, etc) Compiled independent of the Giotto program Finally compiled tasks are linked with the Giotto program Giotto program is responsible for anaging the execution of tasks Giotto Program is "Glue code" Each task has an Execution Frequency in each mode

What is Giotto? Logical Execution Time Logical Execution Time of tasks vs. Physical Execution of tasks platform independent Deterministic code

What is Giotto? Ports Communication between different tasks, sensors and actuators are done via “ports” A shared memory location Drivers Communication between tasks, sensors and actuators is performed by drivers

What is Giotto? Mode Switches Switching between modes when a condition is held true Re-arrangement of task set

Giotto Compiler Giotto compiler is responsible for compiling the giotto program with respect to the specifications of a target hardware/software Compilation process guarantees the preservation of timing and functionality on the platform or rejects the program The compiled Giotto code is executed on multiple virtual machines. The result of the compilation is “E-Code” which is executed on a virtual machine called “E-Machine” For scheduling purposes, the E-machine may pass the tasks to the scheduler of the operating system OR alternatively pass it to the S- Machine which interprets the S-Code

Giotto Annotations Using “Giotto Annotations” which convey the platform specific specification and constraints, we can guide the compiler in order to faster and better schedule tasks and assign appropriate resources to each task. Annotation Types: o Giotto-P => Resources o Giotto-PM => esource assignments to tasks o Giotto-PMC (Giotto-PMS) => Communication and Scheduling

gTranslator: Simulink/Giotto model translator A “Component Library” is developed for Mathworks Simulink To create functionality codes using standard block based programs in simulink Translates the Giotto syntactic models into available semantic simulink blocks without modifying the non-Giotto functionality code Harnesses the code generation capabilities of simulink

Giotto Demo Giotto simulator is a demo software based on Java which is developed by Giotto research group to demonstrate the capabilities of Giotto framework

Giotto Program Structure structure of a sample Giotto program provided in Giotto website C-like syntax A Giotto code is composed of o Comments, o Sensor declarations, o Actuator declarations, o Output port declaration, o Task declaration, o Actuator driver declaration, o Input driver declaration, o Mode switch driver declarations, o mode declarations Comments using // and /*....*/

Giotto Program Structure Sensor declaration: sensor real_port positionX uses GetPosX; real_port positionY uses GetPosY; real_port angle uses GetPosA; Syntax: [SensorType] [SensorName] uses [Driver]

Giotto Program Structure Actuator declaration: actuator real_port rightJet uses PutRightJet; real_port leftJet uses PutLeftJet; Syntax: [ActuatorType] [ActuatorName] uses [Driver]

Giotto Program Structure Output port declarations output real_port turn := real_zero; real_port thrust := real_zero; real_port errorX := real_zero; Syntax: [OutputType] [PortName]

Giotto Program Structure Task Declaration task turnToTargetTask(real_port eX, real_port eY, real_port eA, real_port eA2) output (turn, thrust) state () { schedule TurnToTarget(eX, eY, eA, eA2, turn, thrust) } Actuator Driver Declaration driver leftMotor(turn, thrust) output (real_port left) { if constant_true() then ComputeLeftJetPower(turn, thrust, left) }

Giotto Program Structure Input Driver declaration driver getPos (positionX, positionY, angle, targetX, targetY, targetAngle) output (real_port posX, real_port posY, real_port posA, real_port tgtX, real_port tgtY, real_port tgtA) { if constant_true() then copy_real_port6(positionX, positionY, angle, targetX, targetY, targetAngle, posX, posY, posA, tgtX, tgtY, tgtA) } Mode switch driver declaration driver goForward(errorX, errorY, errorAngle, targetDirection) output () { if GoForward(errorX, errorY, errorAngle, targetDirection) then dummy() }

Giotto Program Structure Mode declarations mode rotate() period 200 { actfreq 1 do leftJet(leftMotor); actfreq 1 do rightJet(rightMotor); exitfreq 1 do point(goPoint); exitfreq 1 do idle(goIdle); exitfreq 1 do forward(goForward); taskfreq 2 do errorTask(getPos); taskfreq 1 do turnTowardsTargetTask(getErr); }

Giotto: Success Stories Model helicopter control system Mind-Storm Lego Robots -Swarm Multi-Robot system Electronic Throttle Control

Projects Inspired by Giotto xGiotto The Timed Definition Language: TDL Hierarchical Timing Language: HTL

Conclusion Giotto is a powerful methodology for development of software for hard real-time embedded control systems with a periodic nature. The Giotto program itself plays the role of a coordinator to synchronize, schedule and coordinate the execution of a series of tasks in a structured manner. Tools are still not mature enough Concept is so powerful that many projects are initiated based on Giotto

Questions?