Slide 1Programmatuur voor real-time controleYolande Berbers RTPReal-Time Programmatuur laag-niveau programmeren uit hoofdstuk 15 van Alan Burns, Andy Wellings,

Slides:



Advertisements
Verwante presentaties
Hoe werkt een rekenmachine?
Advertisements

Embedded systemen Embedded software.
1/1/ / faculty of Electrical Engineering eindhoven university of technology 5JJ20:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 3(2): Instructietypen.
PROS2 Les 2 Programmeren en Software Engineering 2.
Programmeren met Alice
Par. 3.1 Computers zijn overal
Week 1: overzicht computersysteem-organisatie
1/1/ / faculty of Electrical Engineering eindhoven university of technology 5JJ20:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 4(2): Digitale.
Het werkgeheugen stored program concept (John von Neumann) Het achtergrondgeheugen Geheugen.
1/1/ /e/e eindhoven university of technology 5JJ20:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 2(1): Inleiding InstructieSetArchitectuur.
BESTURINGS SYSTEMEN Vincent Naessens.
Arduino project.
1 Device driver. 2 Hardware Operating Systeem Prog1Prog2 System calls/ API Device drivers Gebruiker afschermen van de hardware.
ADuC8xx MICROCONVERTER
Auteursomgeving voor Digitale Componenten
GESPRG Les 14 Gestructureerd programmeren in C. 174 Details! The devil is in the details.
Computerarchitectuur
F. Rubben NI Lookout 1 06/RIS/05 - NI Lookout VTI Brugge F. Rubben, ing.
C programma int main(){ } Compilatie met devc++ in file main.c Gecompileerd programma in file FirstProgram.exe Mov R1, 120 Mov R2, 160 ADD R1, R2.

