Presentatie van Ruud Jeurissen over code generatie in embedded systemen, die hij tijdens Exception Twente op 15 januari 2015 heeft gegeven.
‘Model-based design’ belooft grotere productiviteit, zoals de meeste methodieken beloven. Maar wordt dit ook waargemaakt? Hoe complex is het eigenlijk? En is het alleen geschikt voor grotere systemen? In deze presentatie zal aan de hand van het pakket Matlab/Simulink duidelijk worden gemaakt hoe dit alles in de praktijk eruit ziet en in zijn werk gaat. De focus zal vooral liggen op embedded systemen, waartoe eerst een aantal basisbegrippen uit deze wereld aan bod komen.
11. • bare-metal smaak: “timed-interrupt”
• hardware timer die bv elke 1ms interrupt
geeft
• waarom?
– nodig voor regeltechniek
– m.n. sensoren (afgeleiden in regel algoritme)
• ontwerp kan ook zonder timed-interrupt,
of met meerdere interrupts
Embedded systemen
11
12. • timed interrupt samen met PLC aanpak:
– read inputs
– calculate model (= domain-code)
– write outputs
• skeleton = main-loop + timed IRQ + …
– timed IRQ = model
– main-loop = debug-code
Embedded systemen
12
14. • stap 1: keuze OS (of bare-metal)
• stap 2: start met ontwerp
• DEMO…
– tooltje voor state-diagram
WC-ventilator
14
15. • stap 3: ontwerp implementeren
• lui aangelegd
– lui = slecht (werkgever)
– lui = efficient (ik)
– efficient = hoge productiviteit
– lui = goed
• geen zin om ontwerp om te zetten naar
code code generatie
WC-ventilator
15
Maar waarom zo geobsedeerd door WC-ventilator?
Waarom bij Exception Twente?
Wordt gaandeweg hopelijk duidelijk.
Misschien eerst beginnen met mijn achtergrond
Hier ben ik opgegroeid, in de schuur van mijn vader
boren, zagen, draad tappenkortom: dingen maken
later middelbare school
project in maandblad Kijk:robot muis
voor de tijd van uC, puur electronica
4 jaar later (eind middelbare school) eerste computer, de Commodore 64
Basic-taal uitgebreid om 3D draad-modellen weergeven in perspectief, roteren, transleren
mechatronica en dan specifiek embedded sw
ik ben Ruud Jeurissen
senior software engineer
12 jaar bij Demcon
Dus 1e reden voor enthousiasme over WC-ventilator:- mogelijkheid voor embedded systeem
Embedded systemen onderverdelen in 2 groepen:bare-metal vs (real-time) OS
Kenmerken
Wanneer gebruik je wat?
Iets meer over de ‘timed interrupt’
Laten zien hoe skeleton is opgebouwd:main, application, piniocfg, test
Demo looplicht
De WC-ventilator: eerste het ontwerp maken
Stap 3: ontwerp implementeren
Probleempje, ben beetje lui…
2e reden voor enthousiasme over WC-ventilator:- mogelijkheid tot code-generatie
wie is bekend met Simulink?
voor wie Matlab / Simulink nog niet kent:korte introductie
Demo: - benodigde instellingen om code te genereren - code genereren - gegenereerde code laten zien
3e reden voor enthousiasme over WC-ventilator:- mogelijkheid tot Model-based design
het principe van code-generatie:
maak model van:applicatie, hardware, real-world
simuleer (test) het model
genereer code van:applicatie, hardware-drivers
download naar µC
het werkt !! we have managed rocket science !!
wie gelooft dit?weinig: eens kijken of ik er een paar kan overtuigenveel:
Kijken of we dat in de praktijk kunnen brengen
simulatie
probleem herkennen
probleem oplossen
nieuwe code genereren
Copy, compile, download, test works!
nu meer detail: hoe werkt code-generatie
process uitgetekend
stappen kort duiden
delen dus parallel
uit echte tests komen nog verbeterpunten
wijziging geen vertaling tussen system-engineer naar code - snel - zonder tussenkomst van sw-engineer - zonder nieuwe bugs op sw-nivo
Onderwerp: de WC-ventilator
Active Piston Prover (APP)
- ook skeleton uit Simulink gegenereert
- dedicated electronica
QLima – luchtconditioning
- CO2 / temperatuur regeling ruimtes
- 8-bits AVR
- actieve roosters
- wireless