arch1_opracowanie_ms..

Transkrypt

arch1_opracowanie_ms..
Programowanie na poziome sprzętu – opracowanie pytań
Część I - Sterownik przerwań 8259A i zegar/licznik 8253
Autor opracowania: Marcin Skiba
[email protected]
1. Jakie są dwie podstawowe metody obsługi urządzeń zewnętrznych i na czym one polegają?
Metoda przeglądania (ciągłe odpytywanie urządzeń w celu sprawdzenia czy nie potrzebują one obsługi) i
metoda przerwań (procesor nie odpytuje urządzeń tylko sam zostaje powiadamiany o potrzebie obsługi
jakiegoś urządzenia). Metoda przerwań jest wydajniejsza od metody przeglądania.
2. Jakimi wejściami przerywającymi dysponują procesory z rodziny IA i czym się one różnią?
INTR (maskowalna) i NMI (niemaskowalne). Różnica polega na tym, że przerwania zgłaszane na wejście
INTR mogą być ingnorowane (jeżeli flaga IF jest ustawiona na 0). Przerwania zgłaszane na wejście NMI nie
mogą być ignorowane, żadna flaga nie ma na to wpływu.
3. Do czego służy programowalny sterownik przerwań i jakie są korzyści płynące z jego zastosowania?
Przyjmuje zgłoszenia przerwań od podłączonych do niego urządzeń i w razie potrzeby zgłasza do procesora
konieczność obsługi przerwania zgłoszonego przez dane urządzenie. Zastosowanie sterownika pozwala
obsługiwać większą ilość urządzeń, ustawiać priorytety i ogólnie odciąża procesor; niezależne blokowanie
wejść od poszczególnych urządzeń, a nie tylko całego systemu przerwań jednocześnie.
4. Jak zbudowany jest układ kaskadowy sterowników i na czym polegają jego zalety?
Standardowo jest to połączenie dwóch sterowników przerwań. Wyróżniamy sterownik nadrzędny (Master) i
podrzędny (Slave), który jest podłączony do wejścia IR2 sterownika nadrzędnego. Konfiguracja ta i ilość
sterowników podrzędnych może być inna. Przerwania zgłaszane na wejścia sterownika podrzędnego są
zgłaszane przez ten sterownik do sterownika nadrzędnego, a ten w razie potrzeby zgłasza potrzebę obsługi
przerwania do procesora.
Zastosowanie układu kaskadowego pozwala na obsłużenie większej ilości urządzeń (maksymalnie 64).
5. Czym są kanały IRQ i jak są numerowane?
Linia sygnałowa za pomocą której urządzenie połączone jest ze sterownikiem przerwań (a konkretnie z
wejściem przerywającym). Przerwania zgłaszane są właśnie poprzez kanały IRQ. Numeracja: najpierw po
kolei numery dostaje sterownik nadrzędny (numery pokrywają się z numerami wejść przerywających), a
potem kolejne numery wg tej samej zasady zostają przyporządkowane kolejnym sterownikom podrzędnym).
6. Jakie zadania w systemie komputerowym realizowane są przez sterownik przerwań 8259A?
Przyjmuje i rejestruje zgłoszenia przerwań z urządzeń zewnętrznych systemu, ustala kolejność ich obsługi a
następnie inicjuje obsługę realizowaną przez procesor.
7. Jaką rolę pełnią rejestry IRR, ISR i IMR oraz układ priorytetu w sterowniku przerwań 8259A?
• IRR – przyjmuje i zapisuje napływające zgłoszenia,
• IMR – rejestr maski, odpowiada za maskowanie odpowiednich wejść IRi (1 – maskowanie),
• ISR – rejestr obsługiwanych przerwań. Mówi o tym czy dane przerwanie jest aktualnie
obsługiwanie,
• Układ Priorytetu – odpowiada za wybór zgłoszenia o największym priorytecie i przekazanie go do
obsługi.
8. Na czym polega maskowanie wejść przyjmowania zgłoszeń i jak jest ono dokonywane?
Przerwania zgłaszane na danym, zamaskowanym, wejściu nie są zgłaszane do obsługi. Przerwania zgłoszone
przed zamaskowaniem zostaną normalnie obsłużone. Maskowanie jest możliwe poprzez wysłanie do
sterownika słowa maski, które ustawi interesujące nas bity rejestru ISR na 1, jeżeli chcemy zamaskować
dane wejśćie IRi, lub 0 w przeciwnym przypadku.
9. Z jakiego powodu stosowane są priorytety przerwań i jaki mogą mieć one charakter?
Potrzeba obsługi przerwań zgłaszanych przez niektóre urządzenia jest dużo większa niż innych (np. obsługa
przerwania generowanego przez zegar systemowy jest ważniejsza niż obsługa przerwania klawiatury). Stąd
też wynika potrzeba zastosowania priorytetów przerwań. Charakter: stały i zmienny.
10. Jak inicjalizowane są wartości priorytetów poszczególnych wejść przerywających sterownika
8259A?
Wejście IR0 dostaje priorytet najwyższy (0), IR1 dostaje 1, itd...
11. Na czym polega cykliczna rotacja priorytetów, kiedy istnieją szczególne przesłanki do jej
stosowania i czym różnią się jej dwie odmiany?
Wybrane wejście dostaje priorytet najniższy, a reszta priorytetów jest relatywnie taka sama jak w przypadku
inicjalizacji. Mamy rotację określoną (wejście o najniższym priorytecie jest jawnie wskazywane) oraz
automatyczną (najniższy priorytet dostaje wejście o dotychczas najwyższym priorytecie). Należy stosować
gdy chcemy mniej więcej wyrównać średnie wartości priorytetów w czasie.
12. Jak przebiega inicjowanie obsługi zgłoszonego przerwania?
•
•
•
•
Sterownik przerwań generuje sygnał zgłoszenia przerwania INT=1.
Procesor wykrywa ten sygnał i po zakończeniu wykonywanego rozkazu wysyła do
sterownika impuls potwierdzenia przerwania ~INTA.
W odpowiedzi sterownik 8259A ustawia odpowiedni bit rejestru obsługiwanych przerwań
ISR, zeruje odpowiedni bit rejestru zgłoszeń przerwań IRR i nie wysterowuje w tym cyklu
magistrali danych.
Procesor generuje drugi impuls ~INTA, w trakcie trwania którego sterownik wysyła na
magistralę danych 8-bitowy numer identyfikujący procedurę obsługi zgłoszenia, pobierany
następnie przez procesor; tym samym inicjowana jest obsługa nowego zgłoszenia.
13. Jakie istnieją sposoby poinformowania sterownika o zakończeniu obsługi przerwania oraz jakie
konsekwencje niesie brak takiej informacji?
• Automatyczne, gdy w systemie jest tylko jeden sterownik i nie ma zagnieżdżenia przerwań.
• Jawne – poprzez wysłanie zlecenia EOI (Specyficznego, gdy chcemy w rejestrze ISR wyzerować
konkretny bit oraz niespecyficznego, gdy w rejestrze ISR ma być wyzerowany bit odpowiadający
przerwaniu o najwyższym priorytecie).
Jeżeli nie zrobimy tego to sterownik nie będzie kwalifikował do obsługi nowych zgłoszeń o priorytetach nie
większych niż przerwanie, którego bit zapomnieliśmy wyzerować.
14. Jakie są tryby pracy sterownika przerwań 8259A i czym się one charakteryzują?
•
•
•
•
Tryb pełnego zagnieżdżania przerwań.
Specjalny tryb pełnego zagnieżdżania przerwań – to co wyżej z dwoma różnicami: możliwe
jest zakwalifikowanie do obsługi więcej niż jednego zgłoszenia podanego na sterownik
podrzędny (zależnie od priorytetów). Po drugie trzeba sprawdzać ile zgłoszeń zostało
przyjętych na sterownik podrzędny. Jeżeli dokładnie jedno – sprawa ma się jak wyżej. Jeżeli
więcej to zerujemy tylko jeden bit ISR sterownika podrzędnego.
Maskowanie specjalne obsługiwanego zgłoszenia – przy obsłudze przerwania inne
zgłoszenia pochodzące z tego samego wejścia IR nie są obsługiwane (maskowanie).
Dodatkowo przy zgłoszeniu przerwania na dowolne, inne, wejście sterownika, jest ono
automatycznie przekazywane do obsługi (niezależnie od priorytetu).
Przeglądanie - procesor sam odpytuje sterownik przerwań, czy pojawiły się nowe
zgłoszenia.
15. Która struktura umożliwia ustalenie kolejności zgłoszeń przerwań już przyjętych do obsługi?
Układ priorytetu.
16. Jaki jest ogólny podział słów rozkazowych programujących sterownik przerwań 8259A i kiedy są
one stosowane?
•
•
Inicjalizujące – używane przed podjęciem przez sterownik jakichkolwiek działań.
Operacyjne – używane w dowolnej chwili po zakończeniu inicjalizacji sterownika.
17. Na jakie kategorie dzielone są przerwania?
• Sprzętowe maskowalne (INTR) i niemaskowalne (NMI) – standardowe przerwania.
• Programowe – generowane za pomocą instrukcji INT.
• Wyjątki – generowane przez procesor w momencie wykrycia określone sytuacji, najczęściej
krytycznej.
18. W jaki sposób procesor otrzymuje informacje o numerze wywoływanego przerwania?
•
•
•
•
Niemaskowalne – zawsze 02h
Maskowalne – podawane przez sterownik poprzez magistralę danych prosto do procesora.
Programowe – podawane jako argument instrukcji INT.
Wyjątki – mają z góry przyporządkowane numery.
19. Jaki czynności zostają wykonane przez procesor podczas wywoływania procedury obsługi
zgłoszonego przerwania?
•
•
•
•
•
Odłożenie na stos rejestru znaczników;
Wyzerowanie flagi zezwolenia na przerwania IF — tym samym zablokowanie
przyjmowania kolejnych zgłoszeń przerwań podawanych na wejście INTR;
Wyzerowanie flagi pułapki TF — w konsekwencji uniemożliwienie realizacji pracy
krokowej ewentualnie uruchomionym debuggerom na czas wykonywania procedury obsługi
zgłoszonego przerwania;
odłożenie na stos bieżącej zawartości dwóch rejestrów: najpierw CS, potem IP — czyli
odłożenie adresu następnej instrukcji do wykonania w ramach aktualnie realizowanego
programu;
załadowanie do rejestrów CS:IP adresu procedury obsługi zgłoszonego przerwania — tym
samym rozpoczęcie jej wykonywania.
20. Co to jest tablica wektorów przerwań, jak wygląda, gdzie się znajduje i do czego służy?
Tablica umieszczona w pierwszym kilobajcie pamięci operacyjnej. Zawiera 256 czterobajtowych wpisów,
każdy zawiera adres procedury obsługi danego przerwania (o numerach od 0 do 255). Z tablicy tej procesor
pobiera daleki adres procedury obsługi przerwania, które musi aktualnie obsłużyć.
21. Co oznacza przejęcie przerwania?
Podmiana procedury obsługi jakiegoś przerwania. Polega na nadpisaniu wektora przerwania, które nas
interesuje.
22. Jakie zasady muszą zostać spełnione przez programy przejmujące jedno lub więcej przerwań?
Programy te muszą zapamiętywać oryginalne wektory przerwań i po zakończeniu pracy przywracać je.
23. Jakie zasady muszą zostać spełnione przez procedury obsługi przerwań?
• Zachowanie wartości wszystkich rejestrów (poza znacznikami – to jest zapewnione).
• Ustawienie IF na 1 (przyjmowanie kolejnych zgłoszeń przerwań).
• Wywoływanie oryginalnej procedury obsługi przerwania.
• Gdy oryginalna procedura nie jest wywoływana – wysłanie zlecenia EOI do procesora.
• Nie można korzystać z instrukcji systemowych! (INT 21h)
24. Do czego służą programowalne zegary przyrostowe i jakie są korzyści płynące z ich zastosowania?
Zwalniają procesor z działań związanych z pomiarem czasu przez co znacznie go odciążają. Służą do
odmierzania czasu w celu umożliwienia podejmowania czynności trwających określoną ilość czasu w
dokładnie określonym momencie (generują przerwanie zegarowe).
25. Jakie zadania realizowane są przez zegar/licznik 8253?
• Odmierzanie czasu.
• Zliczanie impulsów zewnętrznych.
• Generowanie impulsów o określonym czasie trwania lub przebiegów o określonej częstotliwości.
26. Jaką rolę pełnią wejścia i wyjścia liczników rewersyjnych?
• Wejście CLK – wejście taktujące na które podawany jest sygnał zmniejszający wartość licznika.
Maksymalna częstotliwość 2.6MHz.
• Wejście GATE – bramujące pozwalające na uruchomienie, zatrzymanie lub zresetowanie zegara.
• Wyjście OUT – pojawia się sygnał powiadamiający o osiągnięciu przez licznik określonej wartości.
27. Jakie są tryby pracy liczników układu 8253?
• Tryb 0 – zliczanie impulsów.
• Tryb 1 – programowalny uniwibrator.
• Tryb 2 – programowalny dzielnik częstotliwości.
• Tryb 3 - generator fali prostokątnej.
• Tryb 4 – generator pojedynczego impulsu wyzwalany programowo.
• Tryb 5 – generator pojedynczego impulsu wyzwalany zewnętrznie.
28. Na czym polega programowanie układu 8253?
Programujemy tylko te liczniki, które chcemy wykorzystać niezależnie od siebie. Podczas pracy liczniki
możemy dowolnie przeprogramować. Po pierwsze zapisujemy odpowiednie słowo sterujące do rejestru
słowa sterowania, a następnie zapisujemy wartość początkową do wybranego licznika. Jeżeli nie chcemy
zmieniać trybu pracy to w trakcie pracy licznika możemy tylko zmienić jego wartość początkową. Z
liczników możemy czytać tak samo jak je programujemy.
29. Jakie zasady muszą zostać spełnione podczas programowania układu 8253?
Układ ten ma szynę danych 8-bitową, więc w momencie pracy trzeba najpierw wysłać młodszy bajt, a potem
starszy. Wartość licznika odczytywana jest z zewnętrznego bufora danych który zawsze przechowuje
aktualny stan licznika. Aby cokolwiek odczytać trzeba najpierw zatrzymać licznik. Innym sposobem jest
wysłanie odpowiedniego słowa sterującego, które 'zamraża' stan licznika aż do następnej operacji odczytu.
Należy zadbać o to, aby w trakcie programowania licznika nie została wywołana żadna, poboczna procedura
(chodzi tutaj głównie o procedury obsługi przerwań).
30. Do czego służą poszczególne liczniki układu 8253 w komputerach osobistych?
• Licznik 0 – odmierzanie czasu systemowego.
• Licznik 1 – sterowanie odświeżaniem pamięci RAM.
• Licznik 2 – generowanie tonów za pomocą głośnika komputerowego.