Undantagstyper. Maskinorienterad Programmering 2010/2011. MC68HC12, Stencil Assemblerprogrammering.pdf CPU12 Reference Guide

Relevanta dokument
Förutsättningar för skrivaranslutningen. Första programexemplet. strängslut. Maskinorienterad Programmering 2011/2012 Synkronisering och undantag

Förutsättningar för skrivaranslutningen. Första programexemplet. Synkronisera arbetstakterna

Förutsättningar för skrivaranslutningen

Programmering av inbyggda system

Förutsättningar för skrivaranslutningen. Första programexemplet. Inför specialtecken för strängslut

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

F8: Undantagshantering

Digital- och datorteknik

Assemblerprogrammering del 3

Arbetsbok för MC12, kapitel 4 Klocka. Genomgång av laborationer. New disc Här väljer du olika arbetsstycken

Laborationsmoment 2 - En Borrautomat

Laborationsmoment 2 - En Borrautomat

Maskinorienterad programmering

Genomgång av laborationer. New disc: Här väljer du olika arbetsstycken. Control -sektion: Styrord till borrmaskinen

Programmering av inbyggda system

Maskinorienterad programmering

Minnet. Minne. Minns Man Minnet? Aktivera Kursens mål: LV3 Fo7. RAM-minnen: ROM PROM FLASH RWM. Primärminnen Sekundärminne Blockminne. Ext 15.

Maskinorienterad programmering

LV6 LV7. Aktivera Kursens mål:

Digital och Datorteknik EDA /2010. EDA Digital och Datorteknik

EDA Digital och Datorteknik

EDA480/EDA485 - Maskinorienterad programmering, tentamen 2006-xx-xx 1(7)

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

Styrenheten 9/17/2011. Styrenheten - forts Arb s 120. LV4 Fo10. Aktivera Kursens mål: Kap 7 Blå

Avbrottshantering. Övningsuppgifter

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

Avbrottshantering. Övningsuppgifter Lösningsförslag Uppgift (Reservation för diverse fel!)

Digital- och datorteknik

Övningsuppgifter i Mikrodatorteknik 4p/5p

Datorsystemteknik Föreläsning 7DAVA14

Maskinorienterad Programmering 2010/2011. Maskinorienterad Programmering 2010/2011. Skrivarporten, p Arbetsbok MC12, avsnitt 2

Digital- och datorteknik

Maskinorienterad programmering. Mekatronikingenjör åk 2/ lp 3. Lars-Eric Arebrink. Av institutionen utgiven. Lars-Eric Arebrink

DBG identifierar därefter sig genom utskrift av namn och version. Se även "Disposition av adressrum" nedan. Följande kommandon accepteras av DBG

Svar till Övning3 Datorteknik, HH vt12 Avbrott och timers

Maskinorienterad programmering

Ext-13 (Ver ) Exempel på RTN-beskrivning av FLEX-instruktioner

Facit till övningsuppgifter Kapitel 13 Anslutning av minnes- och I/O-moduler till buss 13-1

ALU:n ska anslutas hur då?

Lösningsförslag till Tenta i Mikrodator

Ext-13 (Ver ) Exempel på RTN-beskrivning av FLEX-instruktioner

DBG11 Användarbeskrivning - Utgåva 2

3. Mikroprogrammering II

Avbrott - En enhet. I DAG fo 6 Mera avbrott. Avbrott - Fler enheter. Olika typer av avbrott DMA. Avbrott - Fler enheter -Avbrottshanterare

Polling (cyklisk avfrågning) Avbrott

Maskinorienterad programmering

Digital- och datorteknik

Reducerad INSTRUKTIONSLISTA för FLIS-processorn

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

Programexempel för FLEX

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

Laborationsmoment t 2 - En Borrautomat

Lösningsförslag till Tenta i Mikrodator

Digital- och datorteknik

Konstruera en dator mha grindar och programmera denna Använda en modern microcontroller

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

Institutionen för elektro- och informationsteknologi, LTH

Datormodell. Datorns uppgifter -Utföra program (instruktioner) Göra beräkningar på data Flytta data Interagera med omvärlden

Programmering av inbyggda system 2013/2014

Villkorliga hopp: 9/26/2011. Dagens mål: Du ska kunna.. Villrorliga (Relativa) hopp - forts Arb s 140. LV5 Fo12. LV5 Fo12. Aktivera Kursens mål:

