Presentation laddar. Vänta.

Presentation laddar. Vänta.

Maskinorienterad Programmering 1 Undantagshantering EDA 480 – Maskinorienterad Programmering 2009/2010 MC68HC12, Stencil ”Assemblerprogrammering.pdf” CPU12.

Liknande presentationer


En presentation över ämnet: "Maskinorienterad Programmering 1 Undantagshantering EDA 480 – Maskinorienterad Programmering 2009/2010 MC68HC12, Stencil ”Assemblerprogrammering.pdf” CPU12."— Presentationens avskrift:

1 Maskinorienterad Programmering 1 Undantagshantering EDA 480 – Maskinorienterad Programmering 2009/2010 MC68HC12, Stencil ”Assemblerprogrammering.pdf” CPU12 Reference Guide Arbetsbok för MC12, avsnitt 2 Ur innehållet: Processorns tillstånd Undantagshantering (”Exceptions”) Auto-vektoriserat Vektoriserat Avbrottsprioritering

2 Maskinorienterad Programmering Exekveringstillstånd 2 Undantagshantering Processorn befinner sig alltid i något av tillstånden: NORMAL, processorn hämtar och utför instruktioner, dvs. normal exekvering. EXCEPTION, något “undantag” har inträffat som gör att processorn inte kan (eller ska) fortsätta normal exekvering. EXCEPTIONNORMAL

3 Maskinorienterad Programmering Test av Undantagstillstånd 3 Undantagshantering Hämta Instruktion IRQ Aktiv ? Utför Instruktion Ja Nej Utför Avbrottsrutin

4 Maskinorienterad Programmering Undantagstyper 4 Undantagshantering EXCEPTION RESET MPU RESETCOPCMON AVBROTT INTERNA IOF POR INTPIRQXIRQ SWI CPU12 RESET IRQ XIRQ RESET MPU, händelser som alltid föranleder återstart (RESET) av processorn. AVBROTT, externa händelser, dvs. utanför processorn, detta kan alltså vara enheter på samma krets som processorn (sammanbyggda periferienheter), det kan också vara en speciell insignal (IRQ eller XIRQ) som aktiveras. INTERNA, händelser som uppträder under programexekvering, exempelvis att en otillåten instruktion avkodas eller den speciella instruktionen SWI.

5 Maskinorienterad Programmering Fatala fel, kräver RESET av CPU 5 Undantagshantering RESET CPU RESETCOPCMON POR POR, Power On Reset, vid spänningstillslag RESET, insignal till processorn aktiveras. COP, Computer Operating Properly, så kallad watchdog-funktion. CMON, Clock Monitor Reset, övervakar E-klockan, om frekvensen sjunker under 10 kHz genereras RESET. Adress (hex)Funktion FFFERESET, Startvektor FFFCClock Monitor Fail FFFACOP Watchdog Timeout FFF8Illegal Op Code FFF6SWI FFF4XIRQ FFF2IRQ FF00-FFF0Enhetsspecifika vektorer, skiljer sig något beroende på olika varianter

6 Maskinorienterad Programmering Interna undantag 6 Undantagshantering INTERNA IOFSWI Om processorn avkodar en otillåten operationskod kallas detta Illegal Opcode Fetch (IOF). Processorn avbryter då, sparar registerinnehåll på stacken, läser autovektorn för IOF och utför undantagshantering. Instruktionen SoftWare Interrupt (SWI) fungerar på samma sätt, men har en annan autovektor och en bestämd operationskod. Adress (hex)Funktion FFFERESET, Startvektor FFFCClock Monitor Fail FFFACOP Watchdog Timeout FFF8Illegal Op Code FFF6SWI FFF4XIRQ FFF2IRQ FF00-FFF0Enhetsspecifika vektorer, skiljer sig något beroende på olika varianter

7 Maskinorienterad Programmering EXEMPEL, Hantera ”Software Interrupt”, SWI 7 Undantagshantering ORG$1000 mainLDAB#$11 LDAA#$22 LDX#$3333 LDY#$4444 NOP SWI NOP BRAmain SWI_hantering: CLRA NOP RTI ORG$FFF6 FDBSWI_hantering Adress (hex)Funktion FFFERESET, Startvektor FFFCClock Monitor Fail FFFACOP Watchdog Timeout FFF8Illegal Op Code FFF6SWI FFF4XIRQ FFF2IRQ FF00-FFF0Enhetsspecifika vektorer, skiljer sig något beroende på olika varianter

