Inhoud vandaag. Interrupts. Algemeen ARM7 AIC



Vergelijkbare documenten
Wat is een busverbinding?

Microcontrollers Week 5 Interrupts, Timer/Counter 0 Jesse op den Brouw INLMIC/

Microcontrollers. Week 5 Introductie microcontroller Jesse op den Brouw (met dank aan Ben Kuiper) INLMIC/

De Arduino-microcontroller in de motorvoertuigentechniek (4)

ES1 Project 1: Microcontrollers

Hoofdstuk 3: Processen: Beschrijving en Besturing. Wat is een proces? Waarom processen? Wat moet het OS ervoor doen? Is het OS zelf een proces?

Hoofdstuk 7. Computerarchitectuur

Tim Mallezie Architectuur van besturingssystemen: Vraag A4.

Interfacetechnieken Interne Interfaces (Met de Atmel AT91SAM7SExxx microcontroller)

Deel 2 S7 Graph Ont4 - GA3

32-BITS I/O-CARTRIDGE voor MSX-computers

TECHNISCHE UNIVERSITEIT EINDHOVEN ComputerSystemen Deeltentamen B (weken 6..9) vakcode 2M208 woensdag 19 Maart 2003, 9:00-10:30

Voorblad tentamen ENG

TECHNISCHE UNIVERSITEIT EINDHOVEN FACULTEIT DER TECHNISCHE NATUURKUNDE

De seriële poort Jan Genoe KHLIM

Het koppelen van een FC51, via Modbus RTU, aan een AC500-eco.

versie: 1.0 status: vrijgegeven door: J.Eberson datum: 15 augustus 2005 aangepast: 19 februari 2006 concept beschrijving

Opgave Tussentijdse Oefeningen Jaarproject I Reeks 4: Lcd Interface & Files

Testprogramma voor EPROMprogrammer

De AT90CAN microprocessor van ATMEL in de motorvoertuigentechniek (8)

De AT90CAN microprocessor van ATMEL in de motorvoertuigentechniek (2)

De Arduino-microcontroller in de motorvoertuigentechniek (2)

Interfacetechnieken Studiehandleiding

18 Embedded systemen 1

Bedieningspaneel. Drukknoppen en Ds

ELVA Security

Tentamen 17 augustus 2000 Opgaven Computerarchitectuur

2 Algemene opbouw van een computersysteem

Oefeningen Interpretatie I Reeks 6 : Registermachines

Software beschrijving Epoluthon 2.0

Handleiding. Voor het programmeren/configureren van de. CBD4-5-6 controlebox

Tim Mallezie Architectuur van besturingssystemen: Vraag A2.

Deel 8: stappenmotoren en interrupts

Handleiding ISaGRAF. Wil men het programma bewaren, dan is het verstandig een back-up te maken: C9 Back-up / Restore

Sequentiële Logica. Processoren 24 november 2014

Toets In2305-ii Embedded Programming Dinsdag 28 November 2006, 15:45-16:30

Het koppelen van de Wago aan de AC500-eco via Modbus RTU. A quick start guide. Jaap Ruiten

Betaalbaar Home Control. Presentatie op bijeenkomst van EmSE: Embedded Systems Eindhoven

De AT90CAN microprocessor van ATMEL in de motorvoertuigentechniek (4)

Hoofdstuk 19. Embedded systemen

Het Versacom systeem is gedefinieerd in DIN 43861, deel 301 als "transfer protocol A".

EE1410: Digitale Systemen BSc. EE, 1e jaar, , vragencollege 2

ICT Infrastructuren: Processen en Threads. 18 november 2013 David N. Jansen

VERKORTE GEBRUIKSAANWIJZING TMC 212. Toro Modulaire Controller REGENAUTOMAAT

Het koppelen van de u-remote aan de AC500-eco via Modbus TCP. A quick start guide. Jaap Ruiten

MotorControl gebruiksaanwijzing V3 vanaf softwareversie 2.0e

ES1 Project 1: Microcontrollers

informatica. hardware. overzicht. moederbord CPU RAM GPU architectuur (vwo)

Microcontrollers Introductie INLMIC Jesse op den Brouw INLMIC/

WELKOM BIJ BOMBERBOT! LES 2: SEQUENTIES I LES 2: SEQUENTIES I WAAR GAAT DEZE LES OVER? INTRODUCTIE

Stappenmotor Interface. Controller

Terugmeldmodule 63320

slides2.pdf April 12,

Microcontrollers Week 1 Introductie microcontroller Jesse op den Brouw INLMIC/

Computerarchitectuur en netwerken Toets 1 4 okt

