Programmering av inbyggda system

Relevanta dokument
Maskinorienterad programmering

Maskinorienterad programmering

Maskinorienterad programmering

Undantag, avbrott. Avsnitt 7. Undantag, avbrott

Svar till Övning3 Datorteknik, HH vt12 Avbrott och timers

Datorteknik. Tomas Nordström. Föreläsning 7 Avbrott. För utveckling av verksamhet, produkter och livskvalitet.

Demonstration och konsultation Arbetsbokens avsnitt 7 Händelsestyrt processbyte Förberedande inför laboration 4

F8: Undantagshantering

Datorteknik. Tomas Nordström. Föreläsning 6. För utveckling av verksamhet, produkter och livskvalitet.

Lösningar till tentamen i EIT070 Datorteknik

Datorteknik ERIK LARSSON

Programräknaren visar alltid på nästa instruktion som skall utföras. Så fort en instruktion har hämtats så visar programräknaren på nästa instruktion.

Föreläsning 4 IS1300 Inbyggda system

Tentamen PC-teknik 5 p

Digital- och datorteknik

SVENSK STANDARD SS-EN ISO 19108:2005/AC:2015

Tentamen med lösningsförslag

Digitalteknik och Datorarkitektur 5hp

Lösningar till tentamen i EIT070 Datorteknik

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

Datorarkitektur I. Tentamen Lördag 10 April Ekonomikum, B:154, klockan 09:00 14:00. Följande gäller: Skrivningstid: Fråga

Tentamen PC-teknik 5 p Lösningar och kommentarer

Dataminne I/O Stack 0x005D 0x3D SP low byte 0x005E 0x3E SP high byte

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

En Von Neumann-arkitektur ( Von Neumann-principen i föreläsning 1) innebär:

En något mer detaljerad bild av en processor. De tre delarna i processorn är: Nere 3ll vänster finns e' antal register som används för a' lagra data.

En något mer detaljerad bild av en processor. De tre delarna i processorn är: Nere 3ll vänster finns e' antal register som används för a' lagra data.

Datorsystemteknik Föreläsning 7DAVA14

Datorarkitekturer med operativsystem ERIK LARSSON

Beskrivning av porthantering i mikroprocessorn SAM3U som används på vårt labkort SAM3U- EK.

Quick Start Guide Snabbguide

Datorarkitekturer med operativsystem ERIK LARSSON

GPIO - General Purpose Input Output

Svar till tentamen den 16 december 2013 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

electiaprotect GSM SEQURITY SYSTEM Vesta EZ Home Application SMART SECURITY SYSTEMS! SVENSKA ios Android

Foto: Rona Proudfoot (some rights reserved) Datorarkitektur 1. Datapath & Control. December

Assemblerprogrammering, ARM-Cortex M4 del 3

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

Assemblerprogrammering del 3

GU / Chalmers Campus Lindholmen Tentamen Programutveckling LEU 482 / TIG167

Tentamen med lösningsförslag

Övningsuppgifter STYRNING - i Mikrodatorteknik för U2 2010

Datorsystem 2 CPU. Förra gången: Datorns historia Denna gång: Byggstenar i en dators arkitektur. Visning av Akka (för de som är intresserade)

Polling (cyklisk avfrågning) Avbrott

Flera processer. Minneshantering. Trashing kan uppstå ändå. Ersätta globalt

Pipelining i Intel Pentium II

Mekanismer. (implementation)

c a OP b Digitalteknik och Datorarkitektur 5hp ALU Design Principle 1 - Simplicity favors regularity add $15, $8, $11

Arm Cortex-A8 Pipeline

F2: Motorola Arkitektur. Assembler vs. Maskinkod Exekvering av instruktioner i Instruktionsformat MOVE instruktionen

TSEA28 Datorteknik Y (och U)

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

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

System S. Datorarkitektur - en inledning. Organisation av datorsystem: olika abstraktionsnivåer. den mest abstrakta synen på systemet

Operativsystem ID1200/06 (ID2200/06 6hp) Tentamen :00-18:00