8 Maskinorienterad Programmering Internt genererade avbrott 8 Undantagshantering Adress (hex)Funktion FFF0Real Time Interrupt FFEEEnhanced Capture Timer channel FFECEnhanced Capture Timer channel 1 FFEAEnhanced Capture Timer channel FF8EPort P Interrupt FF8CPWM Emergency Shutdown FF8A- FF80 Reserverade AVBROTT INTPIRQXIRQ

9 Maskinorienterad Programmering Externt genererade avbrott 9 Undantagshantering AVBROTT INTPIRQXIRQ CPU12 RESET IRQ XIRQ Adress (hex)Funktion FFFERESET, Startvektor FFFCClock Monitor Fail FFFACOP Watchdog Timeout FFF8Illegal Op Code FFF6SWI FFF4XIRQ FFF2IRQ FF00-FFF0Enhetsspecifika vektorer, skiljer sig något beroende på olika varianter

10 Maskinorienterad Programmering 1. RESET MPU och ”INTERNA”, (alltid) 2. XIRQ, (om X i CCR är 0) 3. IRQ, (om I i CCR är noll) Undantags prioritet 10 Undantagshantering EXCEPTION RESET MPU RESETCOPCMON AVBROTT INTERNA IOF POR INTPIRQXIRQ SWI CPU12 RESET IRQ XIRQ 1 hantering av RESET avbrottshantering för XIRQ avbrottshantering för IRQ 1 1

11 Maskinorienterad Programmering 11 Undantagshantering Avbrottshantering 1) Huvudprogram exekveras när ett avbrott aktiveras 2) Hopp till avbrottsrutin 3) Avbrottsrutin startar 4) Avbrottsrutin avslutas med en speciell instruktion, return from interrupt (RTI) 5) Återhopp till huvudprogram 6) Huvudprogrammet fortsätter. ”avbrottsvektor” FFF2 FFF3 Minne Avbrottsrutinens adress

12 Maskinorienterad Programmering Maskering av avbrott 12 Undantagshantering Maskera avbrott: SEI Alternativt ORCC#% Demaskera avbrott: CLI Alternativt ANDCC #% Demaskera X-avbrott: ANDCC#% OBS: Kan INTE maskeras (”Non Maskable Interrupt”) Hämta Instruktion IRQ Aktiv ? Utför Instruktion Ja Nej Utför Avbrottsrutin I-flagga = 0 ? Ja Nej

13 Maskinorienterad Programmering CPU12 – Beteende vid RESET/Avbrott 13 Undantagshantering RESETXIRQIRQ CCR = REGISTERS->[SP] PC=[FFFE,FFFF]CCR[I]=1 PC=[FFF4,FFF5]PC=[FFF2,FFF3] CCR

14 Maskinorienterad Programmering Spara registerinnehåll… 14 Undantagshantering Stackens utseende i avbrottsrutin ”Atomär operation” PUSH PC PUSH Y PUSH X PUSH D PUSH CCR SP PC L PC H YLYL YHYH XLXL XHXH ACCA ACCB CCR Innehåll i processorns programräknare vid avbrottet, dvs adressen till nästa instruktion som ska utföras Innehåll i processorns register (Y,X och D) vid avbrottet Innehåll i processorns register CCR vid avbrottet minskande adress ökande adress

15 Maskinorienterad Programmering Avslut av avbrottsrutin ”ReTurn from Interrupt”, RTI 15 Undantagshantering ”Atomär operation” PULLCCR PULLD PULLX PULLY PULLPC

16 Maskinorienterad Programmering Multipla avbrottskällor 16 Undantagshantering Källa 1 Källa 2 Källa 3 & IRQ 1IRQ 2IRQ 3 IRQ Processor avbrottsingång aktiv låg

17 Maskinorienterad Programmering Programbaserad avbrottsprioritering 17 Undantagshantering