Hoofdstuk 6: Controle structuren
1 SOCS Hoofdstuk 1 Programmeertaal C. 2 Kenmerken van C Hogere programmeertaal  Grote verzameling types, strenge type controle  Zelf nieuwe types definiëren.
VHDL Peter Slaets KHLim Functies en procedures Functies –type conversie functies »bit vector to integer en omgekeerd –verkorte componenten met maar 1 output.
1/1/ / faculty of Electrical Engineering eindhoven university of technology 5JJ20:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 1(2): overzicht.
1/1/ / faculty of Computer Science eindhoven university of technology 5B040:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 7(1): Flow of.
Geheugenbeheer ICT Infrastructuren hoofdstukken 7 en 8.1.
Neurale Netwerken Kunstmatige Intelligentie Rijksuniversiteit Groningen April 2005.
1Ben Bruidegom Hoe werkt een rekenmachine? Ben Bruidegom AMSTEL Instituut Universiteit van Amsterdam.
Verdieping Programmeren in Java - deel 1 college 6 mei 2001.
1 Voorwaarden hergebruik Modulair ontwerp Low coupling High cohesion.
Frank Stalpers en Ad Baars
Werken aan Intergenerationele Samenwerking en Expertise.
Hoe werkt een rekenmachine?
1Ben Bruidegom 1 De Harvard Machine Van rekenmachine met “loopjes” naar processor.
1 ICT Infrastructuren 19 november 2007 David N. Jansen.
Power PC Assembler. Assembler toolkit bevat Assembler zelf Linkerlibrarian.
Event Handling in Embedded Systems.  Wat is een event?  Welke events zijn het meest “time-critical”?  Welke toestand wordt door de CPU opgeslagen?
Operating Systems Informatica.
1/1/ eindhoven university of technology / faculty of Computer Science 2IC20:Computersystemen Week 4: Inleiding InstructieSetArchitectuur (ISA) datatypen.
1/1/ eindhoven university of technology / faculty of Computer Science 2IC20:Computersystemen Week 3: Instructietypen (2)
1/1/ eindhoven university of technology / faculty of Computer Science 2IC20:Computersystemen Week 4: Digitale logica niveau: “systeem-architectuur” cpu-chips.
Visual Basic.NET voor studenten De VB- ontwikkelomgeving Hoofdstuk 2.
Slide 1Programmatuur voor real-time controleYolande Berbers RTPReal-Time Programmatuur hoofdstuk 10: atomaire acties, gelijktijdige processen en betrouwbaarheid.
Slide 1Programmatuur voor real-time controleYolande Berbers RTPReal-Time Programmatuur hoofdstuk 6: uitzonderingen en de behandeling van uitzonderingen.
Slide 1Programmatuur voor real-time controleYolande Berbers RTPReal-Time Programmatuur hoofdstuk 11: controle van de hulpmiddelen.
HOGESCHOOL ROTTERDAM / CMI Computersystemen 2 (TIRCCMS02 - Operating systems)
Slide 1Programmatuur voor real-time controleYolande Berbers RTPReal-Time Programmatuur hoofdstuk 4: het beheersen van complexiteit: programming in the.
Context switching Chanel Mepschen Informatica 5Fvwo.
Context switching Heidi Snoek. Het proces Twee applicaties: A en B CPU voert de instructies van programma A uit. Op een bepaald moment wordt er data weggeschreven.
Slide 1Programmatuur voor real-time controleYolande Berbers RTPReal-Time Programmatuur hoofdstuk 12: mogelijkheden om met tijd om te gaan.
HOGESCHOOL ROTTERDAM / CMI Computersystemen 2 (TIRCCMS02 - Operating systems)
RTP slide 1Programmatuur voor real-time controleYolande Berbers oefenzittingen n enkel voor de studenten die dit vak als keuzevak kiezen n nu donderdag,
Basisfuncties Operating System.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 1 Les 6 - onderwerpen Uitleg.
Tircms02-p les 2 Meer operatoren Arrays en pointers Types en conversie.
Slide 1Programmatuur voor real-time controleYolande Berbers RTPReal-Time Programmatuur hoofdstuk 7: concurrent programming.
Les 1: Zaterdag 10 mei 2014 Wim Peeters
HOGESCHOOL ROTTERDAM / CMI Computersystemen 2 (TIRCCMS02 - Operating systems)
1 XSLT processing & control Datamodellering 2006.
Slide 1Programmatuur voor real-time controleYolande Berbers RTPReal-Time Programmatuur hoofdstuk 8: synchronisatie en communicatie met gedeelde variabelen.
Encapsulatie: Every man is an island upon himself.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  de track structuur van een MIDI file interpreteren.
Studie en implementatie van input replay Cornelis Frank.
Programmeren.
Digitale Methoden Onderdeel van vak Computer Systemen
3 Hardware 3.1 De processor en intern geheugen
Besturingssystemen Ga verder met een muisklik..
Wat gaan we doen? Herhaling ARM assembler instructies
SQL Les February 2019.
Besturingssysteem.
Transcript van de presentatie:

slide 1Programmatuur voor real-time controleYolande Berbers RTPReal-Time Programmatuur laag-niveau programmeren uit hoofdstuk 15 van Alan Burns, Andy Wellings, "Real-time systems and programming languages", 1997, Addison Wesley

RTP slide 2Programmatuur voor real-time controleYolande Berbers overzicht n mechanismen voor hardware input/output n taal-ondersteuning u algemeen u Ada u C n schrijven van device drivers (vb in Ada) (device driver: deel van besturingssysteem of van toepassing dat een bepaald randapparaat aanstuurt)

RTP slide 3Programmatuur voor real-time controleYolande Berbers mechanismen voor hardware input/output n 2 klassen computerarchitecturen tov randapparaten u bus voor geheugen, andere bus voor randapparaten u één bus voor alles CPU MEM dev MEM data adressen