Pipelining i Intel 80486

LABORATION. Datorteknik Y

F5: Högnivåprogrammering

F5: Högnivåprogrammering

F6: I/O hantering. Typer av I/O i ett datorsystem. Protokoll för synkronisering. Drivrutiner. Memory mapped Port mapped. Polling Timed Interrupt DMA

Isolda Purchase - EDI

3. Mikroprogrammering II

Michael Q. Jones & Matt B. Pedersen University of Nevada Las Vegas

Dagens OS. Unix, Linux och Windows. Unix. Unix. En översikt av dagens OS Titt på hur de gör. Många varianter Mycket gemensamt. En del som skiljer

TN LR TT mg/l N b) 2,6-Dimethylphenole

Övning 6. Parallellport, timer

Datorsystem Laboration 2: Minnesmappade bussar

Maskinorienterad programmering

Safe Logic Compact. Konfigurering av Rexroth säkerhets PLC. Snabbguide Svenska

Pre-Test 1: M0030M - Linear Algebra.

Introduktion till ARM Cortex-M4

Laboration 2 i Datorteknik- Assemblerprogrammering II

Support Manual HoistLocatel Electronic Locks

JAVASCRIPT-POWERED LOADRUNNER CHRISTIAN GERDES PERFORMANCE ENGINEER LIGHTS IN LINE AB

2.45GHz CF Card Reader User Manual. Version /09/15

Tentamen med lösningsförslag

Får endast utföras av behörig personal. May only be carried out by authorized electrician

I DAG fo 4. Printerport v3 med READY o DAV. Avbrott. Hur bra blev det egentligen????

Beijer Electronics AB 2000, MA00336A,

GPIO - General Purpose Input Output

Digitalteknik och Datorarkitektur

Minnet från processorns sida Datorteknik

TDDIU81. Processer och trådar. Andreas Dahlberg, Jonathan Doherty, Tony Magnusson, Patrik Ottosson, Rasmus Siljedahl

CPU. Carry/Borrow IX. Programräknare

Övning 7. Timer, serieport

TSEA28 Datorteknik Y (och U)

0.1. INTRODUKTION Instruktionens opcode decodas till en språknivå som är förstålig för ALUn.

Mål. Datorteknik. Introduktion. Innehåll. Verklig situation - pappaledighet. Introduktion (forts)

EMIR-European Market Infrastructure Regulation

Tentamen i EIT070 Datorteknik

Blandningstunna. Bruksanvisning - maskin, LVD och EMC-direktiven s. 1 av / 190 L BRUKSANVISNING. Säkerhet Montering Underhåll och felsökning

Lösenordsportalen Hosted by UNIT4 For instructions in English, see further down in this document

IBM POWER4, den första flerkärniga processorn och dess pipelines.

OBS!! Detta är DEL 2 av tentan. För att få ut denna måste du ha lämnat in del 1. Om du inte fått ut del 1 bör du meddela skrivningsvakten. OBS!!

4 grundregler. Minneshantering. Problemet. Windows minkrav

Digitala System: Datorteknik ERIK LARSSON

denna del en poäng. 1. (Dugga 1.1) och v = (a) Beräkna u (2u 2u v) om u = . (1p) och som är parallell

Utkast. Programmering. Signals. Olika typer av program. Sommarkurs Avbrott i mjukvara.

LABORATION. Datorteknik Y

Application Note SW

Transkript:

Avbrott och undantag Ur innehållet: Cortex M4 "exceptions" Avbrott NVIC Externa avbrott: Avbrottsvippa Läsanvisningar: Arbetsbok kap 7 IRQ Flip-Flop STM32F4xx Cortex M4 programming manual Kap 2.3 Exception model SCB, sidor 206-227 NVIC, sidor 194-205 STM32F407 reference manual Interrupts and events, kap 12, 368-384 SYSCFG, kap 9, 286-298 Avbrott och undantag 1

