diff options
author | Julian T <julian@jtle.dk> | 2020-06-05 00:26:44 +0200 |
---|---|---|
committer | Julian T <julian@jtle.dk> | 2020-06-05 00:26:44 +0200 |
commit | fc90ff2c6e8ee40701761a1da153496500d34cb0 (patch) | |
tree | 22a0512099da1f2cec24e613146ae6c39db17229 /sem4/embedded/eksamnen/notes.md | |
parent | 4047b383dd35707fcb9141c62173b158f01f1c68 (diff) |
Added exam assignments for emb
Diffstat (limited to 'sem4/embedded/eksamnen/notes.md')
-rw-r--r-- | sem4/embedded/eksamnen/notes.md | 161 |
1 files changed, 161 insertions, 0 deletions
diff --git a/sem4/embedded/eksamnen/notes.md b/sem4/embedded/eksamnen/notes.md new file mode 100644 index 0000000..450740a --- /dev/null +++ b/sem4/embedded/eksamnen/notes.md @@ -0,0 +1,161 @@ + +## 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 |