RTP slide 4Programmatuur voor real-time controleYolande Berbers mechanismen voor hardware input/output (vervolg) n ook twee soorten methoden voor toegang tot randapparaten u twee sets van instructies, één voor elke bus l toegang tot devices via speciale hardware instructies l vaak spreekt men over poorten l vb: Intel 8086 u memory mapped I/O l de randapparaten bestrijken een deel van de adresruimten l schrijven - lezen van een randapparaat gaat zoals schrijven - lezen van het geheugen (zelfde instructies) l vb: M68000 familie, meeste moderne architecturen

RTP slide 5Programmatuur voor real-time controleYolande Berbers mechanismen voor hardware input/output (vervolg) n communicatie met randapparaten u via interface van besturingssysteem (system calls) l meestal via bibliotheekroutines l vaak behandelt de interface alle I/O als karakterstroom l device driver is deel van besturingssysteem dat de interactie verzorgt met een bepaald randapparaat u direct vanuit de toepassing l in hogere programmeertalen die mogelijkheden aanbieden voor I/O programmatie l in hogere programmeertaal waar men dicht bij de machine kan schrijven, of waar men assembler kan in schrijven (bv C) l besturingssysteem moet toelaten (meestal beschermd)

RTP slide 6Programmatuur voor real-time controleYolande Berbers mechanismen voor hardware input/output (vervolg) n interactie met randapparaat u device driver -> randapparaat l opdrachten l gegevens (bij schrijven) u randapparaat -> device driver l gegevens (bij lezen) l informatie over wanneer opdracht beëindigd is (einde- informatie) l informatie over hoe de opdracht beëindigd is (status- informatie)

RTP slide 7Programmatuur voor real-time controleYolande Berbers mechanismen voor hardware input/output (vervolg) n interactie met randapparaten: schematisch processen besturingssysteem device driver device status instructies data interrupts

RTP slide 8Programmatuur voor real-time controleYolande Berbers mechanismen voor hardware input/output (vervolg) n interactie met randapparaten: gegevens u via gegevens-register van randapparaat of controler u rechtstreeks in het geheugen via DMA (Direct Memory Access) l CPU geeft beginadres en grootte van buffer door aan randapparaat l randapparaat kan rechtstreeks lezen en schrijven in geheugen l randapparaat moet rechtstreeks aan het geheugen kunnen l gebeurt door cycle stealing l maakt het probleem van voorspellen van duur van programma veel moeilijker n status-informatie (randapparaat -> device driver) u via status-register van randapparaat of controler

RTP slide 9Programmatuur voor real-time controleYolande Berbers mechanismen voor hardware input/output (vervolg) n schematisch met DMA besturingssysteem controller status instructies interrupts MEM DMA device driver dev processen

RTP slide 10Programmatuur voor real-time controleYolande Berbers mechanismen voor hardware input/output (vervolg) n interactie met randapparaten: opdrachten u via opdracht-register van randapparaat of controler u via kanaalprogramma (channel program) l het randapparaat is intelligent en heeft een processor die kanaalprogramma’s kan uitvoeren l de CPU schrijft zo een programma in het geheugen l randapparaat krijgt beginadres van randapparaat en leest het programma rechtstreeks uit het geheugen s randapparaat moet rechtstreeks aan het geheugen kunnen s dit gebruikt ook altijd DMA s komt veel voor bij main frames, zelden in real-time systemen

RTP slide 11Programmatuur voor real-time controleYolande Berbers mechanismen voor hardware input/output (vervolg) n schematisch met kanaalprogramma besturingssysteem kanaal status start-info interrupts MEM DMA device driver prog. controller processen

RTP slide 12Programmatuur voor real-time controleYolande Berbers mechanismen voor hardware input/output (vervolg) n einde-informatie (randapparaat -> device driver) u polling of status-gestuurd l herhaaldelijk inspectie van status-register l meestal in een vorm van busy-waiting u interrupt-gestuurd l randapparaat stuurt interrupt als klaar met uitvoeren van opdracht l tijdens wachten op interrupt kan computer andere taak uitvoeren l mechanisme: zie volgende slide