Programallokering. Programtyper. Att placera program i flashrespektive. Program i FLASH-minne. Program i RAM-minne

7) Beskriv tre sätt att överföra parametrar mellan huvudprogram och subrutin.

Adressrum, programmerarens bild

Laborationsmoment t 2 - En Borrautomat

DBG identifierar därefter sig genom utskrift av namn och version. Se även "Disposition av adressrum" nedan. Följande kommandon accepteras av DBG

Maskinorienterad programmering. Mekatronikingenjör åk 2/ lp 3. Lars-Eric Arebrink. Av institutionen utgiven. vid flera tillfällen.

BDM12 Användarbeskrivning. Introduktion

Tentamen. EDA432 Digital- och datorteknik, It DIT790 Digital- och datorteknik, GU. Onsdag 12 Januari 2011, kl

TENTAMEN (med svar och vissa lösningar)

Digitalteknik EIT020. Lecture 15: Design av digitala kretsar

DAT 015 Maskinorienterad programmering 2010/2011. Uppbyggnad_och_funktion.pdf

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

Maskinorienterad programmering

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

F7: I/O hantering. Asynkron och synkron busscykel Bussfördelning. Periferikretsar

Datorteknik. Föreläsning 4. Polling och avbrott. Institutionen för elektro- och informationsteknologi, LTH. Mål

Föreläsningsanteckningar till Konstruktionsmetoder

F6: I/O hantering. Typer av I/O i ett datorsystem. Memory mapped

9/22/2012. Assemblernivå Beskrivning av funktion Automatiskt styrd borrmaskin Positionera borr Starta borr Borra genom arbetsstycke...

Tentamen i EIT070 Datorteknik

Digital- och datorteknik

Grundläggande datavetenskap, 4p

Institutionen för elektro- och informationsteknologi, LTH

Datorteknik. Föreläsning 5. Realtidssystem och realtidsprogrammering. Institutionen för elektro- och informationsteknologi, LTH.

Exempel 1 på Tentamen med lösningar

2 UPPBYGGNAD OCH FUNKTION

Bilda styrsignalerna till datavägen RESET FETCH EXECUTE NF NF NF. Digital och Datorteknik EDA /2011. Digital och Datorteknik EDA /2011

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

Laboration nr 3 behandlar

Digital och Datorteknik EDA /2011. EDA 451 Digital och datorteknik 2010/2011. Uppbyggnad_och_funktion.pdf

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

Föreläsningsanteckningar 3. Mikroprogrammering II

Tentamen. Datorteknik Y, TSEA28

Digital- och datorteknik

Maskinorienterad programmering, It/GU

Maskinorienterad Programmering 2011/2012. CPU12 Reference Guide Stencil: Assemblerprogrammering.pdf

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

Tentamen. Datorteknik Y, TSEA28

Exempel 3 på Tentamen

Transkript:

Maskinorienterad Programmering 200/20 MC68HC2, Stencil Assemblerprogrammering.pdf CPU2 Reference Guide Arbetsbok b för MC2, avsnitt 2 Exekveringstillstånd tå Processorn befinner sig alltid i något av tillstånden: tå 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. Ur innehållet: Processorns tillstånd ( Exceptions ) Auto-vektoriserat Vektoriserat Avbrottsprioritering NORMAL EXCEPTION 2 Test av Undantagstillstånd till tå d Undantagstyper t EXCEPTION CPU2 X Interna signaler för detekterig av olika feltillstånd Externa avbrottsignaler MPU INTERNA STYRENHET Instruktions Status Register Register Avbrottslogik Styrbuss POR COP CMON AVBROTT IOF Datadel D0..D7 Adressdel ALU A0..A7 och PC DATAVÄG Processorns externa bussar Adressbuss Databuss Aktiv? Nej Hämta Instruktion Utför Instruktion Ja Utför Avbrottsrutin INTP X MPU, händelser som alltid föranleder återstart () 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 ( eller X) som aktiveras. INTERNA, händelser som uppträder under programexekvering, exempelvis att en otillåten instruktion avkodas eller den speciella instruktionen. 3 4