Gelijktijdigheid: Wederzijdse Uitsluiting & Synchronisatie Concurrency: Mutual Exclusion & Synchonization (5e ed: , Appendix A.

Microcontrollers Week 4 Introductie microcontroller Jesse op den Brouw (met dank aan Ben Kuiper) INLMIC/

Geheugenbeheer. ICT Infrastructuren 2 december 2013

Logische bit-instructies

Besturing van de Miniatuurwereld OC32. Apparaatdefinities (AVT)

Inhoudsopgave. Handleiding: MC v2.0a. Pagina - 1 -

Van Poort tot Pipeline. Ben Bruidegom & Wouter Koolen-Wijkstra AMSTEL Instituut Universiteit van Amsterdam

Pulse Burst Generator. Handleiding

Personal tag. Personal tag. Drukknop of bewegingsdetector. TABEL 2 Samenvatting van de Programmeerfuncties

Pagina 1 van 14. Nederlandse uitgave:

HANDLEIDING CIFERO XT CODEKLAVIER

scc = b) CD AB

Aanvulling op handleiding DMX controller, Nederlandstalig. Inhoudsopgave:

Virtueel Geheugen en demand paging (1)

Gebruikershandleiding

Antwoorden vragen en opgaven Basismodule

Geheugen onder DOS2 MSX turbor

G. Schottert Handleiding Freekie 1. Nederlandse handleiding. Freekie DMX ADRES INSTELLINGEN 1

Het instellen van de ControlBox 3.0 moet worden uitgevoerd door gekwalificeerde mensen.

De AT90CAN microprocessor van ATMEL in de motorvoertuigentechniek (3)

De Arduino-microcontroller in de motorvoertuigentechniek (8)

LocoServo Handleiding

1 Aanvulling cosy deeltijd

Technisch ontwerp positiebepaling Smart Blocks

De Arduino-microcontroller in de motorvoertuigentechniek (3)

KNX INTEGRATIE MODULE int-knx-2_nl 03/15

Waarmaken van Leibniz s droom

API...1 Identificatie...1 Opties...2 Acties...3 Webserver...6 Heartbeat...6 Buffer groottes...8

Hfdst. 2: COMBINATORISCH PROGRAMMEREN

VERKORTE GEBRUIKSAANWIJZING REGENAUTOMAAT

Opstarten. pagina 1. Instellen programmeermodus

led 0 aan Opdracht: 1 Opdracht: 4

Besturingspaneel v Raam E-systeem functie omschrijving v109

Bedieningshandleiding voor de Exocompact Display

De CB channel controller TMS1022NL/NLL en TMS1023NL/NLL. ( Dit is een maskrom-programmed version van de Texas Instruments TMS1000 family)

In- en uitgangssignalen van microprocessoren

Bijlage 8. Testprogramma brandreactiemodulen LBK

Hardware specialisatie. Sessie: Systeemoptimalisatie

VBA voor Doe het Zelvers deel 9

Installatie handleiding PowerSDR-IQ v SV1EIA voor het gebruik met de LIMA-SDR

Pulse output High speed counter Input interrupts

Scan-pad technieken. Zet elk register om in een scan-pad register (twee opeenvolgende D-latches: master-slave):

Domotechnology BVBA Dikberd 14 unit 1a 2200 HERENTALS België. Handleiding SQUEEZEBOX

Handleiding GSM kiezer TKGSM-431 versie 13V1.2. Afmeting breedte circa 20,4 cm hoogte circa 14 cm.

Microcontrollers. Bart Kardinaal E Verslag microcontrollers Rev 1.0 Status definitief.

Transcriptie:

Inhoud vandaag Interrupts Algemeen ARM7 AIC

Interrupts Wat is een interrupt? Een interrupt is een onderbreking van de huidige bezigheden ten gevolge van een externe gebeurtenis, zodanig dat de bezigheden na de onderbreking weer kunnen worden hervat. Essentieel is hierbij, dat de onderbreking moet worden veroorzaakt van buitenaf.

Interrupts Interrupts bij computers: Volgorde van de geplande (geprogrammeerde) activiteiten wijzigen. Op een onbepaald tijdstip veranderd de programma flow. Asynchrone aan programma flow.

Interrupts Nut van interrupts Interrupts bij computers worden gebruikt voor: het beheer van het computersysteem bij parallel programmeren (multitasking). de service de signalering bij apparatuurfouten en programmatuurfouten. de communicatie met de buitenwereld, bijvoorbeeld ten behoeve van procesbesturing.