Undantagshantering - "exception" ARM Processor RESET Applikation Undantag RESET NMI Exception Entry (inträde) Applikationskod "Thread Mode" Undantagskod "Handler Mode" Exception Return (utträde) Hard Fault Memory Management fault Bus Fault Usage Fault SV Call Pend SV Utträde från undantagshantering kan också vara ett nytt (annat) undantag med lägre prioritet. SysTick Avbrott Avbrott och undantag 2

Processorns olika tillstånd Handler/Thread modes, sköts automatiskt av processorn. För att underlätta konstruktion av operativsystem finns också: Privileged/ Non-privileged, kan programmeras. Non-priveleged mode tillåter inte alla instruktioner att exekveras. Ett försök att göra så resulterar i undantagshantering. Main stack/process stack kan programmeras, processorn använder olika fysiska register för stack. Operativsystemets programvara (kernel) exekveras med alla resurser tillgängliga. Applikationsprogrammet exekveras i en begänsad miljö, övervakad av kernel. Avbrott och undantag 3

Register Speciella register används för att ange Om flyttalsprocessor ska aktiveras Vilken stack som används Vilken exekverings-mode som används Om avbrott ska betjänas Avbrott och undantag 4

Speciella register Avbrott och undantag 5

Undantagsvektorer Första vektorn anger den initiala stackpekaren. Överiga vektorer innehåller addresser till funktioner för undantagshantering, adresserna har alltid LSB=1. (Thumb) Arkitekturen tillåter en tabell med högst 496 avbrott, men aktuell storlek bestäms av implementationen. Tabellen kan flyttas, dvs. relokeras av programvara, Vector Table Offsset Register (VTOR). Address Vector # 0x40 + 4*N External N 16 + N 0x40 0x3C 0x38 0x34 0x30 0x2C External 0 SysTick PendSV Reserved Debug Monitor SVC 16 15 14 13 12 11 0x1C to 0x28 0x18 0x14 0x10 0x0C 0x08 0x04 0x00 Reserved (x4) Usage Fault Bus Fault Mem Manage Fault Hard Fault NMI Reset Initial Main SP 7-10 6 5 4 3 2 1 N/A Avbrott och undantag 6

Main 5 Main 4 Reset Handler 4 1 Exception Handler 3 1 0x04 0x00 Reset Handler Vector Initial value of MSP r13 (MSP) 1. A reset occurs (Reset input was asserted) 2. Load MSP (Main Stack Pointer) register initial value from address 0x00 3. Load reset handler vector address from address 0x04 4. Reset handler executes in Thread Mode 5. Optional: Reset handler branches to the main program 2 3 Exception Vector 1. Exception occurs Current instruction stream stops Processor accesses vector table 2. Vector address for the exception loaded from the vector table 3. Exception handler executes in Handler Mode 4. Exception handler returns to main 2 Avbrott och undantag 7

Undantagshantering -detaljerna Main Application 1. Save processor status Copies CPSR into SPSR_<mode> Stores the return address in LR_<mode> Adjusts LR based on exception type 2. Change processor status for exception Mode field bits ARM or Thumb state Interrupt disable bits (if appropriate) Exception handler Sets PC to vector address 3. Execute exception handler <users code> 4. Return to main application Restore CPSR from SPSR_<mode> Restore PC from LR_<mode> 1 and 2 performed automatically by the core 3 and 4 responsibility of software Avbrott och undantag 8

Stacken i avbrottsfunktionen Ej aktiverad flyttalsenhet Före avbrott Processorn fyller automatiskt ut med 4 bytes om detta skulle krävas för att SP ska innehålla adress på adress jämnt delbar med 8. Detta indikeras med att bit9 i PSR sätts till 1. Avbrott och undantag 9

Återgång från avbrott Värdet i LR (EXC_RETURN) anger detaljerna för återställning av stack och PC efter avbrott Åter till handler mode använd main stack Åter till thread mode använd main stack Åter till thread mode använd process stack Flyttal aktiverat 0xFFFFFFE1 0xFFFFFFE9 0xFFFFFFED Flyttal ej aktiverat 0xFFFFFFF1 0xFFFFFFF9 0xFFFFFFFD Avbrott och undantag 10