Fatala fel, kräver av CPU POR, Power On Reset, vid spänningstillslag, insignal till processorn aktiveras. COP, Computer Operating Properly, så kallad watchdog-funktion. CMON, Clock Monitor Reset, övervakar E-klockan, om frekvensen sjunker under 0 khz genereras. Adress (hex) FFFE FFFC FFFA FFF8 FFF6 FFF4 FFF2 FF00-FFF0 POR CPU COP CMON Funktion, Startvektor Clock Monitor Fail COP Watchdog Timeout Illegal Op Code X Enhetsspecifika vektorer, skiljer sig något beroende på olika varianter Interna undantag 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 () fungerar på samma sätt, men har en annan autovektor och en bestämd operationskod. Adress (hex) FFFE FFFC FFFA FFF8 FFF6 FFF4 FFF2 FF00-FFF0 IOF INTERNA Funktion, Startvektor Clock Monitor Fail COP Watchdog Timeout Illegal Op Code X Enhetsspecifika vektorer, skiljer sig något beroende på olika varianter 5 6 EXEMPEL, Hantera Software Interrupt, t Internt t genererade avbrott AVBROTT ORG $000 main LDAB #$ LDAA #$22 LDX #$3333 LDY #$4444 NOP NOP BRA main _hantering: CLRA NOP ORG FDB $FFF6 _hantering Adress (hex) Funktion FFFE, Startvektor FFFC Clock Monitor Fail FFFA COP Watchdog Timeout FFF8 Illegal Op Code FFF6 FFF4 X FFF2 FF00-FFF0 Enhetsspecifika vektorer, skiljer sig något beroende på olika varianter INTP X Adress (hex) Funktion FFF0 Real Time Interrupt FFEE Enhanced Capture Timer channel FFEC Enhanced Capture Timer channel FFEA Enhanced Capture Timer channel 2...... FF8E Port P Interrupt FF8C PWM Emergency Shutdown FF8A- Reserverade FF80 7 8

Externt t genererade avbrott AVBROTT INTP X Undantags prioritet it t. MPU och INTERNA, (alltid) 2. X, (om X i CCR är 0) 3., (om I i CCR är noll) CPU2 X CPU2 X Adress (hex) FFFE FFFC FFFA FFF8 FFF6 FFF4 FFF2 FF00-FFF0 Funktion, Startvektor Clock Monitor Fail COP Watchdog Timeout Illegal Op Code X Enhetsspecifika vektorer, skiljer sig något beroende på olika varianter POR MPU COP CMON EXCEPTION AVBROTT INTERNA IOF INTP X X X I hantering av avbrottshantering för X avbrottshantering för 9 0 Avbrottshantering t Avbrott Huvudprogram 6 5 2 Avbrottsrutin 3 Betjäna avbrottet 4 ) Huvudprogram exekveras när ett avbrott aktiveras 2) Hopp till avbrottsrutin 3) Avbrottsrutin startar 4) Avbrottsrutin avslutas med en speciell instruktion, return from interrupt () 5) Återhopp till huvudprogram 6) Huvudprogrammet fortsätter. FFF2 FFF3 Minne Avbrottsrutinens adress avbrottsvektor Maskering av avbrott Nej I-flagga = 0? Ja Aktiv? Nej Hämta Instruktion Utför Instruktion Ja Utför Avbrottsrutin Maskera avbrott: SEI Alternativt Demaskera avbrott: CLI Alternativt ORCC #%0000000 ANDCC #%0 Demaskera X-avbrott: ANDCC #%0 OBS: Kan INTE maskeras ( Non Maskable Interrupt ) 2

CPU2 Beteende vid /Avbrott CCR X CCR = 0000 REGISTERS->[SP] REGISTERS->[SP] PC=[FFFE,FFFF] CCR[I]= CCR[I]= PC=[FFF4,FFF5] PC=[FFF2,FFF3] Spara registerinnehåll i Atomär operation PUSH PC PUSH Y PUSH X PUSH D PUSH CCR Stackens utseende i avbrottsrutin minskande adress SP CCR ACCB ACCA X H X L Innehåll i processorns register CCR vid avbrottet Innehåll i processorns register (Y,X och D) vid avbrottet ökande adress Y H Y L PC H PC L Innehåll i processorns programräknare vid avbrottet, dvs adressen till nästa instruktion som ska utföras 3 4 Avslut av avbrottsrutin ti ReTurn from Interrupt, Multipla l avbrottskällor Atomär operation PULL CCR PULL D PULL X PULL Y PULL PC Källa Källa Källa 2 3 2 3 & Processor avbrottsingång aktiv låg 5 6

