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



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

Processer og tråde. dopsys 1

Sider og segmenter. dopsys 1

Sider og segmenter. dopsys 1

CANSAT & ARDUINO step by step

System Arkitektur og Integration

Datamaters arkitektur og programmering

Programmering i C. Lektion december 2008

Implementation af Koordinering. dopsys 1

// Definition af porte og funktioner

Schedulering. dopsys 1

Schedulering. dopsys 1

Algorithms & Architectures II

Scheduling. Niels Olof Bouvin. Institut for Datalogi Aarhus Universitet

Koordinering. dopsys

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

Netværk & elektronik

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

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

Navn: Søren Guldbrand Pedersen Klasse: 2i Fag: up/ansi Opgave: Brev til Sigurd Lære: John Austin Side 1 af 8 Dato:

Programmering i C. Lektion november 2008

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

up/ansi Eksamensspørgsmål

Abstrakte datatyper C#-version

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

SeeTool - KNX løsninger til

Lageradministration. dopsys

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

Programmering i C. Lektion september 2009

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

DC-Motor Controller. Brugermanual

Rolf Fagerberg. Forår 2013

Rolf Fagerberg. Forår 2012

Ø3.2: Modellering af en PC

Bits DM534. Rolf Fagerberg, 2012

Arduino kursus lektion 3:

Fang Prikkerne. Introduktion. Scratch

Kerner med afbrydelser. Planen for i dag. Kerne med afbrydelser. Tætkoblede drivprogrammer. Uheldig rækkefølge. Synkronisering med ydre enheder

Brugervejledning for Senge- og dørvagt PIR2003

const int disponibel_10= 10; const int disponibel_11= 11; const int disponibel_12= 12; const int blinkled = 13; // pin 13 er LED på NANO

Manual til PRO DK180

BRUGERVEJLEDNING FLTA

Eksamens spørgsmål i Teknologi (Digital) 3. Semester (i)

Processer og koordinering. dopsys 1

Netværksalgoritmer 1

Rolf Fagerberg. Forår 2014

Armatec pneumatisk aktuator Kinetrol

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

BRP Kursusintroduktion og Java-oversigt

Videregående Programmering for Diplom-E Noter

Scope start stop Space bar kan også bruges. Start/Stop

Energizere bruges til at: Ryste folk sammen Få os til at grine Hæve energiniveauet Skærpe koncentrationen Få dialogen sat i gang

Eksempel: Skat i år 2000

Eksamensopgaver datalogi, dlc 2011 side 1/5. 1. Lodtrækningssystem

Rolf Fagerberg. Forår 2015

Programmering af trådløse modtagere (RF)

Design by Contract Bertrand Meyer Design and Programming by Contract. Oversigt. Prædikater

Prøveudtagning i forbindelse med bestemmelse af fugt i materialer

Optimeret Ruteforslag

Kravspecifikation For. Gruppen

Digital elektronisk termostat med afrimning styring. Brugermanual. Læs og arkiver Disse instruktioner

Brøk Laboratorium. Varenummer

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.

Input/Output: Disk & Clock. dopsys

I 2 C BUSSEN KØRER MED ARDUINO IND I FORÅRET

Installér din Officepakke 2013

Programmering i C. Lektion september 2009

Styresystemer og tjenester

Styresystemer og tjenester

Multiprogrammering og operativsystemer i Danmark

Internt interrupt - Arduino

1 Operativsystemer oversigt

Træning til klatring i klubben.

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

Input/Output: Brugergrænseflader. dopsys

Hvorfor & Hvordan lære Elever At programmere Arduinoer

Flashcard og TPR aktiviteter:

Draco vs. Harry. Interactive Multimedia E2010 DIAM. 15. december Vejledt af: Kevin Cook McLean, Hans Christian Asmussen & Søren Vibjerg

Social kapital som arbejdsmiljøværktøj

EUV- Hvordan gør vi?

Systemkald DM Obligatoriske opgave. Antal sider: 7 inkl. 2 bilag Afleveret: d. 18/ Afleveret af: Jacob Christiansen,

Modbus data modellen er opbygget af fire primære data typer. I nedenstående skema er en kort oversigt over disse.

Website sikkerhed SQL Injections og mere...

Jema Autolifte A/S, Industrihegnet 2, 4030 Tune, Denmark

Rolf Fagerberg. Forår 2015

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

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

RAM SPANDEN Ærteposer, spande og vand bliver til vanvittig sjove aktiviteter

Principper for Samtidighed og Styresystemer

Forfattere: Thomas Dreisig Thygesen & Grethe Grønkjær Layout: Jens Holm Møller

