1 / 15

Realtidsprogrammering

Realtidsprogrammering. En introduktion - Principer och begrepp. Vad är ett realtidssystem?. Ett system som reagerar på yttre händelser och ger svar inom en bestämd tid. Observera händelse Utvärdera händelse Agera Korrekt beteende inkluderar både resultat och tid för presentation.

malaya
Download Presentation

Realtidsprogrammering

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Realtidsprogrammering En introduktion - Principer och begrepp Realtidsprog. - Anders Arvidsson

  2. Vad är ett realtidssystem? • Ett system som reagerar på yttre händelser och ger svar inom en bestämd tid. • Observera händelse • Utvärdera händelse • Agera • Korrekt beteende inkluderar både resultat och tid för presentation. • Krav på samplingsfrekvens • Krav på uppdateringsfrekvens (utdata) • Krav på svarstider Realtidsprog. - Anders Arvidsson

  3. Olika typer av realtidssystem (RTS) • Händelsestyrda vs Tidsdrivna • Mjuka vs Hårda • Mix: t ex GSM-telefon • Preemtive, non-preemtive Realtidsprog. - Anders Arvidsson

  4. Schemaläggning • Robot som ska följa slinga och visa position på en PC • Krocksensor • Hjulräknare • Analog slingdetektor • Radiomodem • Motordrivkort • Realtidssystem? • Hårt/Mjukt system? Realtidsprog. - Anders Arvidsson

  5. Schemaläggning • Task Periodtid Exekveringstid • K, Krocksensor 10 ms 50 μs • H, Läs hjulräknare 30 ms 1 ms • S, Styr (slingsens./motor) 20 ms 3 ms • B, Beräkna/skicka pos 100 ms 22 ms • Skriv ned tiderna ovan. • Välja preemtive eller non-preemptive? Vilka ska i så fall bryta? • Gör en schemaläggning. Realtidsprog. - Anders Arvidsson

  6. Risker med schemaläggningen • Hur väl dokumenterade är exekveringstiderna? Realtidsprog. - Anders Arvidsson

  7. long var_1, var_2; // 32 bit integer void Multiplikation(void) { produkt = var_1 * var_2; // Multiplicera variablerna } var_1 = 2; var_2 = 123456789; => 96 cykler var_1 = 123456789; var_2 = 2; => 816 cykler var_1 = 8192; var_2 = 8192; => 348 cykler var_1 = 8191; var_2 = 8191; => 483 cylker Worst case??? LaborationExekveringstid Realtidsprog. - Anders Arvidsson

  8. char var_1, var_2, produkt; // 8 bit unsigned integervoid Multiplikation(void){ produkt = var_1 * var_2; // Multiplicera variablerna} Kompilerad till assembler (*.as): ;g:\picfil\demo\demokod.c: 81: produkt = var_1 * var_2; line 81 movf (((_var_2))),w movwf btemp+1 ;var_2 till RAM movf (((_var_1))),w ;var_1 till Working reg global lbmul fcall lbmul ;Subrutin lbmul movwf (((_produkt))) ;Working reg till produkt LaborationExekveringstid, assemblerkod Realtidsprog. - Anders Arvidsson

  9. Förkortad bmul.as: lbmul SELTEMP movlw 0 ;initialize product loop btfsc plier,0 ;skip if multiplier lsb not set addwf btemp,w ;add multiplicand bcf STATUS,C ;clear carry rlf btemp ;shift multiplicand up bcf STATUS,C ;clear carry again rrf plier ;shift multiplier down tstfsz plier ;stor inverkan på tid, styr loop goto loop return psect temp,global,class=BANK0,space=1,ovrld btemp ds 1 plier ds 1 end LaborationExekveringstid, assemblerbibliotek Realtidsprog. - Anders Arvidsson

  10. LaborationKompilatorns inverkan Kompilering av laborationens program, long integer ( 517) words total Program ROM ( 39) bytes total Bank 0 RAM ( 8) bits total Bank 0 Bits Exekveringstid (Huvudprg): 1328 cykler Kompilering av samma program med optimering ( 438) words total Program ROM ( 39) bytes total Bank 0 RAM ( 8) bits total Bank 0 Bits Exekveringstid (Huvudprg): 1271 cykler ROM -15%, Exekveringstid –4,3% Realtidsprog. - Anders Arvidsson

  11. Risker med schemaläggningen • Vad händer om B tar 27 ms? • (Hårda krav gäller för H, positionen tappas om hjulräknaren slår runt). Realtidsprog. - Anders Arvidsson

  12. Schemaläggning • Task Periodtid Exekveringstid • K, Krocksensor 10 ms 50 μs • H, Läs hjulräknare 30 ms 1 ms • S, Styr (slingsens./motor) 20 ms 3 ms • B, Beräkna/skicka pos 100 ms 22 ms • Gör en ny schemaläggning där K, S och H bryter. Realtidsprog. - Anders Arvidsson

  13. Att tänka på • Hur sätta prioritet? • Snabbast? • Viktigast? • Risk för överlast? • T ex svält (ingen CPU-tid över till lågprioriterade tasks) • Hur förhindra inkonsistent data? • Interrupt använder halvfärdig data • Det tar flera asm-instruktioner att räkna upp en int (t ex var++;). Vad händer om ISR bryter och läser var? Realtidsprog. - Anders Arvidsson

  14. Att tänka på • Risk för baklås? • Se skydd mot inkonsistent data. • Vid ogenomtänkt skydd kan flera rutin låsa data i en cirkel som förhindrar någon kan bli klar. • Prioritetsinvertering? • Kan lågprioriterade rutiner låsa data så högprioriterade ändå måste låta dem köra klart först? • Se fler begrepp i kursbok och övrig litteratur. Realtidsprog. - Anders Arvidsson

  15. Realtidsoperativsystem (RTOS) • Aktiverar task (schemaläggning, avbrott) • Hanterar tid (periodicitet via timer) • Sköter kommunikation mellan task (brevlådor) • I/O-hantering (man skriver bara flyttbar kod) • Drivrutiner • Felhantering • Fler funktioner beroende på val av OS. Realtidsprog. - Anders Arvidsson

More Related