EMS 20 Week 4 Lab 1 Leerdoelen Week
EMS 20 Week 4 Lab 1
Leerdoelen Week 4 Lab 1 EMBEDDED SYSTEMS Leerdoelen week 4 lab 1. Je leert: • • • wat een Operating System (OS) voor je kan doen; wat het verschil is tussen een General Purpose OS (GPOS) en een Real-Time OS (RTOS); waarom het handig is om taken concurrent uit te voeren; hoe je taken met behulp van TI-RTOS threads concurrent kan uitvoeren; hoe threads in TI-RTOS met elkaar kunnen communiceren met behulp van een mailbox. 2
Wat doet een OS? EMBEDDED SYSTEMS Wat is de belangrijkste functie van een OS (zoals Windows 10 / Linux / Android / i. OS)? • M. b. v. een OS kun je meerdere taken concurrent uitvoeren op één machine. • Concurrent is “gelijktijdig”. • Op een multicore machine echt gelijktijdig, op een single-core machine schijnbaar gelijktijdig. • Het OS verdeelt de beschikbare resources (bronnen) CPU, memory, I/O, enzovoort over de taken. Zie je boek: hoofdstuk 12 3
RTOS versus GPOS • OS beschermt taken (applicaties) t. o. v. elkaar. • OS is de baas (bepaalt prioriteiten van de taken). • Optimaliseert throughput. Geschikt voor pc en telefoon. EMBEDDED SYSTEMS RTOS • Taken werken samen. • Programmeur is de baas (bepaalt prioriteiten van de taken). • Responsetijden zijn voorspelbaar. Geschikt voor embedded system. 4
Voorbeeld embedded systeem thermocouple pressure transducer ADC Lijkt op Yourdon DFD! EMBEDDED SYSTEMS ADC T P S DAC Switch Screen heater pump/valve 5
Beschikbare functies EMBEDDED SYSTEMS double read. Temp(void); void write. Switch(bool i); double read. Pres(void); void write. DAC(double d); bool temp. Control(double temp); double pres. Control(double pres); 6
Oplossing zonder OS EMBEDDED SYSTEMS int main(void) { double temp, pres, dac; bool switch_; while (1) { temp = read. Temp(); switch_ = temp. Control(temp); write. Switch(switch_); pres = read. Pres(); dac = pres. Control(pres); write. DAC(dac); printf("%4. 1 lf, %d, %5. 1 lfn", temp, pres, switch_, dac); sleep(1); } return 0; } 7
Problemen van deze oplossing EMBEDDED SYSTEMS • Sample rate van temperatuur en druk is gelijk. • Kan wel wat aan worden gedaan met tellers maar: Wat doe je als pressure. Control langer duurt dan gewenste sample rate van temperatuur? • Als read. Temperature vastloopt (blijft pollen) dan loopt ook de drukregeling vast. De temperatuurregeling en de drukregeling zijn twee afzonderlijke “processen”. Maar in het sequentiële programma zitten ze verweven! 8
Concurrent oplossing met OS EMBEDDED SYSTEMS Definieer twee taken: void temp. Thread(void) { double temp; int switch_; while (1) { temp = read. Temp(); printf("temperature = %4. 1 lf, ", temp); switch_ = temp. Control(temp); printf("switch = %dn", switch_); write. Switch(switch_); sleep(3); } } 9
Concurrent oplossing met OS EMBEDDED SYSTEMS void pres. Thread(void) { double pres, dac; while (1) { pres = read. Pres(); printf("pressure = %4. 1 lf", pres); dac = pres. Control(pres); printf(", DAC = %5. 1 lfn", dac); write. DAC(dac); sleep(1); } } Vraag het OS om deze taken concurrent uit te voeren. (code is OS specifiek) 10
Probleem bij deze oplossing EMBEDDED SYSTEMS Beide taken schrijven op het scherm (m. b. v. printf). • Het OS wisselt de taken af. • De uitvoer van de verschillende taken kan door elkaar heen lopen. Oplossing? • Voeg een aparte scherm. Thread toe. 11
Communicatie tussen taken thermocouple EMBEDDED SYSTEMS pressure transducer ADC T P S DAC Switch heater Screen pump/valve 12
Communatie tussen taken EMBEDDED SYSTEMS Met behulp van een mailbox of message queue kun je informatie uitwisselen tussen taken. • Code is OS specifiek. 13
Aan de slag! EMBEDDED SYSTEMS Aan de slag met Opdrachten_Week_4_Lab_1. pdf 14
- Slides: 14