Interrupts Voorbeelden Beheer: Zorgen voor task switchen bij multitasking OS. Service: Systeem onderbreken voor test doeleinden. Beveiliging: Bij niet functionerende apparatuur (apparatuurfout), of een fout in het programma zoals een deling door 0. Communicatie: Een proces kan het lopende programma onderbreken ten behoeve van onmiddellijke actie als bijvoorbeeld het vloeistofniveau in een tank te laag wordt.

Interrupts Voorzieningen ten behoeve van interrupts Er moet een mogelijkheid zijn om de interrupt kenbaar te maken. een bepaalde activiteit uitgevoerd kunnen worden. De onderbroken activiteit moet zinvol voortgezet kunnen worden. Bepaalde interrupts moeten geblokkeerd kunnen worden. Bij meerdere interrupts moet nagegaan kunnen worden waar de interrupt vandaan komt.

Interrupts Soorten interrupts hardware interrupts Wordt kenbaar gemaakt aan microprocessor via interrupt ingang. Kan op ieder willekeurig moment optreden, dus asynchroon. software interrupts Uitgevoerd bij een bepaalde instructie. Komt op een door de programmeur bepaalde plaats in het programma, dus synchrone. Wordt vaak gebruikt om systeem software aan te roepen (system calls) traps Situatie die ontstaat door programma zelf, bijvoorbeeld niet bestaande opcode, of divide bij 0. Treedt op als direct gevolg van instructie, dus synchrone.

Interrupts Opdracht: Bedenk welke acties worden uitgevoerd bij het detecteren van een interrupt? En in welke volgorde.

Interrupts Interruptafhandeling Interrupts detecteren Instructie afmaken Terugkeeradres bewaren Flags opslaan Voldoende stackruimte Interrupt Service Routine starten ISR uitvoeren en Interrupts weghalen Onderbroken programma voortzetten

Interrupts Interrupts detecteren Interrupt moet voldoende lang aanwezig zijn. Instructie afmaken Eerst instructie afmaken.

Interrupts Terugkeeradres bewaren Geheugen locatie bewaren van de volgende instructie van het onderbroken programma. Flags opslaan Opslaan van control en status registers (conditie codes). Voldoende stackruimte Stackpointer moet een adres bevatten waar voldoende geheugen aanwezig is. Interrupt Service Routine starten Uitvoeren van een stuk programmatuur. Processor dient te weten waar dit programma in het geheugen begint. Vaste geheugen locatie Adres van ISR op vaste geheugen locatie. Interrupt aanvrager levert adres, mbv een vector. Externe hardware vertaalt interruptvector naar adres.

Interrupts ISR uitvoeren Interrupt service routine wordt uitgevoerd. Zo kort mogelijk houden, om de normale programma flow zo minmogelijk te beïnvloeden. Zorgen dat de interrupt oorzaak wordt verwijderd. Onderbroken programma voortzetten Aan het eind van een ISR wordt terug gesprongen naar het hoofdprogramma. Registers moeten zijn hersteld naar de waarde van voor de interrupt.

Interrupts, meerdere interrupts Een interrupt per interrupt ingang een microprocessor met vier interrupt ingangen; IRQ1, IRQ2, IRQ3 en IRQ4 vier interruptvectoren VEC1, VEC2, VEC3 en VEC4, die de respectievelijke startadressen ISR1,ISR2,IS3 en ISR4 van de vier interrupt service routines bevatten.

Interrupts Hoe kunnen we meerdere interrupt sources aansluiten op 1 interrupt ingang. En hoe kan dan de aanvrager worden opgespoord.

Interrupts, meerdere interrupts Prioriteit Meerdere interrupts tegelijk, dan IRQ met hoogste prioriteit eerst. Meerdere interrupt aanvragers op dezelfde interruptingang

Interrupts, meerdere interrupts Meerdere interrupt aanvragers op dezelfde interrupt ingang Als de microprocessor een interrupt detecteert, weet hij niet van welke aanvrager deze afkomstig is. Methode om de aanvrager op te sporen: 1. polling 2. vectoring

Interrupts, meerdere interrupts Polling Beurtelings aftasten van de diverse aanvragers om te achterhalen wie om een actie verzoekt Speelt zich af binnen de Interrupt Service Routine. Daar de polling in dit geval met behulp van instructies (in de ISR) wordt uitgevoerd, spreekt men van software polling.

Interrupts, meerdere interrupts Voorbeelden software polling

Interrupts, meerdere interrupts Voor- nadeel van software polling: Voordeel Grote flexibiliteit, prioriteit volgorde wordt bepaald door programmeur. Nadeel Traagheid, er gaat veel tijd verloren met het opsporen van de interrupt aanvrager. Traagheid neemt toe bij meer aanvragers. OPLOSSING: Hardware Vectoring