18 Maskinorienterad Programmering Hårdvarubaserad avbrottsprioritering 18 Undantagshantering

19 Maskinorienterad Programmering Intern avbrottsprioritering 19 Undantagshantering För avbrott från interna kretsar bestäms prioriteten av avbrottsvektorns adress. Ju högre adress, desto högre prioritet. Det finns vissa möjligheter att ändra detta programmässigt. Adress (hex)Funktion FFF0Real Time Interrupt FFEEEnhanced Capture Timer channel FFECEnhanced Capture Timer channel 1 FFEAEnhanced Capture Timer channel 2 FFE8Enhanced Capture Timer channel 3 FFE6Enhanced Capture Timer channel 4 FFE4Enhanced Capture Timer channel 5 FFE2Enhanced Capture Timer channel 6 FFE0Enhanced Capture Timer channel 7 FFDEEnhanced Capture Timer overflow FFDCPulse accumulator A overflow FFDAPulse accumulator input edge FFD8SPI0 FFD6SCI0 FFD4SCI1 FFD2ATD0 FFD0ATD1 FFCEPort J FFCCPort H FFCAModulus Down Counter underflow FFC8Pulse Accumulator B Overflow FFC6PLL lock FFC4CRG Self Clock Mode FFC2Används ej (BDLC) FFC0IIC Bus FFBESPI1 FFBCReserverad FFBAEEPROM I-Bit FFB8FLASH I-Bit FFB6CAN0 wake-up FFB4CAN0 errors FFB2CAN0 receive FFB0CAN0 transmit …… FF96CAN4 wake-up FF94CAN4 errors FF92CAN4 receive FF90CAN4 transmit FF8EPort P Interrupt FF8CPWM Emergency Shutdown FF8A- FF80 Reserverade Lägre prioritet Högre prioritet

20 Maskinorienterad Programmering Avbrottsvippa 20 Undantagshantering Aktivera avbrott Avaktivera avbrott Tryckknapp Puls vid nedtryckning av tryckknapp Processor IRQ 1D1D Q C1C1 R "1"  A15A15 A14A14 A 13 A 12 A 11 A0A0 R/W Write address Puls då processorn skriver Q

21 Maskinorienterad Programmering Kvittering av avbrott ”Interrupt Acknowledge” 21 Undantagshantering EXEMPEL: ( jfr: laborationskort ML19) Aktivera avbrott Nollställ (”kvittera”) avbrott Status hos avbrottskällor

22 Maskinorienterad Programmering EXEMPEL, Arbetsbok uppgift 45 (”IRQ4.S12”) 22 Undantagshantering ; Definitioner, initieringssekvens ; och avbrottsvektor PARPORT1EQU$0880 PARPORT2EQU$0881 IrqStatEQU$0D00 IrqRes1EQU$0D02 IrqRes2EQU$0D03 ORG$1000 * Nollställ våra variabler CLRVar1 CLRVar2 CLRIrqRes1 CLRIrqRes2 * Sätt om avbrottsmasken hos processorn CLI * Initiera avbrottsvektor IRQ ORG$FFF2 FDBIrqR ; Huvudprogram Loop LDABVar1 ADDB#1 STABVar1 STABPARPORT1 LDABVar2 STABPARPORT2 BRALoop * Variabler Var1RMB1 Var2RMB1

23 Maskinorienterad Programmering EXEMPEL, forts. 23 Undantagshantering * Avbrottsrutin IrqR: LDAAIrqStat BITA#2; Event 2 ? BEQIrqR1; Om inte prova nästa CLRIrqRes2 INCVar2; Räkna upp IrqR1: * Kontrollera även Event 1... BITA#1 BEQIrqR2 CLRIrqRes1 CLRVar2; Nollställ IrqR2: RTI IrqStatEQU$0D00 IrqRes1EQU$0D02 IrqRes2EQU$0D03

