Analyse og design af Indlejrede Systemer. v/ Jens Dalsgaard Nielsen Henrik Schiøler alle Afdeling for Proceskontrol



Relaterede dokumenter
Analyse og design af Indlejrede Systemer. v/ Jens Dalsgaard Nielsen Henrik Schiøler Mads Dore alle Afdeling for Proceskontrol

CANSAT & ARDUINO step by step

Processer og tråde. dopsys 1

Lærevejledning. - en introduktion til maskinarkitektur. faraz@butt.dk Faraz Butt mads@danquah.dk Mads Danquah doktor@dyregod.dk Ulf Holm Nielsen

Sider og segmenter. dopsys 1

Arduino kursus lektion 3:

Sider og segmenter. dopsys 1

Schedulering. dopsys 1

Schedulering. dopsys 1

Lyskryds. Thomas Olsson Søren Guldbrand Pedersen. Og der blev lys!

Interrupt - Arduino. Programmering for begyndere Brug af Arduino. Kursusaften 6 EDR Hillerød Knud Krogsgaard Jensen / OZ1QK

System Arkitektur og Integration

Planen for idag. Datalogi 1F Forår Hvad er en proces? Livscyklus for en proces. Hvad består en proces af?

Rolf Fagerberg. Forår 2013

Datamaters arkitektur og programmering

Implementation af Koordinering. dopsys 1

Alt elektronik heri er købt via og arduino udviklingssoftware er hentet fra

Scheduling. Niels Olof Bouvin. Institut for Datalogi Aarhus Universitet

Beskrivelse af tryghedsalarmen

Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Ideen er simpel:

Manual til PRO DK180

Koordinering. dopsys

VELKOMMEN TIL PHOTO STORY FOR WINDOWS

In stal l ati on sv ejl edn i n g er ti l di gi tal e n o- tesbøger

Manual for installation og brug af Ad-aware version 2007

CCS Formål Produktblad December 2015

Rolf Fagerberg. Forår 2012

Rolf Fagerberg. Forår 2015

DM507 Algoritmer og datastrukturer

Og vi skal tale om det på en måde, som du måske ikke har tænkt over det før.

Programmering i C. Lektion december 2008

Kan vi fortælle andre om kernen og masken?

Installation af RNS-E samt Fartpilot og Kørecomputer i A4 B6 & B7

Grafisk workflow. Se siden her:

Netværk & elektronik

============================================================================

GSM ALARM BASIC. Brugervejledning dansk. Version 1. Side

Routeren. - og lag 3 switchen! Netteknik 1

Mobildeal trimmet til tiden. Erhverv. Stå stærkt

Studieteknik og hurtiglæsning, Det Grønlandske Hus. v. Thomas Phillipsen Konsulent (cand.psych.) Perspektivgruppen

Introduktion til DM507

Sådan gør I: Forberedelse og introduktion

SeeTool - KNX løsninger til

Tilbagemeldinger fra kurset. Ambassadørernes tilbagemeldinger Fra klimaambassadør kurset lørdag den 2. juni 2012

Bryd vanen, bøj fisken - og vind over krisen

Installér din Officepakke 2013

Principper for Samtidighed og Styresystemer

Algorithms & Architectures II

Workshops til Vækst. - Modul 4: Intern indsigt. Indholdsfortegnelse

Example sensors. Accelorometer. Simple kontakter. Lysfølsomme. modstande. RFID reader & tags. Temperaturfølsomme. Flex Sensor.

Optimeret Ruteforslag

Agil-model versus V-model set i lyset af en testers dilemmaer

CANASTAKLUBBEN. stiftet 20. januar For at fremme kammeratlig sammenvær og hygge, for klubbens medlemmer og ikke mindst deres børn.

Programmering af trådløse modtagere (RF)

Kravspecifikation For. Gruppen

LET TILGÆNGELIG ENERGI OVERALT

Der er derfor, for at alle kan sende, kun tilladt, at sende intermitterende. Altså korte pakker. ( Dette skal dog verificeres!!)

DC-Motor Controller. Brugermanual

Silver Night. Forstærkere. Brugervejledning. For modellerne

Svane Electronic Universal timer med 2 relæer og 18 funktioner hver 1

STRATEGISK WAYFINDING

MTB toolkit'n'guidelines... Indsendt af Sonny Pedersen Maj :58

9 tips til din intuition Den ved præcis, hvor du skal hen for at blive glad

