F8: Undantagshantering

Relevanta dokument
Digital- och datorteknik

Assemblerprogrammering del 3

Maskinorienterad programmering

Övningsuppgifter i Mikrodatorteknik 4p/5p

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

F4: Assemblerprogrammering

Maskinorienterad programmering

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

Lösningsförslag till Tenta i Mikrodator

Lösningsförslag till Tenta i Mikrodator

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

Datorsystemteknik Föreläsning 7DAVA14

Digital- och datorteknik

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

Polling (cyklisk avfrågning) Avbrott

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

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

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

Per Holm Lågnivåprogrammering 2014/15 24 / 177. int och double = = 2, 147, 483, 647

Svar till Övning3 Datorteknik, HH vt12 Avbrott och timers

TENTAMEN. Datorteknik. D1/E1/Mek1/Ö Hjälpmedel: Häfte "ARM-instruktioner", A4-format, 17 sidor. Maxpoäng:

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.

Institutionen för elektro- och informationsteknologi, LTH

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

Digitala projekt rapport

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

Maskinorienterad programmering

Lågnivåprogrammering. Föreläsning 2 Lågnivåprogrammering. Binära tal. En enkel modell av datorns inre

Digital- och datorteknik

Övningsuppgifter STYRNING - i Mikrodatorteknik för U2 2010

Övning2 Datorteknik, HH vt12 - Programmering

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

Mål. Datorteknik. Repetition av avbrott. Innehåll. Mätning och styrning. Datorer för mätning och styrning. timer. Datorsystem A/D. Analog insignal D/A

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

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

Lösningar till tentamen i EIT070 Datorteknik

Avbrottshantering. Övningsuppgifter

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

Institutionen för elektro- och informationsteknologi, LTH

Föreläsningsanteckningar 3. Mikroprogrammering II

Tentamen. Datorteknik Y, TSEA28

Digital- och datorteknik

A-del motsvarande KS1

Digital- och datorteknik

Tentamen Datorteknik Y, TSEA28 Datum

Stack och subrutiner Programmeringskonventionen

TSEA28 Datorteknik Y (och U)

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

Lösningar till tentamen i EIT070 Datorteknik

Tentamen. Datorteknik Y, TSEA28

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

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

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

F5: Högnivåprogrammering

F5: Högnivåprogrammering

TSEA28 Datorteknik Y (och U)

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

Programmering av Motorola TSIU02 Datorteknik

Mål. Datorteknik. Innehåll. Innehåll (forts) Hur ser ett program ut? Hur skapas maskinkoden?

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

In- och Utenheter. Fö 3: In/Ut matning och kopplingsstruktur. Några exempel. Egenskaper. In- och Utenheter. Styrning.

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

General Purpose registers ALU I T H S V N Z C SREG. Antag att vi behöver skriva in talet 25 till register R18

TSEA28 Datorteknik Y (och U)

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

Labyrintspelet EDI021 Grupp 5

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

TSEA28 Datorteknik Y (och U)

Reducerad INSTRUKTIONSLISTA för FLIS-processorn

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

TSEA28 Datorteknik Y (och U)

Laboration nr 4 behandlar Assemblerprogrammering

Institutionen för elektro- och informationsteknologi, LTH

Datorteknik. Föreläsning 3. Assembler, stack och subrutiner, programmeringskonventionen. Institutionen för elektro- och informationsteknologi, LTH

Kontrollskrivning Mikrodatorteknik CDT S2-704

Tentamen. Datorteknik Y, TSEA28

LABORATION. Datorteknik Y

Tentamen Datorteknik D del 2, TSEA49

Datorteknik ERIK LARSSON

LV6 LV7. Aktivera Kursens mål:

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

Tentamen den 18 mars svar Datorteknik, EIT070

Operativsystem - Processer I

Laboration Datorteknik TSIU02 2. I/O-programmering

Programmering av inbyggda system