24 Maskinorienterad Programmering Applikation för avbrott (IRQ) 24 Undantagshantering ORG$FFF2 FDBirq_service_routine ORG$FFFE FDBApplication_Start ; Avbrottshanterare irq_service_routine: RTI ;Initieringssekvens ORGXXXX Application_Start: LDS#TopOfStack... ; nollställ I-flagga ANDCC#$FE JSR_main... I laborationssystemet (MC12) kan vi INTE placera avbrottsvektorerna på deras rätta platser (konflikt med DBG12) I stället placeras dom i RWM I detta adressintervall placeras gränssnitt mot externa enheter ROM, Innehåller det inbyggda debugger- programmet DBG12. RWM, används för program och data. HCS12 interna register FFFF FFF FFF FF 0000

25 Maskinorienterad Programmering MC12 (DBG12) och avbott 25 Undantagshantering IRQ Huvudprogram Betjäna RTI avbrottet IRQHandler Vektor ROM Funktion FFFERESET, Startvektor FFFCClock Monitor Fail, JMP [3FFE] FFFACOP Watchdog Timeout, JMP [3FFC] FFF8Illegal Op Code, JMP [3FFA] FFF6SWI, JMP [3FF8] FFF4XIRQ, JMP [3FF4] FFF2IRQ, JMP [3FF2] FF8C FFF0 Enhetsspecifika JMP [3Fxx] vektorer ORG$FFF2 FDBirq_service_routine ; Avbrottshanterare irq_service_routine: RTI ORG$3FF2 FDBirq_service_routine ; Avbrottshanterare irq_service_routine: RTI Simulator MC12

26 Maskinorienterad Programmering Vektoravbrott 26 Undantagshantering Somliga periferikretsar konstrueras för att tillhandahålla avbrottsvektor (kan ej anslutas till HCS12)

27 Maskinorienterad Programmering Prioritet vid vektoravbrott (Daisy chain) 27 Undantagshantering

28 Maskinorienterad Programmering EXEMPEL, ”ColdFire” (MC68x00) 28 Undantagshantering Vektor nr Adress (offset) (hex) Funktion 0000Initial stackpekare 1004Initial programräknare 2008Access Error (ex: referens till adress där minne/periferikrets ej finns) 300CAdress Error (ex: referens till udda adress med word operand) 4010Illegal instruktion (icke-definierad operationskod) 5014Division med 0 6,7018, 01CReserverade 8020Privilege Violation, försök att utföra supervisor-instruktion i user mode 9024Trace, en-instruktions exekvering 10028Line 1010, reserverad operationskod 1102CLine 1111, reserverad operationskod 12030Non-PC breakpoint debug interrupt 13034PC breakpoint debug interrupt 14038Format error 1503CAvbrott från enhet som ej tillhandahållit avbrottsnummer FReserverade vektorer 24060Icke-identifierat avbrott 25064Autovektor avbrottsnivå Autovektor avbrottsnivå CAutovektor avbrottsnivå Autovektor avbrottsnivå Autovektor avbrottsnivå Autovektor avbrottsnivå CAutovektor avbrottsnivå BFTrap vektor för instruktionen TRAP # C0-0FFUndantag vid flyttalshantering, Reserverade vektorer FFAnvändardefinierade vektorer Vektoravbrott Autovektor avbrott RESET vektor ”Undantag” genererade av program

29 Maskinorienterad Programmering Skrivarport med avbrott, Version 5 29 Undantagshantering Skrivare IRQ Dator- system READY DAV Skrivar buss Skrivare Dator- system READY DAV Skrivarbuss READY A1A1 A0A0 R/W Adress avkodning 1D Q C1 R "1" Q IRQ

30 Maskinorienterad Programmering Skrivarport, Version 5 30 Undantagshantering PRINTEREQU$0800 PSTATUSEQU$0801 PCONTROLEQU$0802 Denna lösning genererar ALLTID avbrott då skrivarens teckenbuffert är tom….

31 Maskinorienterad Programmering Skrivarport, Version 6 31 Undantagshantering I vår sista lösning kan vi stänga av avbrotten från skrivaren. ”Disable Interrupt”


Ladda ner ppt "Maskinorienterad Programmering 1 Undantagshantering EDA 480 – Maskinorienterad Programmering 2009/2010 MC68HC12, Stencil ”Assemblerprogrammering.pdf” CPU12."

Liknande presentationer


Google-annonser