RTP slide 13Programmatuur voor real-time controleYolande Berbers mechanismen voor hardware input/output (vervolg) n interrupt-mechanisme: bij optreden van interrupt: contextswitch u running taak wordt onderbroken en toestand wordt bewaard om later herstart te kunnen worden (dit gebeurt door de hardware) s minimaal:programmateller en statuswoord s maximaal:ook alle registers s tussenin: ook een aantal registers u routine geassocieerd met randapparaat dat interrupt genereerde wordt opgeroepen (dit gebeurt door de hardware) u interrupt routine voert uit (dit is software) s indien niet voldoende registers bewaard: bewaart nog registers s deze routine voert uit s herstelt wat eventueel in begin van routine werd bewaard s voert een ‘return from interrupt’ uit u de bewaarde context wordt hersteld en de onderbroken taak kan verder uitvoeren (dit gebeurt door de hardware)

RTP slide 14Programmatuur voor real-time controleYolande Berbers mechanismen voor hardware input/output (vervolg) n identificatie randapparaat dat interrupt veroorzaakte u interrupt vector l vector met adressen van interrupt routines l elke element van de vector is geassocieerd met een randapparaat u status-info l via hardware wordt een algemene interrupt-routine opgeroepen l deze ziet in status-info welk randapp. de interrupt veroorzaakte l de gepaste routine wordt opgeroepen u polling l analoog aan status-info maar algemene routine moet alle randapparaten afgaan om te zien wie een interrupt veroorzaakte n identificatie (reden) van interrupt l testen op status van randapparaat

RTP slide 15Programmatuur voor real-time controleYolande Berbers mechanismen voor hardware input/output (vervolg) n interrupt-controle u interrupts kunnen aan en af gezet worden l soms via bit in interrupt-toestandstabel of device-status-woord l soms via mask waarbij elke bit een randapparaat voorstelt en 0 of 1 kan bevatten u verschillende niveaus van interrupts en prioriteiten l elke klasse van randapparaten krijgt een niveau toegewezen l processor heeft ook een niveau (veranderlijk) l op elke moment mogen alleen de randapparaten met een hoger niveau als de processor een interrupt veroorzaken, de andere interrupts worden tegengehouden l zo kan men prioriteiten geven aan randapparaten

RTP slide 16Programmatuur voor real-time controleYolande Berbers mechanismen voor hardware input/output (vervolg) n twee modellen voor device drivers u één-niveau device driver l meest eenvoudige device driver, komt vaak voor in RT-systemen l behandelt aanvraag per aanvraag s aanvaardt nooit een opdracht voordat de vorige behandeld is l een proces keert pas terug nadat zijn aanvraag behandeld werd processen besturingssysteem device driver device status instructies data interrupts

RTP slide 17Programmatuur voor real-time controleYolande Berbers mechanismen voor hardware input/output (vervolg) n twee modellen voor device drivers (vervolg) u twee-niveau device driver (zie ook volgende slide) l bovenste niveau: aanvaardt de aanvragen s dit niveau wordt aangeroepen door processen met aanvragen 4 randapparaat vrij: aanvraag wordt direct doorgegeven 4 randapparaat bezet: aanvraag wordt in wachtlijst geplaatst l onderste niveau: behandelt afwerking van aanvragen s schiet in actie na het behandelen van een aanvraag s wordt aangeroepen door interrupt: werkt interrupt-gestuurd s moet eventueel proces verwittigen dat aanvraag behandeld is 4 wachtlijst niet ledig: haalt aanvraag uit lijst en behandelt die 4 wachtlijst ledig: doet niets

RTP slide 18Programmatuur voor real-time controleYolande Berbers mechanismen voor hardware input/output (vervolg) u twee-niveau device driver processen besturingssysteem onderste niveau driver device status instructies data interrupts bovenste niveau driver wachtlijst voegtoeherorden neem uit scheduler wordt wakker slaap

