Realtidsprog. - Anders Arvidsson1 Realtidsprogrammering En introduktion - Principer och begrepp.

Slides:



Advertisements
Liknande presentationer
Talföljder formler och summor
Advertisements

INTRODUKTION TILL PROGRAMMERING
Array Skriv ett program som frågar följande: ”Hur många tal vill du mata in?” användaren matat in ett tal t.ex n. då frågar programmet n ggr följande.
void hittaMax(int tal[], int antal, int *pmax) { int i; ??=tal[0]; for(i=1;i??) ??=tal[i]; } int main() { int v[]={1,2,3,4,2}; int.
Anders Sjögren Lagringsklasser •en variabel i C har två attribut –type( int, float, char..... ) –lagringsklass( auto, extern, register, static ) •lagringsklassens.
Programstruktur: C för enchipsdatorer
Introduktion till C för enchipsdatorer
Många studenter använder en LCD-display till sin programmeringsuppgift
Funktioner och programorganisation
Datatyper C# C/C++ Java VB Fortran Pascal bool boolean Boolean
#include void fun(char s[]) { int i=-1; while(s[++i]!=0) { if('a'
PC-teknik Repetition enligt önskemål som inkommit via mail. (täcker alltså inte alla moment i kursen)
©annax1 PC-teknik Minnen. 2 MINNEN Segmenterat minne 16 bits segmentregister + 32 bits offset = 64k*4Gbyte = 512Tb obs! Ofta används inte alla 16 bitarna.
Metoder i java Det finns två typer av metoder i java
23 August 2014 IS1200 Datorteknik vt09, föreläsning 10, (E och I mfl)1 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory.
Polymorfism.
Välkommen Vahid Mosavat
Att programmera i språket Java
Föreläsning 4 Python: Definiering av egna funktioner Parametrar
Föreläsning 2 Primitiva datatyper Variabler och konstanter Tilldelning Inläsning Operatorer Villkorssatsen if Slingor: while och for.
Realtidsprog. - Anders Arvidsson1 Realtidsprogrammering En introduktion – Implementering (med exempel från PIC)
Algoritm analys och rekursiva metoder kap 5,7
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 13: I/O-system.
i olika programmeringsspråk
Anders Sjögren Selektion i C ”vägval” if och switch - satserna.
PROCESSPROGRAMMERING
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Pekare och speciell programstruktur i inbyggda system
Ali Ghodsi Variabler En variabel är en sorts behållare som man kan placera data i Man måste ange typ och namn för alla variabler.
Pointers. int a=5; int f(int b) { a--; b++; return b; } int main() { int a=3; printf("%d,",f(a)); printf("%d",a); return 0; }
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: Trådprogrammering i Java - Avbrott (”interrupts”) - Metoden join() -
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 4 ( ) INNEHÅLL: -Logiska opertorer -Poster.
Modulär programutveckling
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
För utveckling av verksamhet, produkter och livskvalitet. -Algoritmer och Datastrukturer- -Algoritm analys och sökning algoritmer- Kap 5 -Algoritmer och.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
1 Föreläsning 5 Programmeringsteknik och Matlab 2D1312/2D1305 Repetition Metoder Array API och klassen ArrayList.
William Sandqvist Databuffer Omvandlar mellan olika storlekar på dataobjekt Anpassar mellan olika dataöverföringshastigheter Databuffer.
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
William Sandqvist Melodispelaren Denna demonstrationslaboration visar, steg för steg, hur man skriver ett kort program i programspråket.
Lågnivåprogrammering Översikt av I/O-mekanismer i hårdvara Olika språkkrav och modeller för komponent- hantering(device driving) Modeller för komponent-hantering.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 2 ( ) INNEHÅLL: -Variabler och datatyper -Tilldelning av variabler -Aritmetiska.
Problemlösningsmetodik
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Metoder.
31 March 2015IS1200 Datorteknik, förel 101 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory Access 3. Byte-code i JAVA.
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
Emulatorkonstruktion Schema Inledning Andra metoder Mina metoder Demonstration av min C64-emulator Sammanfattning och frågor.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Introduktion till programmeringsspråket Java -Den allmänna.
William Sandqvist Melodispelaren Denna demonstrationslaboration visar, steg för steg, hur man skriver ett kort program i programspråket.
Föreläsning 9 Arv kap 8.1 Interface kap 9.2 Grafiska användargränssnitt (GUI) kap 10.
Anders Sjögren Deklarationsområde och funktioner.
Föreläsning 17 Repetition. Källkodsformat Unicode används åäöμψζ tillåtna i namn på identifierare Inte alla miljöer klarar av det Källkod Bytekod Java.
Styrteknik 7.5 hp distans: PLC-delprogram, tasks TASKS:1
Övning2 programmeringsteknik och Matlab 2D1312/ 2D1305
F2 1 Programmeringsteknik, 4p vt-00 Kommentarer Allt mellan /* och */ Varje kommentar byts ut mot en blank av kompilatorn /* Exempel på uttryck, tilldelningsoperatorn.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Gruppövning 0.
William Sandqvist Funktionsbibliotek När man utvecklat en funktion så långt att den är "färdigutvecklad" kan man lika gärna spara den på.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och Datastrukturer -- Kap 21,14 Prioritets Köer (Priority Queues ), Graph.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: -Exekveringstrådar.
William Sandqvist PWM Sinusoidal Hur tillverkar man en sinusformad spänning? En PWM-signal kan ge en sinusapproximation. Efter filtrering.
Kronljusströmställaren 0, 1, 2, 3
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
OOP&M - teori1 OOP&M – Föreläsning 3 kap 2-4 Repetition Föreläsning-datayper-syntax-tilldelning.
Robotprogrammering med Arduino Robot
Anders Sjögren Programmering i ANSI-C Ett första program för att se vart vi ska...
Anders Sjögren Funktioner något in och något annat ut.
Föreläsning 8: Exempel och problemlösning
Iteration – Repetitionssats - while
Presentationens avskrift:

Realtidsprog. - Anders Arvidsson1 Realtidsprogrammering En introduktion - Principer och begrepp

Realtidsprog. - Anders Arvidsson2 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 Arvidsson3 Olika typer av realtidssystem (RTS) Händelsestyrda vs Tidsdrivna Mjuka vs Hårda Mix: t ex GSM-telefon Preemtive, non-preemtive

Realtidsprog. - Anders Arvidsson4 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 Arvidsson5 Schemaläggning TaskPeriodtidExekveringstid K, Krocksensor10 ms50 μs H, Läs hjulräknare30 ms1 ms S, Styr (slingsens./motor)20 ms3 ms B, Beräkna/skicka pos100 ms22 ms Skriv ned tiderna ovan. Välja preemtive eller non-preemptive? Vilka ska i så fall bryta? Gör en schemaläggning.

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

Realtidsprog. - Anders Arvidsson7 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 = ;=>96 cykler var_1 = ; 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 Arvidsson8 Laboration Exekveringstid, assemblerkod char var_1, var_2, produkt;// 8 bit unsigned integer void Multiplikation(void){ produkt = var_1 * var_2;// Multiplicera variablerna } Kompilerad till assembler (*.as): ;g:\picfil\demo\demokod.c: 81: produkt = var_1 * var_2; line81 movf(((_var_2))),w movwfbtemp+1;var_2 till RAM movf(((_var_1))),w;var_1 till Working reg globallbmul fcalllbmul;Subrutin lbmul movwf(((_produkt)));Working reg till produkt

Realtidsprog. - Anders Arvidsson9 Laboration Exekveringstid, assemblerbibliotek Förkortad bmul.as: lbmulSELTEMP movlw0;initialize product loopbtfscplier,0;skip if multiplier lsb not set addwfbtemp,w;add multiplicand bcfSTATUS,C;clear carry rlfbtemp;shift multiplicand up bcfSTATUS,C;clear carry again rrfplier;shift multiplier down tstfszplier;stor inverkan på tid, styr loop gotoloop return psect temp,global,class=BANK0,space=1,ovrld btempds1 plierds1 end

Realtidsprog. - Anders Arvidsson10 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 Arvidsson11 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 Arvidsson12 Schemaläggning TaskPeriodtidExekveringstid K, Krocksensor10 ms50 μs H, Läs hjulräknare30 ms1 ms S, Styr (slingsens./motor)20 ms3 ms B, Beräkna/skicka pos100 ms22 ms Gör en ny schemaläggning där K, S och H bryter.

Realtidsprog. - Anders Arvidsson13 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 Arvidsson14 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 Arvidsson15 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.