MJ: 28 years old, single, lives in Copenhagen, last semester student at university.

Android-app til Legacy pa Windows-pc

System Komponenter. Vakuum stationer, Central filter systemer, Vacuum beholdere & Rørløsninger

Computerens Anatomi. Af Martin Arnetoft

Faglig læsning i 6. klasse: At læse og forstå fagtekster

Interview med Jørgen Schøler Cheflæge Hospitalsenheden Horsens.

Lageradministration. dopsys

Tilslutning- og programmeringseksempler

INTRODUKTION: Kursus i Klinisk meningsfuld kodning. - for læger og lægesekretærer

Brugervejledning for Senge- og dørvagt PIR2003

DATALOGI 1E. Skriftlig eksamen torsdag den 3. juni 2004

Sporing af demente med GPS-teknologi

1. At afhjælpe eventuelle alarmer fra anlægget. 2. Bestille syre inden syretanken er tom anlægget kommer med en blød alarm i god tid.

Operativsystemer of C Efterår 2013 Virtuel hukommelse (kap. 9)

Rolf Fagerberg. Forår 2014

Diktat 1 Lørdag morgen

Premier. Forforstærkere. Brugervejledning. For modellerne

Innovationsledelse i hverdagen

Algoritmer og Datastrukturer 1. Gerth Stølting Brodal

Flowchart og Nassi ShneidermanN Version. Et flowchart bruges til grafisk at tegne et forløb. Det kan fx være et programforløb for en microcontroller.

Har du set underviserens video om RNA oprensning inden du gik i laboratoriet?

Computerens Anatomi Af Mathias og Mark

Flashcard og TPR aktiviteter:

Smartbox, Brugermanual Montageanvisning Denne folder skal altid opbevares ved produktet!

Styresystemer og tjenester

Grundlæggende Algoritmer og Datastrukturer. Analyseværktøjer [CLRS, 1-3.1]

Træning til klatring i klubben.

Lærebog. Datalogi 1F Forår Hvad sker hvornår? Kursusbøger. Planen for idag. Hvad er et operativsystem

Lageret i maskinarkitekturen. Beregningsenhed, lagre (registre, RAM, disk), ydre enheder

Brug Photo Story 3 en let introduktion

Model og Metode til Programudvikling. Jens Dalsgaard Nielsen

ADVARSEL: Smid ikke dette produkt i husholdningsaffaldet. Aflever det til et indsamlingssted for genanvendelse af elektroniske apparater.

Læsetræning 2B. Margaret Maggs & Jørgen Brenting. - læs og forstå. illustration: Birgitte Flarup

// inkluder library kode: #include <LiquidCrystal.h> #include <Serial.h> // Initialiser display LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

Bilag 6: Transskribering af interview med deltager nr. 1

Database optimering - Indeks

Transkript:

Analyse og design af Indlejrede Systemer v/ Jens Dalsgaard Nielsen Henrik Schiøler alle Afdeling for Proceskontrol 1

kursusindhold... Introduktion til parallellitet og multiprogrammering Analyse, modellering, design Tidslig analyse og skeduleringsteori Indlejrede systemer & kerner Der er ofte ser stor forskel på folks indgang til dette kursus i hvad man kan. Alle skal med... 2

kursusholdere Jens Dalsgaard Nielsen (mig) Henrik Schiøler http://www.control.aau.dk/~jdn/edu/courses/e05/e5-indlejrsys formål, indhold,... links til spisesedler Sidste nyt om afvikling Div links hen ad vejen til hvad der er interessant 3

metoden Standard AAU model forelæsning som nu opgaver ofte pseudo + rigtig kodning ( BACI,C) Benytter sig af BACI og POSIX standard 1003.4c aka posix http://world.std.com/~jmhart/opensource.htm ftp://sources.redhat.com/pub/pthreads-win32/ og doc.powerdns.com/on-windows.html google en løsning op Dog mulighed/ønske om at dreje det over i projekter 4

metoden II Jeg vil prøve at have overbud af materiale især slides ude fra verden Målet er at man kan få den samme historie på lidt forskellige måder Dertil litteraturen Al litt er på web ingen bøger NYT links til en del dokumenter på hjemmesiden 5

Realtidssystemer - idag Definition af realtidssystemer En række eksempler herpå Parallellitet og multiprogrammering Proces- model og tilstande Købegreber inden i et operativsystem Skedulering (manipulation af køer) Dagens opgaver BACI 6

