Trochę teorii

Transkrypt

Trochę teorii
System przerwania (SP).
Funkcje wejścia / wyjścia (I/O)








Urządzenia zewnętrzne i mikroprocesor
Pamięć I/O i instrukcje do pracy z nią
Przykłady
Przerwania w systemach komputerowych
(x86)
Tablica wektorów przerwań
Funkcje systemowe do zarządzania SP
Przykłady
Pytania
Urządzenia zewnętrzne i
mikroprocesor

Port w rozumieniem
sprzętowym:



Sterownik całego
urządzenia
Miejsce w wyróżnionej
przestrzeni adresowej I/O
Sposoby komunikacji
procesora:


Polling
Przerwania
Pamięć I/O i instrukcje do
pracy z nią
• I/O port similar to memory address
• Adresy portów (port number):16 bitowe(0000h – ffffh)
Memory Space
I/O Space
16 bit I/O
port address
I/O Port Addressing Modes

Tryby adresacji


Immediate port address (natychmiastowa)

Adres może być do 1B (immediate address)

Służy dla portów od 00h do ffh (adresy)
Adres portu jest zapisany w DX (bezpośrednia)obsługuje wszystkie porty: od 0000h do ffffh

Do przechowywania adresu – tylko DX

Do przechowywania danych – tylko AL

IN/OUT





in
in
out
out
eax/ax/al, port
eax/ax/al, dx
port, eax/ax/al
dx, eax/ax/al
INSB(W)/OUTSB(W)



DX - numer portu;
ES:DI – adres pamięci do której piszemy;
DS:SI – adres pamięci z której czytamy
I/O Data Transfer
in
in
in
in
out
out
386+
insb
al,
ax,
al,
eax,
80h,
dx,
72
insw dx
dx
insd dx
outsb ffh
outsw dx
outsd dx
40h
255
dx
dx
al
eax
;al gets 1 byte from port 40h
;ax gets 2 bytes from port ffh
;ax gets 1 byte from port address in dx
;eax gets 4 bytes from port addr. in dx
;send contents of al to port 80h
;send contents of eax to port addr. in dx
;receive byte string from port 72
;store in location at es:di
;receive word string from port addr. in
;receive double word string
;send byte string to port 255
;source string located in memory at ds:si
;send word string to port addr. in dx
;send double word string to port
I/O Memory Map


Obszary w I/O pamięci

0000h-00ffh Zarezerwowane dla systemu (system board)

0100h-03ffh Dla wszelkich kart (adapter cards)

0400h-0ffffh niedostępne dla magistrały systemowej
Przykłady (I/O interface chips):

8255A
Programmable Peripheral Interface (PPI)

8259
Programmable Interrupt Controller (PIC)

8253/4
Programmable Interval Timer
(PIT)

8237
Programmable DMA Controller
Przerwania w systemach
komputerowych (x86)
• Pojęcia ogólne:
• Interrupt request: sygnał zarządzający przerwanie
• Interrupt processing: odpowiedź procesora
• Interrupt service: to co się zdażyło w oprogramowaniu, jako wynik
• Rodzaje przerwania:
• Zewnętrzne (external) – wygenerowane poza procesora (sprzętowe)
• Wewnętrzne (internal) - wygenerowane poza procesora, jako wynik
instrukcji/operacji:
• x86 internals: int, into, divide error, and single step
• “trap” generally means any processor generated interrupt;
• in x86, usually means the single step interrupt
•
jeszcze x86 terminologia:
• Hardware Interrupt – External, uses INTR and NMI control bus lines
• Processor Interrupt – traps, exceptions
• Software Interrupt – Internal, from int or into
Jeszcze inaczej





W systemie IBM PC występują cztery źródła przerwań:
1. Przerwania niemaskowalne. Powodem ich wystąpienia jest błąd parzystości
pamięci, błąd sygnalizowany przez kartę znajdującą się w złączu (slocie) płyty
głównej (sygnałem IOCHK) lub błąd sygnalizowany przez koprocesor
arytmetyczny.
2. Przerwania sprzętowe. Źródłem tych przerwań są urządzenia wejścia wyjścia. Wykonanie tych przerwań jest zależne od ustawienia flagi FI.
3. Przerwania generowane przez procesor. Przyczyną przerwania jest błąd przy
wykonywaniu pewnych niedozwolonych operacji, np. dzielenia przez zero.
Przerwania te nie mogą być maskowane.
4. Przerwania programowe. Przerwania te są skutkiem wykonania instrukcji INT
n (n jest numerem przerwania).
8086 External Interrupt Connections
NMI - Non-Maskable Interrupt
INTR - Interrupt Request
Programmable
Interrupt Controller
(part of chipset)
NMI Requesting
Device
NMI
8086 CPU
INTR
Interrupt Logic
Intel
8259A
PIC
int
into
Software
Divide
Error
Single
Step
Traps
System obsługi przrwania
Schemat powiązań przy
przerwaniach sprzętowych
Linia IRQ
Urządzenie
Wektor przerwania
0
Zegar systemowy
08H
1
Klawiatura
09H
2
Wyjście kaskadowe do układu Slave
0AH
3
COM2
0BH
4
COM1
0CH
5
LPT2
0DH
6
kontroler napędu dysków elastycznych 0EH
7
LPT1
0FH
8
Zegar czasu rzeczywistego
70H
9
Wywołanie przerwania IRQ2
71H
10
zarezerwowane
72H
11
zarezerwowane
73H
12
zarezerwowane
74H
13
koprocesor arytmetyczny
72H
14
kontroler dysku twardego
76H
15
zarezerwowane
77H
Przerwania procesora
- Przerwania sprzętowe