Programbaserad avbrottsprioritering it i CPU Avbrottssignal Gränssnitt A mot seriell anslutning Processorns bussar Gränssnitt B mot parallell anslutning Gränssnitt C mot A/D anslutning Minne Avbrottshanterare från A? från B? Betjäna avbrott C JA JA Betjäna avbrott A Betjäna avbrott B Hårdvarubaserad d avbrottsprioritering 3 2 CPU Avbrottssignaler Processorns bussar Seriell Parallell Analog anslutning anslutning anslutning A B C Adress X Adress Y Adress Z Minne avbrottsrutin avbrottsrutin 2 2 avbrottsrutin 3 3 7 8 Adress (hex) Funktion Intern avbrottsprioritering it i FFF0 Högre prioritet 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. Lägre prioritet Real Time Interrupt FFEE Enhanced Capture Timer channel FFEC Enhanced Capture Timer channel FFEA Enhanced Capture Timer channel 2 FFE8 Enhanced Capture Timer channel 3 FFE6 Enhanced Capture Timer channel 4 FFE4 Enhanced Capture Timer channel 5 FFE2 Enhanced Capture Timer channel 6 FFE0 Enhanced Capture Timer channel 7 FFDE Enhanced Capture Timer overflow FFDC Pulse accumulator A overflow FFDA Pulse accumulator input edge FFD8 SPI0 FFD6 SCI0 FFD4 SCI FFD2 ATD0 FFD0 ATD FFCE Port J FFCC Port H FFCA Modulus Down Counter underflow FFC8 Pulse Accumulator B Overflow FFC6 PLL lock FFC4 CRG Self Clock Mode FFC2 Används ej (BDLC) FFC0 IIC Bus FFBE SPI FFBC Reserverad FFBA EEPROM I-Bit FFB8 FLASH I-Bit FFB6 CAN0 wake-up FFB4 CAN0 errors FFB2 CAN0 receive FFB0 CAN0 transmit FF96 CAN4 wake-up FF94 CAN4 errors FF92 CAN4 receive FF90 CAN4 transmit FF8E Port P Interrupt FF8C PWM Emergency Shutdown FF8A- Reserverade FF80 Avbrottsvippa Aktivera avbrott Tryckknapp A 5 A 4 A 3 A 2 A A 0 R/W Puls vid nedtryckning av tryckknapp Write address "" D C R Q Q Processor Puls då processorn skriver Avaktivera avbrott 9 20

Kvittering i av avbrott Interrupt Acknowledge EXEMPEL: ( jfr: laborationskort ML9) Aktivera avbrott EXEMPEL, Arbetsbok b uppgift 45 ( 4.S2 ) ; Definitioner, initieringssekvens ; och avbrottsvektor PARPORT EQU $0880 PARPORT2 EQU $088 IrqStat EQU $0D00 ; Huvudprogram IrqRes EQU $0D02 Loop IrqRes2 EQU $0D03 LDAB Var ADDB # ORG $000 STAB Var * Nollställ våra variabler STAB PARPORT CLR Var CLR Var2 LDAB Var2 CLR IrqRes STAB PARPORT2 CLR IrqRes2 BRA Loop * Sätt om avbrottsmasken hos processorn CLI * Initiera avbrottsvektor ORG $FFF2 FDB IrqR * Variabler Var RMB Var2 RMB Nollställ ( kvittera ) avbrott Status hos avbrottskällor 2 22 EXEMPEL, forts. * Avbrottsrutin IrqR: LDAA IrqStat BITA #2 ; Event 2? BEQ IrqR ; Om inte prova nästa CLR IrqRes2 INC Var2 ; Räkna upp IrqR: * Kontrollera även Event... BITA # BEQ IrqR2 CLR IrqRes CLR Var2 ; Nollställ IrqR2: IrqStat EQU $0D00 IrqRes EQU $0D02 IrqRes2 EQU $0D03 Applikation för avbrott () ;Initieringssekvens ORG XXXX Application_Start: LDS #TopOfStack...... ; nollställ I-flagga ANDCC #$FE JSR _main... ORG $FFF2 FDB irq_service_routine ORG $FFFE FDB Application_Start ; Avbrottshanterare irq_service_routine: FFFF 4000 3FFF 000 0FFF 0400 03FF 0000 ROM, Innehåller det inbyggda debuggerprogrammet DBG2. RWM, används för program och data. I detta adressintervall placeras gränssnitt mot externa enheter HCS2 interna register I laborationssystemet (MC2) kan vi INTE placera avbrottsvektorerna på deras rätta platser (konflikt med DBG2) I stället placeras dom i RWM 23 24

