aboutsummaryrefslogtreecommitdiff
path: root/sem4/embedded
diff options
context:
space:
mode:
Diffstat (limited to 'sem4/embedded')
-rw-r--r--sem4/embedded/eksamnen/notes.adoc188
-rw-r--r--sem4/embedded/eksamnen/notes.md161
2 files changed, 188 insertions, 161 deletions
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