Download presentation
Presentation is loading. Please wait.
Published byJolie Bussey Modified over 10 years ago
1
15 February 2007IASTED Software Engineering 2007, Innsbruck1 Embedded Functional Programming in Hume Gergely Patai patai@iit.bme.hu Péter Hanák hanak@iit.bme.hu Budapest University of Technology and Economics Department of Control Engineering and Information Technology
2
15 February 2007IASTED Software Engineering 2007, Innsbruck2 Outline Introducing Hume Example: lift control Example: light measurement Conclusions The Hume language is developed at University of St Andrews and Heriot-Watt University in Scotland within the EmBounded Project (IST-510255). http://www.hume-lang.org http://www.embounded.org
3
15 February 2007IASTED Software Engineering 2007, Innsbruck3 Hume overview An experimental functionally based language for embedded systems Pure functions: no side effects Inherently parallel Visual program structure Static space-time guarantees Verifiable properties Increased dependability Viable on low-end platforms
4
15 February 2007IASTED Software Engineering 2007, Innsbruck4 Hume example: counter program stream display to "std_out"; type integer = int 32; inc x = x+1; box counter in (n::integer) out (n’::integer, nout::integer) match n -> (inc n, n); wire counter (counter.n’ initially 0) (counter.n, display); Counter display nn’ nout
5
15 February 2007IASTED Software Engineering 2007, Innsbruck5 Hume basics Hume programs are ‘boxes’ connected with ‘wires’ Wires: are mailboxes that can hold one piece of data at a time each connects strictly one output to one input statically typed Boxes: map their inputs to their outputs with a pure function (combinational network) the function consists of rules, exactly one of which is chosen by pattern matching on the input if some outgoing wires needed by the rule are occupied, the result is buffered until the wire is freed up by its consumer Supersteps: global consume–produce cycles
6
15 February 2007IASTED Software Engineering 2007, Innsbruck6 Execution alternatives Source-level interpreter HAM (Hume Abstract Machine) interpreter Hume → HAM assembly compilation Optional transformation to bytecode Native code HAM → C conversion (macro expansion) Compiled with a C compiler, linked to a lightweight runtime system (RTS) No endianness issues, no malloc, no threads
7
15 February 2007IASTED Software Engineering 2007, Innsbruck7 Lift control Task: single-shaft lift simulation Hardware: mitmót ARM7 (32-bit) @ 54MHz (Philips LPC2106) 128k flash, 64k RAM OS: eCos User code: compiled to native code
8
15 February 2007IASTED Software Engineering 2007, Innsbruck8 Lift control software Requests state cache →user state’ cache’ C→ C← D→ D← Cabin Door state position →R ←R →D ←D state’ position’ ↑clk R↑ R↓ enabled state ↑C ↓C clk← enabled’ state’
9
15 February 2007IASTED Software Engineering 2007, Innsbruck9 Light measurement Task: remote measurement Hardware: Tmote Sky MSP430 (16-bit) @ 8MHz 48k flash, 10k RAM OS: Contiki with HAM interpreter Stripped string and floating point support Peripherals accessed as streams User code: HAM bytecode loadable over the air
10
15 February 2007IASTED Software Engineering 2007, Innsbruck10 Light measurement software Control Receiver UDP packetCommandAck/Light Speed controlPhoto diode Calibration (thresholds, speeds) State (init/alive/dead) ( Init, _*, _, *) -> (Alive, (200, 400, 50, 10), 50, *) | ( _, _*, _, Reset) -> ( Init, *, *, 0) | ( Dead, _*, _, _*) -> ( Dead, *, *, *) | (Alive, _*, _, Calibrate t1 t2 d1 d2) -> (Alive, (t1, t2, d1, d2), *, 1) | (Alive, (t1, t2, d1, d2), p, *) -> if p < t1 then (Alive, (t1, t2, d1, d2), d1, p) else if p < t2 then (Alive, (t1, t2, d1, d2), d2, p) else (Dead, *, *, *);
11
15 February 2007IASTED Software Engineering 2007, Innsbruck11 Experiences Short source code Easy portability Big native code (experimental compiler) No significant speed loss with bytecode Sufficiently fast for simple tasks Great potentials for a future IDE
12
15 February 2007IASTED Software Engineering 2007, Innsbruck12 Future work Improving the Tmote Sky port of the interpreter New resource-constrained applications on a variety of platforms Developing and evaluating extensions and tools for the language Further information: http://www.inf.bme.hu/fp4es
13
15 February 2007IASTED Software Engineering 2007, Innsbruck13 Thank you for your attention!
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.