:stem: == J1 module 1 ____ Show code and explain for 1,4,5,6 (design and impl ISR, time based debouncing, tick routing, limitations) ____ TODO med arduino. Og debouncer. === Noter Findes forskellige slags realtime afhængig af hvor vigtigt det er at man laver sin opgave inden for deadline. * *Hard* er når en manglende deadline tæller som en system fejl. * *Firm* nogle deadlines på gerne misses, men disse resultater vil være ubrugelige. * *Soft* et resultat er ikke nær så meget værd hvis det er forsent, men kan stadig bruges. == H1 module 2 ____ Exercise 1-11 ____ See ../emb_m2/emb_m2.ino TODO med arduino === Noter *Q-format* er hver man dedikere nogle af bits til decimaler. Det er derfor ikke _floating_ point. *Floating points* er decimal tak med en floating point. Her har man kun et bestemt tal betydende cifre. TODO læs op på error calculus. Totalt uforståeligt i slides. Der findes forskellige måder at have negative tal på. * Signed Her bruger man MSB til at betyde sign. Når den er 1 er det et minutal. Problemet er at der nu er 2 nuller. * 1’s komplement Ligesom _signed_ men når det er negativt er alle bits flippet. Dette gør det meget lettere at lave matematik på det. Her er stadig det problem at der er 2 nuller. * 2’s komplement Ligesom _1.s komplement_ men negative har 1 lagt til. Dette betyder at der kun er 1 nul værdi. == H2 module 3 ____ Exercise 4-7 ____ TODO lav det her på arduino. === Noter To forskellige hoved protokoller. * ASCII Let at læse at læse for en person. Det er nemmere at seperere felter. Bare ikke særlig efficient. * Binary Inviklet af seperere felter, da data felter kan indeholder delimiters. Mere efficient. Findes fire forskellige structurelle elementer. * Sequence Flere elementer efter hinnanden. * Alternation Enten den ene eller anden type element. * Repetition Lister af det samme elemtn * Abstraction Structure og egne data typer. *Haming distance* er hvor mange bits er forskellige mellem to bit sekvenser. *Haming distance of protection code* hvor langt der er imellem to sekvenser der stadig er korrekte. Dette kan man kande for _HD_. * Hvis _HD_ er større end _n_ kan man detect _n_ bit errors. * Hvis _HD_ er større end _2n_ kan man fixe _n_ bit errors. Fletcher _HD_ er 2 så man kan detect en bit fejl. == J2 module 4 ____ Show LED13 blink code and explain program. ____ ____ Explain interrupt ____ ____ Lack of control maybe bq of non-interruptable ISRs ____ ____ Procesmodel: running,ready,blocked ____ ____ semaphore wait and signal ____ == J3 module 5 ____ What is a semaphore, show code from above and eplaing critical region setup ____ == J4 module 6 ____ Show code for and explain message queues as a buffering tool. ____ == J5 module 6.5 ____ Exercise 1 in part3 on page295 (Pdf is on moodle) ____ == H3 module 7 ____ Exercise 4-5 ____ Se ./M7opg.md TODO lav arduino opgaver. TODO lav måske lidt flere af opgaverne. === Noter *Scheduling* er når flere opgaver eller jobs skal time shares på en CPU. Et *Schedule* er plan for hvordan disse opgaver skal have tid. Et schedule er *feasable* hvis alle jobs kan køres imellem deres readytime og deadline. Der findes forskellige kategorier. * Fixed schedules Jobs kører på tidspunkter man har bestemt for forhånd. Og dette kører bare i loop. Dette er ret simpelt og effektivt men ikke særlig fleksibelt. + Her behøver man kun lave en plan hen til LCM eller Least Common Multiple af tasks periods. * Round robin Fixed tidsrum er delt ud mellem jobs periodisk. Simpelt og fleksiblet men ikke effekttivt. * Fixed priority Det er altid jobbet med højeste prioritet der kører. Dette er simpelt og fleksibelt, men kun middelt effektivt. * Dynamic priority Her bruger man andre regler til at bestemme hvem der kører. Dette giver de bedste resultater men er også mere komplekst. Utilization er _completion time_ dividere med _period_. Man kan definere CPU utilization som: stem:[U = \sum_{i=1}^N \frac{c_i}{T_i}] _Rate Monotonic Scheduling_ eller *RMA* er når man giver task med lav periode højere prioritet. _Deadline Monotonic_ eller *DMA* sortere efter laveste relative deadline. Dette giver det samme som RMA hvis relative deadlines er lig periode. Hvis deadline er før periode giver den optimale resultater. _Utilization critereon_ er en upper limit stem:[\overline{U}] for utilization hvor RMA er garanteret hvis deadlines er lig periode. stem:[\overline{U} = N \cdot (2^{\frac{1}{N}} - 1)] == H4 module 8 ____ Exercise 1-2 ____ == H5 module 9 ____ All exercises ____