Interrupts, meerdere interrupts Principe hardware vectoring: interrupt aanvragers niet aangesloten op de interrupt ingang van de microprocessor, maar op verschillende interrupt ingangen van een externe hardware schakeling. Procedure: Zodra een van de interrupt ingangen actief wordt, geeft deze schakeling een interrupt af naar de processor. De processor reageert door de bijbehorende interrupt vector te adresseren,de externe schakeling vertaalt dit vectoradres in een ander adres of levert het startadres van de bijbehorende ISR. Is er geen interrupt aanvraag dan wordt het adres zonder vertaling doorgegeven aan de adresbus

Interrupts, meerdere interrupts Hardware methoden voor het opstarten van de juiste Interrupt Service Routine: De interrupt hardware vertaalt het interruptvectoradres. De interrupt hardware levert het startadres van de ISR. De interruptaanvrager levert de vectorinformatie. Hardware polling. Software polling gecombineerd met hardware vectoring. Interrupt levels ( eventueel in combinatie met software polling of hardware vectoring).

Interrupts, meerdere interrupts De interrupt hardware vertaalt het interruptvectoradres. interruptvectoradres door de externe hardware vertaald in een ander adres, dat afhangt van de interrupt aanvrager. Dit vertaalde adres wordt aangeboden aan het geheugen, dat op zijn beurt het ISR startadres levert.

Interrupts, meerdere interrupts De interrupt hardware levert het startadres van de ISR. Het is ook mogelijk om in plaats van het vectoradres de inhoud van de interruptvector (of een gedeelte daarvan, bijvoorbeeld 1 byte) door externe hardware te laten vertalen.

Interrupts, meerdere interrupts De interruptaanvrager levert de vectorinformatie Bij sommige processoren moet de interrupt aanvrager zelf vectorinformatie leveren. In dit geval zendt de microprocessor na het detecteren van een interrupt een IACK-signaal (Interrupt ACKnowledge) naar de interrupt aanvrager. Deze antwoordt hierop met het op de databus zetten van de vectorinformatie

Interrupts, meerdere interrupts Interrupt levels Er zijn microprocessoren met gecodeerde interrupt ingangen. Men spreekt hier van interrupt levels.

Interrupts ARM7TDMI processor De ARM7TDMI heeft 2 interrupt ingangen, de IRQ en FIRQ. De FIRQ ingang heeft een hogere prioriteit als de IRQ ingang. Starten Interrupt Service Routine Bij het optreden van een interrupt worden de volgende stappen uitgevoerd: Bewaar het adres van de volgende instructie in het LR (link register). Kopieer de inhoud van het CPSR (Current Program Status Register) naar het SPSR (Saved Program Status Register). Set het juiste bit in het CPSR afhankelijk van het soort interrupt, IRQ of FIRQ. Laad de PC (Program Counter) met een waarde van de exception vector en voer de volgende instructie (de eerste instructie van de ISR) uit.

Interrupts ARM7TDMI processor Interrupt Service Routine verlaten Bij het verlaten van de interrupt service routine, als deze is afgelopen, moeten de volgende stappen worden uitgevoerd: Laad de program counter met de waarde uit het Link register. Kopieer de inhoud van het SPSR terug naar het CPSR. Reset de interrupt disable flaggen.

Interrupts ARM7TDMI processor Bron : http://www.atmel.com/dyn/resources/prod_documents/6222s.pdf

Advanced Interrupt Controller (AIC) Blokschema Bron : http://www.atmel.com/dyn/resources/prod_documents/6222s.pdf

Advanced Interrupt Controller (AIC) Kenmerken 8 prioriteit niveaus Individueel maskeerbare interrupts Werk met interrupt vectoren 32 interrupt sources Stuurt de FIQ en IRQ lijnen van de ARM aan Inputs interne periferals Inputs externe pinnen Kan ieder interrupt source 1 van de 8 prioriteiten geven. Interrupts sources kunnen worden ingesteld op: Niveaus (hoog/laag) of flank afhankelijk (opgaande/ neergaande). Alle interrupts sources kunnen gebruik maken van de Fast Interrupt request faciliteit. (FIQ)

Advanced Interrupt Controller (AIC) Interrupt lijnen Extern De FIQ en IRQ0.. IRQn zijn gedeelde lijnen van de PIO controller. Intern Komen van de diverse interne (embedded) periferals.

