Realtidsprogrammering



Relevanta dokument
Realtidsprogrammering. En introduktion Implementering (med exempel från PIC)

INGENJÖRSHÖGSKOLAN INGENJÖRSHÖGSKOLAN

Lathund. C för inbyggda system

#include <pic.h> #include <sys.h> char LEFT,RIGHT,MOTORHASTIGHET;

Lathund. C för inbyggda system

Övningsuppgifter i Mikrodatorteknik för U2

Systemkonstruktion LABORATION REALTIDSPROGRAMMERING

F5: Högnivåprogrammering

F5: Högnivåprogrammering

Övningsuppgifter STYRNING - i Mikrodatorteknik för U2 2010

Datorteknik 2 (AVR 2)

'HOWHQWDPHQ 6\VWHPNRQVWUXNWLRQ

Hantering av textsträngar och talsträngar. William Sandqvist

Laboration 4: Knappstuds Drivrutiner för att eliminera störningar.

LEU240 Mikrodatorsystem

Kursplanering för Mikrodatorteknik 4p/5p

Lathund. Pacific C för MS-DOS

Realtidssystem. - Schemaläggning - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 6

AVR 3 - datorteknik. Avbrott. Digitala system 15 hp. Förberedelser

Tentamen Enchipsdatorer med tillämpningar. Lösningar och kommentarer

Tentamen PC-teknik 5 p

Lista på registeruppsättningen i PIC16F877A Datablad TTL-kretsar 74-serien

Högskolan i Halmstad Digital- och Mikrodatorteknik 7.5p. Lista på registeruppsättningen i PIC16F877A Datablad TTL-kretsar 74-serien

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Lösningar till tentamen i EIT070 Datorteknik

F4. programmeringsteknik och Matlab

Att använda pekare i. C-kod

Tentamen. Datorteknik Y, TSEA28

EDA480/EDA485 - Maskinorienterad programmering, tentamen 2006-xx-xx 1(7)

Construction of a laboration card with the PIC-processor

Fö 5+6 TSEA81. Real-time kernel + Real-time OS

Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson

Programexempel för FLEX

Maskinorienterad programmering

I denna laboration undersöker vi hur aritmetiska beräkningar utförs. Vi tittar på olika variabeltyper: 8-bitars, 16-bitars, 32-bitars och flyttal.

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik

Översikt Introduktion DST 1. Nicholas Wickström. IDE, Högskolan i Halmstad. N. Wickström

Realtidssystem. - Schemaläggning - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 6

Programmering av inbyggda system. Kodningskonventioner. Viktor Kämpe

Realtidssystem Z EDA300 Tentamen 15/ , kl i V-huset

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

Kompletterande kompendium till kursen Realtidsprogrammering

Tentamen. Datorteknik Y, TSEA28

Ett program som frågar regelbundet om något skall utföras. Exempelvis om spänningen på ett batteri sjunkit under en viss nivå.

Exempelsamling Assemblerprogrammering

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT Lars Larsson Algoritmer 1

Tentamen i Realtidsprogrammering för Au3, D3, E3

Tentamen. Datorteknik Y, TSEA28

Programmering av inbyggda system 2014/2015

Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson

Värde och typ? Problem. Vad skrivs ut? Referenssematik (1) Joachim von Hacht. Förklara (i detalj)! int x; int y; x = y = 1; out.println(x + ":" + y);

Tentamen Datorteknik Y, TSEA28 Datum

Datorprojekt, del 1. Digitala system 15 p

Tentamen. Datorteknik Y, TSEA28

22/02/16. Arduino Introduktion till Arduino. Arduino. Microcontroller - Embedded systems. Historia Organisation - Ekosystem

Föreläsningsanteckningar till Konstruktionsmetoder

Datorarkitekturer med operativsystem ERIK LARSSON

Objektorienterad Programmering (TDDC77)

Introduktion C-programmering

Ansvarig lärare: Olof Andersson, Telefon (besöker skrivsalen)

Assemblerprogrammering för ARM del 2

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Omtentamen i Realtidsprogrammering för Au3, D3, E3

Realtidssystem HT03. Vad är realtidssystem? Inbyggda system. Att programmera, Tasks (Uppgifter) Realtidssystem kräver analys