MC2 (DBG2) och avbott Huvudprogram Handler Betjäna avbrottet Vektor Funktion ROM FFFE, Startvektor FFFC Clock Monitor Fail, JMP [3FFE] FFFA COP Watchdog Timeout, JMP [3FFC] FFF8 Illegal Op Code, JMP [3FFA] FFF6, JMP [3FF8] FFF4 X, JMP [3FF4] FFF2, JMP [3FF2] FF8C FFF0 Enhetsspecifika JMP [3Fxx] vektorer Vektoravbrott tt Processor 2 INTA Somliga periferikretsar konstrueras för att tillhandahålla avbrottsvektor (kan ej anslutas till HCS2) Yttre enhet INTA Vektor Reg Minne Adress avbrottsrutin p Simulator MC2 ORG $FFF2 ORG $3FF2 FDB irq_service_routine FDB irq_service_routine ; Avbrottshanterare ; Avbrottshanterare irq_service_routine: irq_service_routine: Vektor q (Vektor q) avbrottsrutin q 4 Databuss 3 7 avbrottsrutin ti r PC 5 Adressbuss 6 25 26 Pi Prioritet it tvid vektoravbrott tt(daisy chain) INTA In S YE Out Vektor nr In Databuss S YE2 Out Vektor nr In S YE3 Out Vektor nr Vektor nr 0 (Adress i) Vektor nr (Adress i+p) Vektor nr max (Adress i+max) avbrottsrutin 0 avbrottsrutin avbrottsrutin max EXEMPEL, ColdFire (MC68x00) Adress Vektor (offset) nr (hex) Funktion 0 000 Initial stackpekare 004 Initial programräknare vektor 2 008 Access Error (ex: referens till adress där minne/periferikrets ej finns) 3 00C Adress Error (ex: referens till udda adress med word operand) 4 00 Illegal instruktion (icke-definierad operationskod) 5 04 Division med 0 6,7 08, 0C Reserverade 8 020 Privilege Violation, försök att utföra supervisor-instruktion i user mode Undantag 9 024 Trace, en-instruktions exekvering g 0 028 Line 00, reserverad operationskod 02C Line, reserverad operationskod program 2 030 Non-PC breakpoint debug interrupt 3 034 PC breakpoint debug interrupt 4 038 Format error 5 03C Ab Avbrottfå från enhet som ej tillhandahållit hållit avbrottsnummer 6-23 040-05F Reserverade vektorer 24 060 Icke-identifierat avbrott 25 064 Autovektor avbrottsnivå 26 068 Autovektor avbrottsnivå 2 27 06C Autovektor avbrottsnivå 3 28 070 Autovektor avbrottsnivå 4 Autovektor 29 074 Autovektor avbrottsnivå 5 avbrott 30 078 Autovektor avbrottsnivå 6 3 07C Autovektor avbrottsnivå 7 32-47 080-0BF0BF Trap vektor för instruktionen TRAP #<vektor_nummer> 48-63 0C0-0FF Undantag vid flyttalshantering, Reserverade vektorer 64-255 00-3FF Användardefinierade vektorer Vektoravbrott genererade av 27 28

Skrivarport med avbrott, Version 5 Skrivarport, Version 5 Datorsystem Datorsystem READY DAV Skrivarbuss Skrivare READY DAV Skrivar buss Skrivare PRINTER EQU $0800 PSTATUS EQU $080 PCONTROL EQU $0802 "" D Q Adress avkodning R C Q READY A A 0 R/W Denna lösning genererar ALLTID avbrott då skrivarens teckenbuffert är tom. 29 30 Skrivarport, Version 6 I vår sista lösning kan vi stänga av avbrotten från skrivaren. Disable Interrupt 3