Advanced Interrupt Controller (AIC) Interrupt sources Een interrupt source is of een interne periferal of 1 van de externe interrupt ingangen. Interrupt source 0 is altijd verbonden met FIQ input. Interrupt source 1 wordt altijd gebruikt voor de systeem interrupts, zoals; system timer, realtime clock, power manager. Ze zijn dus d.m.v. een wired-or met elkaar verbonden. Bij een interrupt op source 1 moeten dus de status registers van alle systeem functies worden getest in de interrupt service routine.

Advanced Interrupt Controller (AIC) Bron : http://www.atmel.com/dyn/resources/prod_documents/6222s.pdf

Advanced Interrupt Controller (AIC) De AIC kan iedere interrupt source onafhankelijk van elkaar programmeren d.m.v. de volgende registers: AIC_SMR (Source Mode Register) prioriteit tussen 0 en 7 (7 = hoogste). conditie (flank/level gevoeligheid). AIC_IECR (Interrupt Enable Command Register) en AIC_IDCR (Interrupt Disable Command Register) Iedere Interrupt source individueel te enablen en disablen. AIC_IMR (Interrupt Mask Register) Hierin zijn de gemaskeerde interrupts af te lezen (welke door AIC_IECR en AIC_IDCR zijn ingesteld)

Advanced Interrupt Controller (AIC) Vervolg registers: AIC_ISCR (Interrupt Set Command Register) en AIC_ICCR (Interrupt Clear Command Register) Clearen en setten van interrupt source, alleen van invloed op flank gevoelige interrupts. Clear meestal bij initialisatie Set voor test en debug doeleinden AIC_IVR (Interrupt Vector Register) Staat interrupt vector van huidige interrupt Lezen van dit register zorgt voor een automatische clear van de interrupt AIC_SVR (Source Vector Registers) Staat het adres in van de desbetreffende interrupt source. AIC_IPR (Interrupt Pending Register) Laat alle actieve interrupts zien, gemaskeerd of niet.

Advanced Interrupt Controller (AIC) Vervolg registers: AIC_ISR (Interrupt Status Register) Geeft huidige actieve interrupt aan. AIC_CISR (Core Interrupt Status) Geeft de status van de IRQ en FIQ lijnen aan die met de ARM7TDMI core is verbonden.

Advanced Interrupt Controller (AIC) Interrupt latency De globale interrupt latencies (vertraging) is afhankelijk van een aantal parameters: De tijd dat de software de interrupts heeft gemaskeerd. Moment van optreden. De executie tijd van een instructie die net wordt uitgevoerd op het moment dat een interrupt optreedt. Hoe wordt omgegaan met interrupts van hogere prioriteit.

Advanced Interrupt Controller (AIC) Vertraging tussen aankomen interrupt op AIC en het aansturen van de IRQ/FIQ lijnen van de ARM processor: Bron : http://www.atmel.com/dyn/resources/prod_documents/6222s.pdf

Advanced Interrupt Controller (AIC) Werking bij normale interrupts Interrupt op interrupt source (op ingestelde manier) Check of interrupt actief en prioriteit. Interrupt vector behorende bij interrupt source wordt gekopieerd naar IAC_IVR IAC_IVR wordt gelezen, hierdoor wordt automatisch desbetreffende interrupt flag in de AIC gecleared. Interrupt service routine wordt uitgevoerd vanaf adres uit IAC_IVR. Aan eind van ISR wordt het AIC_EOICR geschreven om aan te geven dat interrupt is afgehandeld.

Advanced Interrupt Controller (AIC) Werking bij fast interrupts Interrupt op interrupt source 0 (op ingestelde mannier) Interrupt vector behorende bij interrupt source 0 wordt gekopieerd naar IAC_FVR IAC_FVR wordt gelezen, hierdoor wordt automatisch desbetreffende interrupt flag in de AIC gecleared. Interrupt service routine wordt uitgevoerd vanaf adres uit IAC_FVR. Aan eind van ISR wordt het AIC_EOICR geschreven om aan te geven dat interrupt is afgehandeld.

Advanced Interrupt Controller (AIC) Spurious interrupts De AIC detecteert Spurious Interrupts Dit zijn interrupts die lang genoeg actief zijn om een interrupt te generen op de AIC maar al weer weg zijn op het moment dat het interrupt vector register wordt gelezen. Bij een Spurious Interrupts wordt de routine uitgevoerd waarvan het adres in het AIC_SPU register staat.

Bron : http://www.atmel.com/dyn/resources/prod_documents/6222s.pdf

Bron : http://www.atmel.com/dyn/resources/prod_documents/6222s.pdf

Opdracht Stel de AIC zo in dat: PWMC een interrupt kan genereren op een opgaande flank, met de hoogste prioriteit. De interrupt service routine start op adres $08001000