RTP slide 19Programmatuur voor real-time controleYolande Berbers eisen voor taalondersteuning n traditioneel gebruik van assembler n taal zoals C biedt ook veel laag-niveau mogelijkheden n talen zoals Modula-1, Ada bieden hoger-niveau ondersteuning

RTP slide 20Programmatuur voor real-time controleYolande Berbers eisen voor taalondersteuning (vervolg) n ondersteuning u modulariteit en encapsulatie l om de machine afhankelijke software te scheiden van machine-onafhankelijke software u toegang tot registers vanuit hogere programmeertaal l specificeren van specifieke fysische adressen voor variabelen (normaal kiest de compiler een plaats in adresruimte van proces) l bit-manipulaties leesbaar kunnen doorvoeren u abstract model voor het werken met een randapparaat l randapparaat wordt gemodelleerd als aparte processor l voorstelling van interrupts: zie volgende slide

RTP slide 21Programmatuur voor real-time controleYolande Berbers eisen voor taalondersteuning (vervolg) n voorstelling van interrupts in hogere programmeertalen u procedureoproep l werd eigenlijk uitgelegd bij interrupt-mechanisme l gebruikt in C en C++ gebaseerde systemen u sporadisch proces l interrupt is een aanvraag om een sporadisch proces op te starten u asynchroon event l interrupt is een asynchroon event gestuurd naar een handler u synchronisatie zoals van gedeelde gegevens l interrupt komt overeen met een signal bij monitor, met V bij semafoor, met een oproep van protected object l gebruikt in Modula-1, Ada u boodschap: interrupt is als een lege boodschap

RTP slide 22Programmatuur voor real-time controleYolande Berbers schrijven van een driver in Ada n Ada voorziet attributen als ondersteuning voor toegang tot registers u size: specificeert het aantal bits voor een variabele u alignment: specificeert dat variabele moet geplaatst worden op bepaalde grenzen (bv woord) u bit-ordering: specificeert big-endian of little-endian u address: specificeert op welk adres de variabele moet n voorstelling van interrupt u protected object om registers (dit zijn gedeelde var.) te beschermen u een parameter-loze procedure van het protected object wordt geassocieerd met de interrupt: deze procedure is de interrupt-routine

RTP slide 23Programmatuur voor real-time controleYolande Berbers schrijven van een driver in Ada (vervolg) n toepassing: driver die van een A/D convertor leest u deze driver wordt gerealiseerd in een package Adc_Device_Driver u gebruiker kan enkel de procedure Read oproepen u intern gebruikt de driver een protected object Interrupt_Interface u aan de interrupt van het randapparaat wordt de procedure Handler van het protected object geassocieerd u het protected object heeft verder twee entries l entry Read: – wordt opgeroepen vanuit de procedure Read – een guard houdt volgende oproepen tegen – het randapparaat krijgt de opdracht – de aanvraag wordt geplaatst achter de entry Done l entry Done: – procedure Handler opent de guard van deze entry – entry test op goede afloop – entry opent de guard van Read

RTP slide 24Programmatuur voor real-time controleYolande Berbers schrijven van een driver in Ada (vervolg) n randapparaat heeft twee registers u data register van 16 bit dat de gegevens bevat u controle register (combinatie voor status en instructies) waarvan de bits de volgende betekenis hebben BitNaamBetekenis 0A/D StartSet to 1 to start a conversion. 6Interrupt Enable/Disable Set to 1 to enable interrupts. 7DoneSet to 1 when conversion is complete. 8-13ChannelThe converter has 64 analog inputs; the one required is indicated by bits ErrorSet to 1 by converter if device malfunctions