Definition af realtidsystemer At der er tidskrav på løsning af opgaver Samplede systemer: Reguleringssløjfe: samlingsfrekvens, max jitter,... Hændelsesstyrede systemer Max reaktionstid på eks positionsdetektering 7

Realtidsdefinition II Overskreden deadline = ubrugeligt/dårligt resultat Trafiklys, elevator, stinger,...! ABS, dvd/divx afspiller Mobiltelefon, GPS,... You name it! system Kontrol system Sætter krav Følger krav 8

Kontrol system Opgavens sætter krav til kontrollerende system Pris, pålidelighed,... sætter andre krav til... Det kontrollerende system kan være PIC 16F74 ingen kerne, m/u interrupt 8051 m/u kerne 68xxx m/u kerne ARM, powerpc,... m linux,windows,qnx,windriver,...... 9

Kontrol system Opgavens sætter krav til kontrollerende system Pris, pålidelighed,... sætter andre krav til... Det kontrollerende system kan være PIC 16F74 ingen kerne, m/u interrupt 8051 m/u kerne 68xxx m/u kerne ARM, powerpc,... m linux,windows,qnx,windriver,... System er egentlig uinteressant når det opfylder de ønskede krav... Hvem interesserer sig for inside i en Danfoss ventil??? 10

Nogle RT krav til kontrollerende system Hændelser min,max reaktionstid på hændelser(interrupt) Og set i sammenhæng med andre hændelser (prioritering) afvikling kan blive forsinket Eksterne hændelser bliver registreret ved: Interrupts Polling Periodiske timere/ure Relative timere Andre hændelses interrupts (sensorer) Man undgår interrupt latens :-) Under eksekvering af kode mistet verdensovervågning 11

