From d8578fd12f65e7335490129c7712af52cbf61c7e Mon Sep 17 00:00:00 2001 From: Julian T Date: Fri, 5 Jun 2020 11:55:01 +0200 Subject: Moved to asciidoc to get easier rendering --- sem4/embedded/eksamnen/notes.adoc | 188 ++++++++++++++++++++++++++++++++++++++ sem4/embedded/eksamnen/notes.md | 161 -------------------------------- 2 files changed, 188 insertions(+), 161 deletions(-) create mode 100644 sem4/embedded/eksamnen/notes.adoc delete mode 100644 sem4/embedded/eksamnen/notes.md (limited to 'sem4') diff --git a/sem4/embedded/eksamnen/notes.adoc b/sem4/embedded/eksamnen/notes.adoc new file mode 100644 index 0000000..8079c15 --- /dev/null +++ b/sem4/embedded/eksamnen/notes.adoc @@ -0,0 +1,188 @@ +: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 +____ diff --git a/sem4/embedded/eksamnen/notes.md b/sem4/embedded/eksamnen/notes.md deleted file mode 100644 index 450740a..0000000 --- a/sem4/embedded/eksamnen/notes.md +++ /dev/null @@ -1,161 +0,0 @@ - -## 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 - -### 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: - -$$ -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. - -## H4 module 8 - -> Exercise 1-2 - -## H5 module 9 - -> All exercises -- cgit v1.2.3