package Adc_Device_Driver is Max_Measure : constant := (2**16)-1; type Channel is range 0..63; subtype Measurement is Integer range 0..Max_Measure; procedure Read(Ch: Channel; M : out Measurement); Conversion_Error : exception; private for Channel'Size use 6; -- indicates that six bits only must be used end Adc_Device_Driver; with Ada.Interrupts.Names; use Ada.Interrupts.Names; with System; use System; with System.Storage_Elements; use System.Storage_Elements;

package body Adc_Device_Driver is Bits_In_word : constant := 16; -- bits in word word : constant := 2; -- bytes in word type Flag in (Down, Set); type Control_Register is record Ad_Start:Flag;Ienable:Flag; Done:Flag;Ch:Channel; Error:Flag; end record; for Control_Register use -- specifies the layout of the control register record Ad_Startat 0*Word range0..0;-- at word 0 bit 0 Ienableat 0*Word range6..6; Doneat 0*Word range7..7; Chat 0*Word range8..13; Errorat 0*Word range15..15; endrecord; for Control_Register'Size use Bits_In_Word; -- the register is 16 bits long for Control_Register'Alignment use Word; -- on a word boundary for Control_Register'Bit_order use Low_Order_First;

type Data_Register is range 0.. Max_Measure; for Data_Register'Size use Bits_In_Word; -- the register is 16 bits long Contr_Reg_Addr: constant Address := To_Address (8#150002#) Data_Reg_Addr: constant Address := To_Address (8#150000#) Adc_Priority: constant Interrupt_Priority := 63; Control_Reg: aliased Control_Register; -- aliased indicates that pointers are used to access it for Control_Reg'Address use Contr_Reg_Addr; -- specifies the address of the control register Data_Reg : aliased Data_Register; for Data_Reg'Address use Data_Reg_Addr; -- specifies the address of the data register

protected type Interrupt_Interface(Int_Id : Interrupt_Id; Cr : access Control_Register; Dr : access Data_Register) is entry Read(Chan : Channel; M : out Measurement); private entry Done(Chan : Channel; M : out Measurement); procedure Handler; pragma Attach_Handler (Handler, Int_Id) pragma Interrupt_Priority(Adc_Priority) Interrupt_Occurred : Boolean := False; Next_Request : Boolean := True; end Interrupt_Interface; Adc_Interface : Interrupt_Interface(Names.Adc, Control_Reg'Access, Data_Reg'Access); -- this assumes that 'Adc' is registered as an Interrupt_Id -- in Ada.Interrupts.Names -- 'Access gives the address of the object

protected body Interrupt_Interface is entry Read(Chan : Channel; M out Measurement) when Next_Request is Shadow_Register: Control_Register; begin Shadow_Register := (Ad_Start => Set, Ienable => Set, Done => Down, Ch => Chan, Error => Down); -- opdat alle velden in één keer in het register geschreven: -- velden worden eerst in een copie geschreven Cr.all := Shadow_Register;-- het geven van de opdracht Interrupt_Occurred := False; Next_Request := False; requeue Done; end Read; procedure Handler is begin Interrupt_Occurred := True; end Handler;

entry Done(ChanChannel; M : out Measurement) when Interrupt_Occurred is begin Next_Request := True; if Cr.Done = Set and Cr.Error = Down then M := Measurement(Dr.all); else raise Conversion_Error; end if; end Done; end Interrupt_Interface;

procedure Read(Ch : Channel; M out Measurement) is begin for I in 1..3 loop begin Adc_Interface.Read(Ch,M); return; exception when Conversion_Error => null; end; end loop; raise Conversion_Error; end Read;

RTP slide 32Programmatuur voor real-time controleYolande Berbers een voorbeeld-driver in C n analoge operaties op registers als in het vb met Ada n dit is de enige compiler-onafhankelijke manier #define START 01 /* numbers beginning with 0 are in hexadecimal */ #define ENABLE 040 #define ERROR unsigned short int *register, shadow, channel; register = 0AA12;/* register address */ channel = …; shadow = 0; shadow = (channel << 8) | START | ENABLE; *register = shadow;