6
SYSTEM PRZERWAŃ PROCESORA
System przerwań – „skrzynka pierwszej pomocy”. Zjawiska nieprzewidziane:
1) zagrożenie natury sprzętowej (awarie elementów);
2) zagrożenie programowe (np. dzielenie przez zero);
3) usługi dla użytkownika.
Jak sobie poradzić?
1) wyłączenie sprzętu, zapisanie danych
2)
3) użytkownik zleca systemowi wykonanie czegoś.
„Recepty” – procedura, procesor porzuca to co robił i ją wykonuje:
- napisana przez twórców, konstruktorów, nie można jej zmieniać;
- napisana przez twórców, konstruktorów, można dołączyć własną
(zmodyfikować);
- miejsce puste, można stworzyć własny system przerwań.
Działanie systemu przerwań:
- procesor sprawdza stabilność systemu przerwań po wykonaniu rozkazu
(dość często),
- urządzenie zgłasza usterkę, wtedy procesor reaguje;
- zgłoszenie przerwania – procesory mają:
linie zgłoszenia przerwania (jest ich kilka): Int Req (interrupt
request),
albo rejestry ze znacznikami, że są zgłoszone przerwania.
Kiedy jest przerwanie, to:
1) procesor sprawdza zgłoszenie przerwania;
2) wyłącznie systemu przerwań (opcjonalnie) – procesor przyjmuje
jedno przerwanie do obsługi (i tylko 1), inne nie są realizowane – muszą
poczekać. Jest to funkcja opcjonalna, ponieważ jeśli pojawi się sprawa
poważniejsza to procesor się nią zajmuje;
3) zachowanie stanu procesora (zapamiętanie tego co się to tej pory
działo):
przełączanie danych – istotne dane są w bezpiecznym miejscu (na
stosie) – rejestry PC i inne ważne rejestry,
przełączanie kontekstu – jeśli procesor ma kilka zestawów rejestrów –
wykorzystywany jest ten wolny (szybsze, nie ma transmisji danych).
Zachowanie stanu może być realizowane:
automatycznie – procesor bierze na siebie zachowanie danych;
programowo – programista musi zachować to co może być
zniszczone, procesor nie wykona tego automatycznie
7
kombinowane – automatycznie: licznik rozkazów, rejestry specjalne;
programista: rejestry wspólnego przeznaczenia.
4) identyfikacja przerwania – procesor uaktywnia linie odpowiedzi na
przerwanie (Int Ack – interrupt acknowledge).
Do procesora:
– numer przerwania (procesor prześle go magistralą danych),
– adres przerwania.
ARBITRAŻ PRZERWAŃ (określa kolejność wykonywania przerwań).
- sprzętowy
1. równoległy
2. szeregowy
3. równoległo -
szeregowy
1. – wszystkie urządzenia są przypięte do dekodera przerwań, który ustala
kolejność zgłoszenia przerwania do procesora. Numeracja wejść decyduje o
priorytecie przerwań. Priorytet może być wędrujący – obsłużony idzie na
koniec kolejki
2. – podaj dalej – urządzenia zgłaszające Int Req są łączone w jeden sygnał
3. – połączenie 1. i 2. – dekodery przerwań są przypięte w sposób szeregowy –
rozwiązanie dobre dla wielu urządzeń.
- programowy
5) skok do procedury obsługi przerwania,
6) powrót z obsługi przerwania – to co w 2) i 3), tylko w odwrotnej
kolejności:
odtworzenie stanu procesora,
włączenie systemu przerwań.
SYSTEM PRZERWAŃ W 8051
1) 5-6 źródeł przerwań:
2 zewnętrzne INT0, INT1 (linie typu Int Req),
8
2 od układów czasowo – licznikowych #0, #1,
1 przerwanie od portu szeregowego
szóste przerwanie od dodatkowego układu czasowo – licznikowego #2
2) przerwania mogą być maskowane (wyłączane) – w 8051 w sposób
programowy (w 8-bitowym rejestrze IE)
EA - ET2 ES ET1 EX1 ET0 EX0
Nr
bitu
7 6 5 4 3
2
1
0
EA – pozwala zamaskować wszystkie przerwania (1=wszystko włączone,
0=wszystko wyłączone)
ET2 - WŁ/WYŁ #2
ES – port szeregowy
ET1 - #1
EX1 – przerwania zewnętrzne zgłaszane linią INT1
ET0 - #0
EX0 - INTO
Słowa sterujące i kontrolne SFR
Maska przerwań
Nr bitu
(hex)
AF AE AD AC AB AA A9 A8
EA - ET2 ES ET1 EX1 ET0 EX0
MSB
LSB
Przerwania od:
- portu szeregowego – rejestr SCON (obsługuje port szeregowy), bity TI,
RI (najmłodsze). TI – przerwanie od nadajnika – nadajnik wyśle i to
sygnalizuje; RI – przerwanie od odbiornika (odebranie bajtu = zgłoszenie
przerwania)
- licznika #2 – w rejestrze T2CON (tylko dla 8051). TF2 – najstarszy – ślad
o zgłoszeniu przerwania.
PRIORYTET PRZERWAŃ – dwuetapowy:
1) użytkownik może ustalić – definiuje programowo posługując się
rejestrem IP:
-
- PT2 PS PT1 PX1 PT0 PX0
MSB
LSB
PT2, PT1, PT0 – od układów czasowo – licznikowych
9
PS – od portu szeregowego
PX1 – priorytet przerwania zewnętrznego zgłaszanego linią INT1
PX0 – priorytet przerwania zewnętrznego zgłaszanego linią INT0
Dwa poziomy – wyższy i niższy. Użytkownik może ustawić priorytety
dowolnie.
Przyjście przerwania o wyższym priorytecie powoduje przerwanie
przerwania o niższym priorytecie :).
Przyjście przerwania o niższym priorytecie nie powoduje przerwania
przerwania o wyższym priorytecie :)).
Jak przyjdą 2 przerwania o tym samym priorytecie, to wtedy obowiązuje
następująca kolejność:
1) INT0
2) #0
3) INT1
4) #1
5) PS
6) #2
Ta sekwencja jest niezmienna, spadek priorytetu uaktywnia się wtedy, gdy
przychodzi kilka przerwań o tym samym priorytecie.
PROCEDURY OBSŁUGI PRZERWAŃ
Adresy stałe:
INT0 -> 3 hex
INT1 -> 13 hex
#0 -> B hex
#1 -> 1B hex
PS -> 23 hex
#2 -> 2B hex
Gdy był dostęp do rejestrów IE, IP to system nie sprawdza przerwań
(dopiero po wykonaniu następnego rozkazu).
Gdy procesor wraca z procedury przerwania – odtwarza swój stan i powraca
do wykonania programu zaleconego, wtedy też nie sprawdza przerwań –
dopiero po wykonaniu następnej instrukcji w programie.
DMA – układ bezpośredniego dostępu do pamięci (Direct Memory Access)
Kiedy procesor za bardzo zajmuje się obsługą urządzeń WE/WY ,a nie
programem, DMA ma odciążyć procesor, czyli pobiera od układu WEJ do
pamięci i z pamięci do układu WYJ. Można też skopiować fragment pamięci z
jednego miejsca w drugie.
10
Komunikacja za pomocą magistral -> procesor zarządza magistralami, ale
DMA też potrzebuje do nich dostępu na poziomie procesora.
Zarządzanie magistralami – tryby pracy DMA:
1) blokowy
2) z wykradaniem taktów.
1. Tryb blokowy – jak DMA przejmie magistralę od procesora, to prowadzi
transmisję od początku do końca – jest właścicielem magistrali na cały czas
trwania transmisji.
DMA upora się tak szybko jak to możliwe – cenne, gdy układ WE przesyła dużo
danych (np. skaner).
Procesor nie ma wtedy dostępu do magistrali – nie może pobierać
argumentów, nie może wysyłać rezultatów, nie może pobrać następnego
rozkazu, itp.
Wniosek – DMA działa sprawnie, procesor nie.
2. Tryb z wykradaniem taktów – właścicielem magistrali jest procesor, DMA
dostaje magistralę tylko wtedy, gdy procesor jej nie potrzebuje.
Wniosek – DMA przesyła dane „kawałek po kawałku”, procesor działa bez
zakłóceń.
To procesor programuje układy DMA.
Rejestry DMA:
1) adresowy – RA – procesor zapisuje początek adresu pamięci
wykorzystywany przez DMA
2) licznika – RL – ilość słów, które DMA ma przyjąć albo wysłać, czyli
system „początek i ile”
3) sterujący – RS – definiowane parametry transmisji: czy to odczyt, zapis
czy kopiowanie pamięci
4) statusowy – RStat. – raport z działania DMA. Jeśli DMA zgłosi przerwanie
– jak jest błąd lub problem, RStat. podpowie rodzaj błędu.
PROCESOR:
RD, WR (aktywne poziomem niskim) – linie odczytu i zapisu
MREQ, IOREQ – linie żądań dostępu do pamięci i układów WE/WY
BUSRQ – żądanie dostępu do magistrali
11
BUSACK – potwierdzenie zwolnienia magistrali
DMA:
Adres
bo mamy magistralę, czyli = procesor
IOREQ bo układ wejściowy w trybie programowania
INT zgłoszenie przerwania do procesora
HOLDRQ – linie WYJ – chce się skontaktować z BUSACK
HOLDACK – kontakt z BUSACK
DMARQ – wejściowa linia
DMAACK – linia wyjściowa
Przykład układu DMA – INTEL
8257 (8237A)
- ma 4 niezależne kanały DMA
(możliwe są 4 transmisje przez
kanały DMA),
- układ wyboru priorytetu (bo są 4
kanały): #0 ma najwyższy priorytet
.......... #3
; obsłużony na
koniec kolejki,
- umożliwia hierarchiczne podłączanie kilku układów DMA,
- układ może pracować w trybie zgodnym z zapotrzebowaniem – np. w
deklaracji transmisji „nie więcej niż...”