Can return from interrupt with the following instructions when the PC is loaded with magic value of 0xFFFF_FFFX (same format as EXC_RETURN) LDR PC,.. LDM/POP which includes loading the PC BX LR (most common) If no interrupts are pending, foreground state is restored Stack and state specified by EXC_RETURN is used Context restore on Cortex-M3 and Cortex-M4 requires 10 cycles If other interrupts are pending, the highest priority may be serviced Serviced if interrupt priority is higher than the foreground s base priority Process is called Tail-Chaining as foreground state is not yet restored Latency for servicing new interrupt is only 6 cycles on M3/M4 (state already saved) If state restore is interrupted, it is abandoned New ISR executed without state saving (original state still intact and valid) Must still fetch new vector and refill pipeline (6-cycle latency on M3/M4) Avbrott och undantag 11

Externa avbrott Externa avbrott är en form av undantag. Registerinnehåll (xpsr, PC, LR, R12, R3-R0) sparas och återställs automatiskt av processorn Avbrottshanterare kan skrivas uteslutande med C -kod. Avbrott och undantag 12

Avbrottstabellen Anger position för de olika avbrottsvektorerna. De 16 första positionerna är samma för alla Cortex-M4. Resten av tabellen är specifik för den aktuella microcontrollern. Avbrott och undantag 13

Vectortabell i C typedef void(* const ExecptionFunctionPtr)(void); ExecptionFunctionPtr exception_table[] = { 0, (ExecptionFunctionPtr) main, NMIException, HardFaultException, MemManageException, BusFaultException, UsageFaultException, 0, 0, 0, 0, /* Reserved */ SVCHandler, DebugMonitor, 0, /* Reserved */ PendSVC, SysTickHandler /* Configurable interrupts start here...*/ } ; attribute ((section (".vector_table_section")) ); Avbrott och undantag 14

Vectortabell i assembler.thumb.section.globl Vectors interrupt_vectors Vectors:.WORD 0x2001A000 @ Top of Stack.WORD Reset_Handler.WORD NMI_Handler.WORD HardFault_Handler.WORD MemManage_Handler.WORD BusFault_Handler.WORD UsageFault_Handler.WORD 0, 0, 0, 0 @ Reserved x4.word SVC_Handler.WORD Debug_Monitor.WORD 0 @ Reserved.WORD PendSV_Handler.WORD SysTick_Handler @ External vectors start here Avbrott och undantag 15

VTOR - relokering Avbrott och undantag 16

EXEMPEL - Externt avbrott, avbrottsvippa EXEMPEL: Skriv en enkel applikation som använder PE3 hos MD407 som avbrottsingång och som registrerar varje avbrott, med en enkel räknare, och i huvudprogrammet skriver ut antalet avbrott till en visningsenhet enligt: void main(void) { app_init(); enable_interrupts(); while(1){ * portbargraphodrlow = count; } } Avbrott och undantag 17

IRQ-FlipFlop - avbrottsvippor Avbrott och undantag 18

SysCfg Används för att koppla IO-pinnar till processorns avbrottssystem Avbrott och undantag 19

Koppla PE(3) till EXTI3 avbrott Bits 15:0 EXTIx[3:0]: Dessa bitar bestämmer hur en IOpinne dirigeras till någon av de 16 avbrottslinorna EXTI0..EXTI15. 0000: PA[x] pin 0001: PB[x] pin 0010: PC[x] pin 0011: PD[x] pin 0100: PE[x] pin 0101: PF[x] pin 0110: PG[x] pin 0111: PH[x] pin 1000: PI[x] pin 1001: PJ[x] pin 1010: PK[x] pin Nollställ bitar som ska programmeras: SYSCFG_EXTICR1 &= ~0xFFF; Ettställ bitar för PE: SYSCFG_EXTICR1 = 0x4000; Avbrott och undantag 20