Tentamen Lösningar EDA698 Realtidssystem

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Vår väg till Godkänt, och sedan vidare...

Övning 7. Timer, serieport

Tentamen. Datorteknik Y, TSEA28

Assemblerprogrammering - fördjupning

Anteckningar 1: Grundläggande saker

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Effektpedal för elgitarr

Tentamen Enchipsdatorer med tillämpningar. Lösningar och kommentarer

PC-teknik, 5 p LABORATION ASSEMBLERINTRODUKTION

Exam Concurrent and Real-Time Programming

TENTAMEN I REALTIDSPROCESSER OCH REGLERING TTIT62

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

F4: Assemblerprogrammering

Lösningar till tentamen i EIT070 Datorteknik

Datorsystemteknik D. Lösningar till tentamen i kursen EDA330 14/1 2000

GPT föreläsning 8. Förra veckan: Man kan ta tiden på en sorterad teckensträng Förra gången: Problemlösning på lägre nivå kan sortera funktioner

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Realtidsprogrammering Ordinarie tentamen

Lösningar till tentamen i EIT070 Datorteknik

Enchipsdatorer med tillämpningar LABORATION 7, ROBOT

Laboration nr2 med enchipsdatorn PIC-16F877

Ulf Assarsson. Grundläggande C-programmering del 2 Pekare och Arrayer. Läromoment:

Repetition C-programmering

Klassdeklaration. Metoddeklaration. Parameteröverföring

Programmering av NXT Lego- robot Labbrapport för programmering av en Lego- robot

CPU. Carry/Borrow IX. Programräknare

Enkla datatyper minne

Tentamen Enchipsdatorer med tillämpningar Lösningar och kommentarer

Stack och subrutiner Programmeringskonventionen

Laborationens mål är att få displayen att visa timmar, minuter och sekunder samt att kunna ställa klockan.

C++ Slumptalsfunktioner + switch-satsen

Tentamen. Datorteknik Y, TSEA28

Transkript:

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

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 2

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

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 4

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 5

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

Laboration Exekveringstid 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??? Realtidsprog. - Anders Arvidsson 7

Laboration Exekveringstid, assemblerkod char var_1, var_2, produkt; void Multiplikation(void){ produkt = var_1 * var_2; } // 8 bit unsigned integer // 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 Realtidsprog. - Anders Arvidsson 8

Laboration Exekveringstid, assemblerbibliotek 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 Realtidsprog. - Anders Arvidsson 9

Laboration Kompilatorns 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 10

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 11

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 12

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 13

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 14

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 15

Vad är ett realtidssystem? Realtidsprogrammering En introduktion - Principer och begrepp 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 1 Realtidsprog. - Anders Arvidsson 2 Olika typer av realtidssystem (RTS) Händelsestyrda vs Tidsdrivna Schemaläggning Mjuka vs Hårda Mix: t ex GSM-telefon Preemtive, non-preemtive 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 3 Realtidsprog. - Anders Arvidsson 4 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 Risker med schemaläggningen Hur väl dokumenterade är exekveringstiderna? Skriv ned tiderna ovan. Välja preemtive eller non-preemptive? Vilka ska i så fall bryta? Gör en schemaläggning. Realtidsprog. - Anders Arvidsson 5 Realtidsprog. - Anders Arvidsson 6 1

Laboration Exekveringstid long var_1, var_2; void Multiplikation(void) { produkt = var_1 * var_2; } // 32 bit integer 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 // Multiplicera variablerna Laboration Exekveringstid, assemblerkod char var_1, var_2, produkt; void Multiplikation(void){ produkt = var_1 * var_2; } // 8 bit unsigned integer // 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 Worst case??? Realtidsprog. - Anders Arvidsson 7 Realtidsprog. - Anders Arvidsson 8 Laboration Exekveringstid, assemblerbibliotek Laboration Kompilatorns inverkan 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 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 9 Realtidsprog. - Anders Arvidsson 10 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). 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 11 Realtidsprog. - Anders Arvidsson 12 2

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? 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 13 Realtidsprog. - Anders Arvidsson 14 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 15 3