NETLON. KV2_2b beskrivelse. Dette dokument indeholder en beskrivelse af en KV2 klasseværelsesstyring fra Netlon.

Gasgrill - Model Midi Brugermanual

Programmering i C. Lektion september 2009

Planen for idag. Kontrol af ydre enheder. Systemarkitektur. Synkronisering ved aktiv venten. Multiprogrammering[1]: Ydre enheder og multiprogrammer

QUICKVEJLEDNING til 4-moduler. Montering

Programmering af CS7002 GSM/GPRS modul Version 5

IP0027. Brugervejledning ver Side 1 af 5. IP0027 Dansk brugervejledning - tillæg til brugervejledning på CD-rom på engelsk.

Digital tæller Programerbar for MIX magnetisk målebånd

DM14-1. Obligatorisk opgave F.06. System Call. Jacob Aae Mikkelsen Ingen andre gruppe medlemmer. 6. marts 2005

Transkript:

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

kursusindhold... Del 1: 5 mm Parallelitet, multiprogrammering, OS services Del 2: ca 2 mm Realtidskerner, konstruktion,... Del 3: ca 4 mm Modellering af omgivelser Skeduleringsteori Del 4: ca 2 mm Analyse- og designmetoder til RT systemer Del 5: ca 2 mm Test af indlejrede systemer 2

kursusindhold Del 1: 5 mm (JDN) Parallelitet, multiprogrammering, OS services Del 2: ca 2 mm (JDN) Realtidskerner, konstruktion,... Del 3: ca 4 mm Modellering af omgivelser Skeduleringsteori Del 4: ca 2 mm Analyse- og designmetoder til RT systemer Del 5: ca 2 mm Test af indlejrede systemer 3

Realtidssystemer 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 4

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 5

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

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,...... 7

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??? 8

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 9

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 10

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 11

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

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... 13

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:... 14

... 15

Den interrupt drevne Start af en hændelsessekvens trigges af interrupt Flere interruptindgange flere uafhængige hændelsessekvenser... i modsætning til før... Har man 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 16

Interrupt system I Interrupts løser tidskritisk opgave Hovedprogram forbruger overskydende tid MMI (excl nødstop) Statistik Setpunkt kommunikation,... 17

Interrupt II... I: 3 2 2 1 3 1 1 2 3 18

Interrupt II Interrupthyppighed kan variere over tid Svært at prediktere adfærd 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 19

Interrupt koden void interrupt nr1(...) { do_critical_code(); access_shared_vars(); UNLOCK_INTR(); do_your_code(); Oplåsning af interrupt giver mulighed for interleaving af interrupt (kaskading) Worst case analyse af tidsafvikling er et must } LOCK_INTR(); access_shared_vars(); UNLOCK_INTR(); 20

Parallellitet... For hver interrupt kend/mål/beregn varighed af kode Sæt en prioritet på opgaven Vent til skeduleringsdel af dette kursus (hint: RMA) 21

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 knoppix lige nu har 59 programmer kørende...) Så 59 er nok et overkill i mange situationer 10 interrupts er nåeligt på megen HW 22

SPT 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???!!! 20 Mhz arkitektur Gå hjem og test det :-) 23

Parallellitet resume Selv små maskiner kan 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 kerne/parallelt operativsystem 24

TODO 2day Parallellitetsbegreb procesbegreb 25

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 26

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 */ 27

ISR tilstand: Inaktiv Intet ISR lige nu 28

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

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 30

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 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 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 32

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... 33

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 Inaktiv Ligner meget ISR 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ø 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 34pga

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 35

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); 36

Peudo parallellitet tasks tiden 37

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 38

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 39

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

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 41

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 42

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; 43

Round robbin forreste er running Tick 1 1 2 3 4 5 9 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 44

Er der mere i parallellitet???? Prioritet Statisk, dynamisk Og nok en hel masse mere 45

void *crt_task (void (*code) (void), char *stk, unsigned int stk_size) { /** * by hw flags 22 11 * cs 20 10 * ip 18 9 * push ax 16 8 * push bx 15 7 * push cx 12 6 * push dx 10 5 * push es 8 4 * push ds 6 3 * push si 4 2 * push di 2 1 * push bp 0 0 * int offset * byte offset */ int *stkk; stkk = (int *) stk; stkk += (stk_size / 2) 1; /* now point at top */ stkk = 13; /* make space for the register } /* the only registers to be preset are... */ *(stkk + 11) = 0x0200; /* flags */ *(stkk + 10) = FP_SEG (code); /* cs */ *(stkk + 9) = FP_OFF (code); /* ip */ *(stkk + 3) = _DS; /* ds */ return stkk; 46

Resten kan findes som http://www.control.aau.dk/~jdn/kernels/kelm/k3.c 47