Przerwanie 00H Przerwanie generowane jest przy dzieleniu przez 0.
Przerwanie 02H Przerwanie niemaskowalne (NMI). Przerwanie to po
wywołaniu jest zawsze wykonywane i nie może być
zablokowane przez użycie instrukcji STI i CLI.
Przerwanie 04H Nadmiar przy operacjach matematycznych.
Przerwanie 05H Wydruk zawartości ekranu monitora (Print Screen).
Przerwanie to jest wywoływane w momencie naciśnięcia
klawisza PrtScr i jest obsługiwane przez procedurę
BIOS-u.
Użytkownik mógłby sam opracować własną
procedurę
obsługi tego przerwania.
Przerwanie 08H Zegar czasu rzeczywistego. Uaktualnianie wewnętrznego
czasu dziennego.
Przerwanie 09H Klawiatura. Przerwanie sprzętowe, które jest zwykle
przejmowane przez programy TSR.
Przerwania systemu BIOS


Przerwanie 10H Wybór trybu pracy ekranu.
Przerwanie 14H Obsługa sprzęgu szeregowego





Przerwanie 16H Obsługa klawiatury









Funkcja 0 - wysłanie jednego bajtu do drukarki,
Funkcja 1 - inicjalizacja drukarki,
Funkcja 2 - odczyt stanu drukarki.
Przerwanie 19H Gorący restart - Bootstrap
Przerwanie 1AH Operacje na zegarze


Funkcja 0 - odczyt znaku,
Funkcja 1 - odczyt stanu bufora klawiatury,
Funkcja 2 - odczyt klawiszy sterujących,
Przerwanie 17H Obsługa drukarki


Funkcja 0 - inicjalizacja portu RS 232,
Funkcja 1 - wysłanie znaku przez port szeregowy,
Funkcja 2 - odczyt znaku z portu szeregowego,
Funkcja 3 - odczyt stanu portu szeregowego.
Funkcja 0 - odczytanie stanu zegara,
Funkcja 1 - ustawienie aktualnego czasu.
Przerwanie 1BH Obsługa naciśnięcia klawiszy Ctrl i Break.
Przerwanie 1CH Obsługa impulsów zegara systemowego (timer tick). Zaleca się
stosowanie tego przerwania w przypadku obsługi z częstością 18,2 razy na
Przerwania systemu DOS


Przerwanie 20H Zakończenie wykonywanego programu
Przerwanie 21H Obsługa funkcji DOS






Funkcja 0 - zakończenie aktualnie wykonywanego programu,
Funkcja 7 - odczytanie znaku z klawiatury bez wysłania echa,
Funkcja 9 - wysłanie łańcucha znaków zakończonym znakiem $,
Funkcja 25H - ustawienie wektora przerwań: we: AL-nr przerwania, DS:DX-adr.proc.obsługi’
Funkcja 26H - utworzenie nowego seg.PSP:we: DX-adr.seg nowego PSP, CS-dla aktual. PSP,
Funkcja 31H - zakończenie wykonywania programu i pozostawienie go w pamięci (TSR):












we: AL-kod zakończenia (0-normalne), DX rozmiar programu rezydentnego liczonego w 16B (paragraf)
Funkcja 33H - obsługa naciśnięcia klawiszy Ctrl i C,
Funkcja 35H - pobranie wektora przerw: we: AL - numer przerwania (00H ... FFH);wy: ES:BX,
Funkcja 49H - zwolnienie zarezerwowanej pamięci,
Funkcja 4CH - zakończenie programu z wyprowadzeniem komunikatu,
Funkcja 62H - pobranie segmentu PSP programu: we: AX=62H, wy: BX-seg.wykon. prog,
Przerwanie 23H Adres wyjścia z programu po naciśnięciu Ctrl i C
Przerwanie 24H Obsługa błędów fatalnych DOS-u
Przerwanie 27H Zakończenie wykonywanego progr. i pozostaw. go w pamięci (TSR)
Przerwanie 2FH Przerwanie multipleksowe, obsługa programów rezydentnych
Przerwanie 33H Obsługa myszy według standardu Microsoft
Przerwania F1H-F7H Zarezerwowane dla przerwań użytkownika
Interrupt Vector Table – IVT
•x86 ma 256 przerwania, każde ma swój Wektor
•Wektor = wskaźnik (adres) z Interrupt Vector Table, IVT
–IVT znajduje się pamięci od 0000:0000 do 0000:03ffh
•IVT zawiera 256 dalekie wskaźniki (far pointer values) –
adres (CS:IP)
•Każdy wskaźnik, to adres obsługującego progrmu
(Interrupt Service Routine, ISR)
IVT Format
0000:0000
0000:0001
Offset
Interrupt 0
0000:0002
0000:0003
IP LSB
Segment
IP MSB
CS LSB
0000:0004
0000:0005
Offset
0000:0006
0000:0007
CS MSB
Interrupt 1
Segment
Given a Vector, where is the
ISR address stored in memory
Offset  Type  4
0000:03fc
0000:03fd
Offset
int 36h
Interrupt 255
0000:03fe
0000:03ff
Example:
Segment
Offset = (544) = 216
= 00d8h
Co się dzieje w czasie przerwania ?
Complete
Current
Instruction
TEMP
0
Set
TEMP=TF
Execute
ISR
IF=0
TF=0
pop
IP and CS
push
CS and IP
popf
acknowledge
interrupt
call
ISR
Resume
Interrupted
Procedure
Read Type
Code #
NMI
YES
Internal
Interrupt
1
push
Flags
NO
YES
NMI
NO
YES
INTR
IF
0
NO
1
TF
1
0
Fetch
Next
Instruction
NO
YES
Analogia do podprogramów
call  int
ret
 iret