Uden kerner Mange systemer behøver ikke multiprogrammering Man kan groft dele dem op i Rene polling systemer Systemer med et eller flere interrupts (fattigmandsmultiprogrammering Vil ofte være valg hvor Lav kompleksitet af opgave Lille størrelse af kode Evt krav om meget høj hastighed 12

No kernel please int endestop, motorcontrol, blinklys, controllerstate, resetfraoperator; void main(void) { controllerstate=endestop=motorcontrol=blinklys=controllerstate=0; while (1) { endestop = inport(yyy); resetfraoperator = inport(zz); } switch (controllerstate) { case 0: if (endestop) controllerstate = 1; else if (resetfraoperator) controllerstate=2; break; case 1:... break; } MEGET ENKEL EFFEKTIV HURTIGT GENNEMSKUELIG(?) KODE timing? 13

No kernel please Meget enkel arkitektur Enkel overskuelig kode Billig implementation (PIC,...) Kan eks genereres udfra PLC kode: http://www.opencontroller.org 14

PLCer Billigste mest high performance digital kodemaskiner. Cyklustider på 1 msec som max... bare en industriel PEEL ;-)... eller en PIC Traditionel PlC kode while (1) { laes alle inputs(); beregn all algoritmer(); udlaes alle beregnede outputs(); evt sleep until tid er(); } Man skal bemærke at I/O kun læses/skrives een gang pr runde... 15

En PLC Standard er ren digital I/O Analog I/O findes i større PLCer Indgår som PEEL-alike komponent i styringer af feks:... pris latterlig 16

... 17

Den interrupt drevne løsning Start af en hændelsessekvens trigges af interrupt Flere interruptindgange flere uafhængige hændelsessekvenser... i modsætning til før der jo var rå cyklisk power... Man har mulighed for umiddelbart at løse delmål der hver især har forskellig varighed IDLE mode (hovedprogram) når der ikke er interrupts under behandling 18

Interrupt system I Interrupts løser tidskritisk opgave Hovedprogram forbruger overskydende tid MMI (excl nødstop) Statistik Setpunkt kommunikation,... non realtime realtime tiden går... 19

Interrupt II... Sort højest, blå mellem, rød laveste prio interrupt Grå main loop ( non realtime) blå kan afbryde rød sort kan afbryde blå og rød prioriteret kaskade afvikling af interrupts virker!!! : vil gerne afvikle kode Intr: 3 2 2 1 3 1 1 2 3 20

Interrupt II Interrupthyppighed kan variere over tid Svært at prediktere adfærd -men kan begrænses Starvation er en mulighed... man bør kende interruptmønstre og varighed af associeret kode effektivt! I: 3 2 2 1 3 1 1 2 3 21

Interrupt koden void interrupt nr1(...) { do_critical_code(); access_shared_vars(); UNLOCK_INTR(); } do_your_code(); LOCK_INTR(); access_shared_vars(); UNLOCK_INTR(); Oplåsning af interrupt giver mulighed for interleaving af interrupt (kaskading) Worst case analyse af tidsafvikling er et must rigtige mænd tester ikke ISR de undres bare en gang imellem! 22

Parallellitet... For hver interrupt kend/mål/beregn varighed af kode Sæt en prioritet på opgaven Svært/umuligt at dele opgave op i en høj prio low latency ISR del en høj prio! low latency i process - der kom ordet... 23

Parallellitet... Fattigmandsmultiprogrammering er ok Nemt, effektivt Kodevarighedsbegrænsninger = min tid imellem ISR Antal tråde == antal interrupts Kun et lag i processer (ISR's + eet hovedprogram) Testing by interrupting Hvor mange tråde er der brug for? (min mepis har lige nu har 86 programmer kørende...) Så 86 er nok et overkill i mange situationer 10 interrupts er nåeligt på megen HW 24

SPT(slag på tasken) 1 linie C bliver til 10 asm instruktioner i snit 1 asm instr pr 4 klokcykler 1000 interrupt pr sek koster ca 30000 usec ekstra 970000 usec tilbage 20 Mhz = 50 nsec = 0.2usec/asm instruktion 5.000.000 asm/sec = 0.5 mio linier C/sec lidt men ikke meget overdrevet!???!!! 20 Mhz arkitektur Gå hjem og test det :-) 25

Parallellitet resume Selv små maskiner kan faktisk lave en hel del PCere er ofte et overkill Men er billige Er stabile...??? Alle kan finde ud af at bruge dem Med 500.000 linier C/sec er der nok mulighed for at bruge en del af dette til organisering af afvikling... læs find/køb/lav og brug kerne/parallelt operativsystem 26

TODO 2day Parallellitetsbegreb procesbegreb I det følgende tages udgangspunkt i en ISR model og der nås frem til en procesmodel 27

Procesbegreb I Interrupt model - stak håndtering Prolog: prg status gemmes (ofte på stak) Epilog. Prg status reetableres (ofte fra stak) ISR rutine < 5 usec < 5 usec Main Main fort 28

ISR void interrupt jens(evt register reference) { /* PROLOG push af registre paa stak ofte af compiler */ din_kode_under_diablet_run(); evt_enable_en_del_af_isr_system(); din_enablede_kode_del(); } /* EPILOG: modsat af prolog */ 29

ISR tilstand: Inaktiv Intet ISR lige nu 30

ISR tilstand: Inaktiv Intet ISR lige nu Running ISR som kører på CPU lige nu 31

ISR tilstand: Inaktiv Intet ISR lige nu Running ISR som kører på CPU lige nu Ready ISR som ikke er på CPU da andet højere prio ISR kører 32

ISR tilstand: Inaktiv Intet ISR lige nu Running ISR som kører på CPU lige nu Ready ISR som ikke er på CPU da andet højere prio ISR kører Running & ready ISR kører og der er registreret endnu af samme prio 33

ISR tilstand: Inaktiv Intet ISR lige nu Running ISR som kører på CPU lige nu Ready ISR som ikke er på CPU da andet højere prio ISR kører Running & ready ISR kører og der er registreret endnu af samme prio Ready & ready Som ovenstående blot er først vrs ikke kørende pga prio problem 34

Parallellitet man vel egentligt:... Kunne afvikle kode/funktionalitet/tasks/threads/... Have flere instanser uhængig af hinanden Mulighed for at prioriterer hvis der i situationer er resourcemangel: (CPU,RAM,...) Trigge task fra Eksterne hændelser (ISR) Interne hændelser (andre task's) Være så uafhængig af HW som muligt Ikke bundet af antal CPU'er... 35

procesbegreb Kode, data, stak Tilstande Running - jeg kører lige NU Ready - jeg vil gerne køre lige NU Blocked - jeg vil ikke køre lige nu Ligner meget ISR 36

Det forrige ligner ISR meget Inaktiv Intet ISR lige nu Running ISR som kører på CPU lige nu Ready ISR som ikke er på CPU da andet højere prio ISR kører Running & ready ISR kører og der er registreret endnu af samme prio Ready & ready Som ovenstående blot er først vrs ikke kørende pga prio problem 37

Proces tilstande Running fordi Ready CPU resource ej tilgængelig Blocked Task venter på hændelse Ekstern ( ISR, timer/ur ISR) Intern (synk fra anden task) Running Ready Blocked 38

En proces Running: i = 3; for (j=0; j<44; j++) skriv_brev_til_dronningen(); Ready står frossen i og venter på at få CPU Blocked: i = 3; for (j=0; j<44; j++) skriv_brev_til_dronningen(); sleep(1000); 39

Peudo parallellitet tasks tiden 40

tidsdeling Når der er færre CPUer end tasks Kaldes pseudoparallel afvikling, idet der rent teknisk set ikke er noget parallelt. Ægte parallel afvikling ses sjældent Kernens opgave er at sørge for en smidig afvikling under optimering af de parametre man har valgt Valg af parametre er ofte det svære Statisk prioritering min far er stærkest! Dynamisk hvemses far er stærkest lige nu? Andre applikationsorienterede Hvad er FAIRNESS i den sammenhæng 41

Kernens datastrukturer Procesbeskrivelsen Indeholder den information der beskriver et kørende program/tasks set fra OS synspunkt Interrupt håndtering har næsten det samme problem Prolog: gemmer nødv status for program/task/... Epilog: reetablerer derudfra 42

Procesbeskrivelse typedef struct procesbeskrivelse_tp { int cpuregs[nr_regs]; int prioritet; aabne_filer,devices,... } procesbeskrivelses_tp; 43

Kernen II Skeduler Algoritme der udpeger hvem der skal være running Aktiveres af Task selv HW (interrupt) inkl timer Cyklisk tildeling af CPU tid: round robbin 44

Køer Aktiv kø Tasks der er i running og ready tilstand Andre køer (sleep kø, semafor kø,...) Tasks der venter på at blive gjort running/ready af hændelse som kan være Ekstern hændelse (interrupt) Intern hændelse (anden tasks der synker ) Aktiv kø 1 2 3 4 5 9 45

procebeskrivelse Lister en måde at gøre det på Statiske arrays en anden måde... Osv Egentlig uinteressant pånær Det skal være effektivt at flytte imellem køer... typedef struct procesbeskrivelse_tp { int cpuregs[nr_regs]; int prioritet; struct procesbeskrivelse_tp *next, *pred; int prioritet; aabne_filer,devices,... } procesbeskrivelses_tp; 46

Round robbin forreste er running Tick 1 1 2 3 4 5 9 tiden går nedad 1 tick pr gang Tick 2 2 3 4 5 9 1 Tick 3 3 4 5 9 1 2 Tick 4 4 5 9 1 2 3 running Ready'er 47

Køer Aktivkø er en af mange køer Kendetegnet ved at processer er running/ready Andre køer er kendetegnet ved at man venter på en hændelse der vil flytte en i aktivkøen vente på input fra UART/... vente på en timer vente på... aktivk ø running timerkø 48

Status Argumenter for parallellitet Interrupt baserede systemer Procesbegreb running, ready(er), blocked Kø begreber aktivkø andre køer 49

BACI lidt kodning idag for at slappe af BACI valgt (kører på xp, linux,...) enkelt sprog multiprogrammering indbygget 50

Sprog kaldes C-- Et subset af C BACI C++ syntaks for output (cout << i) Mulighed for at starte funktioner op som parallelle processer cobegin { fct1(); fct2(),...} Ingen indflydelse på tidsdeling Læs manual Installer Kod noget kode 51

Basal baci: compiler, afvikling,... grafisk overbygning (jbaci) nemt smart OS uafhængig 52

baci example void incr(char id) { int i; incr er en funktion/task kode cobegin statement sætter 3 task i AQ for (i=1;i<=10;i=i+1;) { cout << id << count = << i; } cout } << id << count = << i; } main() }{ main() cobegin { { incr('a'); incr('b'); incr('c'), incr('d'); } cobegin De afvikler alle incr koden Vides ikke hvornår der er processkift ens prioritet tvungen tidsdeling round robbin ellers enkelt sprog } { incr('a'); incr('b'); incr('c'), incr('d'); } 53

er der mere??? /Jens 54