Program kan beskrivas på olika abstrak3onsnivåer. Högnivåprogram: läsbart (för människor), hög abstrak3onsnivå, enkelt a> porta (fly>a 3ll en annan ar

Lösningar till tentamen i EIT070 Datorteknik

Laboration 2 i Datorteknik- Assemblerprogrammering II

Digital- och datorteknik

Förutsättningar för skrivaranslutningen

TENTAMEN Datorteknik (DO2005) D1/E1/Mek1/Ö1

Ansvarig lärare: Olof Andersson, Telefon (besöker skrivsalen)

Grundläggande datavetenskap, 4p

Fö 7: Operativsystem. Vad är ett operativsystem? Målsättning med operativsystem. Styr operativsystemet datorn?

LABORATION DATORTEKNIK D. Pipelining. Namn och personnummer. Version: (OS,OVA,AN)

TSEA28 Datorteknik Y (och U)

Lösningsförslag tenta

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

Transkript:

F8: Undantagshantering Undantagshantering i 68 Vad är ett undantag? Typer av undantag Att skriva undantagsrutiner

Undantagshantering, vad och varför? Exempel: Ett system ska mäta temperatur var :e sekund Hur ska processorn veta att det gått sekunder???? Lösning: Skicka en extern signal till processorn var :e sekund Signalen avbryter pågående exekvering, och startar ett program som läser och lagrar temperatur Detta kallas interrupt externa signaler som avbryter ordninarie exekvering så att processorn startat ett annat program (interruptrutin) 68 up Temp. sensor f =. Hz Interrupt är en typ av undantag 2

Undantag (Exception) En händelse (yttre eller inre händelse) som avbryter den normala exekveringen och börjar exekvera en speciell undantagsrutin Kan liknas med ett subrutinanrop fast utan anrop L: MOVE (A)+, D ADD (A)+, D MOVE D, (A2)+ SUBQ #,D7 BNE L Något avbrott SR -> -(SP) PC -> -(SP) ADC: (SP)+ -> PC (SP)+ -> SR MOVE (In_Port), (A3)+ ADDQ #,Count CMPI #2,D RTE 3

När ett undantag inträffar så: Lagras programräknaren (PC) på stacken Utom vid Reset Lagras Status registret på stacken (SR) Utom vid Reset Undantag User mode Supervisor mode RTE (Hämtar PC och SR från stacken) User mode, applikationsprogram Supervisor mode, operativsystemet exekveras i systemmod 4

System states Undantag Normal Användarmod eller systemmod Extern aktivering av RESET signalen Undantag Åter från undantag Halted Systemmod Exception Systemmod Allvarligt undantag, t ex dubbelt bussfel 5

Två orsaker till undantag Yttre händelse Reset signalen aktiveras Busserror Interruptsignalerna aktiveras Inre händelse Division med noll TRAP TRAPV Felaktig instruktion Priviligierad instruktion Adresserror Trace 6

2 Gruppering av undantag Reset Pågående instruktion avbryts och Bus error undantagsrutinen påbörjas inom 2 klockpulser Addresserror Trace Pågående instruktion avslutas. Interrupt Därefter startas undantagshantering Privilige violation Illegal instruction TRAP, TRAPV Vanlig instruktionsexekvering som medför CHK, Div. med att undantagshanteringen startas. 7

Yttre Reset (HALT* och RESET* aktiveras samtidigt) Initierar Stackpekaren med värden från tabell Initierar program räknaren till ett värde som pekar på första instruktionen Nollställer alla register RESET Hämtar värden från tabell till reg SSP och PC SSP Första värdet i stacken PC MOVE #4,D Första instruktionen MOVE #4,D2 8

Busserror BERR* signalen aktiveras Yttre forts. Dvs. något fel uppstod i busscykeln Startar en undantagsrutin Interrupt Någon av de sju kombinationerna på interruptsignalerna (IPL*-IPL2*) aktiveras Inget interrupt Interrupt - Lägst prioritet Interrupt 2 Interrupt 7 - Högst prioritet En prioritetsavkodare används för att driva signalerna IPL*-IPL2* Startar en undantagsrutin 9

Division med noll Inre, t ex Om ett försök till division med noll inträffar i programmet aktiveras detta undantag MOVE #,D DIVU D,D3 En undantagsrutin för division med noll startar TRAP I ett program utförs instruktionen TRAP #x, där x är -5 Undantagsrutin med vektornummer 32+x startas T ex TRAP #4, så startar undantags rutinen med vektornummer 36 Används vanligtvis för operativsystemanrop

Adressering av undantagsrutiner Utifrån vilket undantag som inträffat väljer CPU vilken undantagsrutin som ska exekveras genom att titta i en tabell Tabellen är initialt ALLTID placerad på adress $-$3FF Ex. 6834 kan relokera tabellen till valfri position med VBR Inget utom denna tabell får finnas på dessa adresser SSP vid RESET 4 8 C PC vid RESET Adress till Busserror rutin Adress till Adresserror rutin osv 3FF

Adressering... Programmeraren bestämmer vilken adress som ska lagras i tabellen T.ex.. om följande programkod var den som skulle exekveras när RESET aktiveras så ska: Adress 4 innehålla $ ORG $ START MOVE #3,D BTST.L D,D3 osv När RESET aktiveras kommer processorn att ladda PC med adress $ och börja exekvera MOVE instruktionen 2

Vektortabell Nr. Adress Användning Reset: initiering för SSP 4 Reset: initiering för PC 2 8 Bussfel 3 C Adressfel 4 Illegal instruktion 5 4 Division med noll 6 8 CHK instruktion 7 C TRAPV-instruktion 8 2 Privilige violation 9 24 Trace 28 Emulering 2C Emulering 2-23 3-5F Reserverade 24 6 Falskt avbrott 25-3 64-7F Nivå -7, autovektor 32-47 8-BF TRAP -F 48-63 C-FF Reserverade 64-255 -255 Användarens avbrottsvektor 3

Vektoriserat avbrott :4 Avbrottsnivå IPL-IPL2 FC-FC2 Prioritetsnivå A-A3 AS*,DS* DTACK* Vektor D7-D DS*, AS* I/O-enhet DTACK* PC,SR -(SP) [vektor x 4] PC CPU IACK (SP)+ PC,SR V IRQ Minne I/O enheter En I/O-enhet signalerar till processorn att den behöver hjälp genom signalen Interrupt Request. Om avbrottsnivå > i-i2 i SR eller = 7, så avslutas aktuell instruktion och processorn signalerar samtidigt till I/Oenheten att den accepterar avbrottet Interrupt Acknowledge. I/O-enheten identifierar sig nu genom att skicka en Vektor på databussen. Processorn kvitterar att den fått vektorn och startar sedan utpekad servicerutin Servicerutinen avslutas med RTE. 4

Vektoriserat avbrott 2:4 FC2 FC FC Status Används ej Addr. av data i användarmod Addr. av program i användarmod Används ej Används ej Addr. av data i systemmod Addr. av program i systemmod Avbrottskvittens 5

Vektoriserat avbrott 3:4 6

Vektoriserat avbrott 4:4 7

Auto-vektor-avbrott :2 Avbrottsnivå IPL-IPL2 FC-FC2 Prioritetsnivå A-A3 AS*,DS* Extern logik VPS* DS*, AS* VPS* PC,SR -(SP) [autovektor x 4] PC CPU IACK VPS* (SP)+ PC,SR IRQ Minne I/O enheter En I/O-enhet signalerar till processorn att den behöver hjälp genom signalen Interrupt Request. Om avbrottsnivå > i-i2 i SR eller = 7, så avslutas aktuell instruktion och processorn signalerar samtidigt till I/Oenheten att den accepterar avbrottet Interrupt Acknowledge vilket medför att extern logik omedelbart kvitterar med att aktivera VPS* Processorn kvitterar att den registrerat autovektoravbrott och startar sedan utpekad servicerutin Servicerutinen avslutas med RTE. 8

Auto-vektor-avbrott 2:2 Fördel: Enklare anslutning av avbrott för en periferienhet. 9

Undantagsrutiner En undantagsrutin skrivs på samma sätt som en subrutin I en undantagsrutin är det VIKTIGT att inte påverka registrens innehåll Ex. en undantagsrutin för division med noll Adress $ 4 ska innehålla adressen $4 ORG $4 Div_noll MOVEM.L A/D-D,-(A7) LEA TEXT,A * A ska peka på texten vi vill skriva MOVE.W #3,D * Skriv max 3 tkn CLR.W D * Skriv till LCD skärm TRAP #7 MOVEM.L (A7)+,A/D-D RTE * Hoppa till baka till huvud programmet TEXT DC.B Du får inte dividera med NOLL, 2