• call: CS, IP – na stos; ładowane są CS:IP z adresem
procedury
• int robi to samo co call i nieco jeszcze
• ret pobiera ze stosu IP, CS
• iret pobiera ze stosu FLAGS, IP, i CS
Stos jest zawsze warunkiem, aby praca była poprawna
Interrupt Vector Assignments
Type
0
1
2
3
4
5
6
7
8
9
A-F
10
11
12
13
14
15
16
Function
Divide Error
Single Step (DEBUG)
Nonmaskable Interrupt Pin
Breakpoint
Arithmetic Overflow
Print Screen Key
Invalid Opcode
Coprocessor Not Present
Time Signal
Keyboard Service
Originally Bus Ops (IBM PC)
Video Service Request
Equipment Check
Memory Size
Disk Service Request
Serial Port Service Request
Miscellaneous
Keyboard Service Request
Comment
Processor - zero or overflow
Processor - TF=1
Processor - NMI Signal
Processor - Similar to Sing Step
Processor - into
BIOS - Key Depressed
Processor - Invalid Opcode
Processor - no FPU
BIOS - From RT Chip (AT - IRQ0)
BIOS - Gen Service (AT - IRQ1)
BIOS - (AT - IRQ2-7)
BIOS - Accesses Video Driver
BIOS - Diagnostic
BIOS - DOS Memory
BIOS - Accesses Disk Driver
BIOS - Accesses Serial Port Drvr
BIOS - Cassette, etc.
BIOS - Accesses KB Driver
Interrupt Vector Assignments (cont.)
Type
17
18
19
1A
1B
1C
1D
1E
1F
20
21
22
23
24
25
26
27
28
2F
70-77
Function
Parallel Port LPT Service
ROM BASIC
Reboot
Clock Service
Control-Break Handler
User Timer Service
Pointer to Video Parm Table
Pointer to Disk Parm Table
Pointer to Graphics Fonts
Program Terminate
Function Call
Terminate Address
Control-C Handler
Fatal Error Handler
Absolute Disk Read
Absolute Disk Write
Terminate
Idle Signal
Print Spool
Hardware Interrupts in AT Bios
Comment
BIOS - Printer Driver
BIOS - BASIC Interpreter in ROM
BIOS - Bootstrap
BIOS - Time of Day from BIOS
BIOS - Keyboard Break
BIOS - Timer Tick
BIOS - Video Initialization
BIOS - Disk Subsystem Init.
BIOS - CGA Graphics Fonts
DOS - Clear Memory, etc.
DOS - Transfer Control
DOS - program Terminate handler
DOS - For OS Use
DOS - Critical Error
DOS - Disk Read
DOS - Disk Write
DOS - TSR Usage
DOS - Idle
DOS - Cassette, etc.
DOS - (AT - IRQs 8-15)
AT – IRQ Definitions
IBM-AT (Advanced Technology) - Intel 80286
Name
NMI
IRQ0
IRQ1
IRQ2
IRQ3
IRQ4
IRQ5
IRQ6
IRQ7
IRQ8
IRQ9
IRQ10
IRQ11
IRQ12
IRQ13
IRQ14
IRQ15
Interrupt Vector
02
08
09
0A
0B
0C
0D
0E
0F
70
71
72
73
74
75
76
77
Priority
1
2
3
4
13
14
15
16
17
5
6
7
8
9
10
11
12
Description
Memory Parity Error
Timer (Intel 8253 Chip 55 ms intervals)
Keyboard
8259 PIC Slave or EGA/VGA Vert. Retrace
Serial Port (COM2 or COM4)
Serial Port (COM1 or COM3)
Fixed Disk or LPT2 Request
Floppy Disk Driver
LPT1 Request
CMOS Real-Time Clock (RT Chip)
Re-directed to IRQ2
RESERVED
RESERVED
Mouse or other
Math Coprocessor (NPX)
Hard Disk
RESERVED

Podobne dokumenty