Układ DMA zawiera dwa sterowniki przerwań 8237A połączone kaskadowo.
Każdy sterownik 8237A może obsługiwać 4 kanały DMA.
Sygnały DRQ i DACK jednego kanału zostały użyte do połączenia kaskadowego obydwu sterowników.
Pozwala to na obsługę siedmiu kanałów DMA.
Opis działania
Sterownik master obsługuje transmisje 16-bitowe (kanały 5-6) natomiast sterownik slave transmisje 8-bitowe (kanały 0-3).
Numer kanału DMA jest często jednym z parametrów, który musimy podać przy konfigurowaniu kart czy innych urządzeń. Oczywiście wybrany kanał nie może być używany przez inne urządzenie.
Układ DMA
Bibliografia: Urządzenia techniki komputerowej, K. Wojtuszkiewicz
Płyty główne
Opracował: Andrzej Nowak
Jest wykonany przy użyciu układu mikrokontrolera , czyli jednoukładowego komputera. Najczęściej stosowanym układem jest mikrokontroler Intel 8042. Komunikuje się on poprzez port szeregowy z mikrokontrolerem pracującym w klawiaturze.
Mikrokontroler klawiatury przesyła do mikrokontrolera zainstalowanego na płycie głównej kody (numery) klawiszy (ang. San Code), przy czym rozróżniany jest naciśnięcia klawisza (ang. make Code) oraz kod zwolnienia klawisza
(ang. break Code). Jest to istotne w celu ustawienia kolejności naciskania klawiszy. Informacja odbierana przez mikrokontroler 8042 jest obrabiana i interpretowana przez programowy sterownik klawiatury (ang. keyboard handler) uruchamiany zgłoszeniem przerwania sprzętowego IRQ1.
Sterownik klawiatury
Po wykryciu naciśnięcia bądź też zwolnienia klawisza mikrokontroler klawiatury przesyła łączem szeregowym jego kod (numer) do mikrokontrolera na płycie głównej .
Po odebraniu pełnego znaku zgłaszane jest przerwanie IRQ1, powodujące uruchomienie przerwania INT9 będącego programem obsługi klawiatury.
Dla systemu sterownik klawiatury (mikrokontroler) jest widziany jako układ wejścia / wyjścia o adresach 60h i 64h.
Znak jest odczytywany spod adresu 60h .
Następnie program obsługujący klawiaturę przyporządkowuje mu zgodnie ze swoją wewnętrzną tablicą kodującą kod znaku.
Kolejne napływające numery klawiszy i kody znaków umieszczane są w 32-bajtowych buforach pamięci.
W buforze mieści się 16 znaków (numer + kod), jednak z powodu sposobu organizacji bufora możemy w nim przechowywać maksymalnie 15 znaków.
W przypadku zbyt szybkiego napływania znaków lub nie odczytywania ich przez aplikację, sygnalizowane jest przepełnienie bufora (sygnał dźwiękowy).
Sterownik klawiatury
Począwszy od modelu AT na płytach głównych ISA montowany jest układ Motoroli MC146818 lub jego odpowiedniki (np.. układy Dallas).
Funkcje układu:
• jest zegarem czasu rzeczywistego (ang. RTC – Real Time Clock) – przechowuje informacje o dacie i godzinie
• przechowuje w niewielkiej pamięci RAM pewne dane dotyczące parametrów sprzętu zainstalowanego w systemie
Pamięć RAM układu posiada łącznie 64 B pod adresami od 00 do 3Fh.
Adresy od 00 do 09 dotyczą godziny i daty. Zawierają między innymi tak zwany czas alarmu, powodujący wygenerowanie przerwania sprzętowego IRQ8.
Adresy 0A – 0Dh dotyczą rejestrów sterujących pracą zegara.
Adresy od 0E – 3F zawierają między innymi informację o rodzaju napędów dyskowych, ilości pamięci, a także sumę kontrolną dla przechowywanych wartości.
Zegar czasu rzeczywistego
System ISA składa się z trzech programowalnych generatorów interwałów czasowych (timerów) będących elementem układu 8254 lub jego funkcjonalnego odpowiednika, które są dzielnikami częstotliwości
napędzanymi zewnętrznymi przebiegami o częstotliwości 1,19318 MHz.
Przebieg ten uzyskiwany jest z multiwibratora zawartego w podsystemie ISA, wytwarzającego przebieg oznaczony przez OSC, przeznaczony dla kart rozszerzeń.
Przebieg ten ma częstotliwość 14,31818 MHz, która po podzieleniu przez 12 przez układ dzielnika na płycie głównej daje częstotliwość 1,19318 MHz.
• timer 0 nazywany jest timerem systemowym. W trakcie inicjalizacji (po restarcie ) wpisywana jest do niego wartość dzielnika 0FFFFh, co daje na wyjściu częstotliwość 18,21 Hz (impuls co 54,9 ms). Jest często używany do odmierzania czasu w systemie.
• timer 1 jest źródłem sygnału odświeżania pamięci.
• timer 2 generuje przebiegi podawane na głośnik standardowo montowany w komputerach klasy IBM
PC.
Generatory programowalne
BIOS (ang. Basic Input Output System)
Podstawowy system obsługi wejścia / wyjścia. BIOS jest w istocie zestawem programów przechowywanych w pamięci ROM na płycie głównej, wykonujących kilka bardzo ważnych zadań.
Jest umieszczany w pamięci nieulotnej ROM w zakresie wysokich adresów, przy końcu pierwszego megabajtu pamięci, zajmuje ostatnie 128 KB tego obszaru.
BIOS – podstawowe zadania:
• przeprowadzenie po restarcie testów podstawowych układów i urządzeń systemu, zwanych autotestem po włączeniu zasilania – POST (ang. Power – On Self Test)
• inicjalizacja pracy systemu – instrukcje pobierane podczas startu pracy procesora, programowanie układów programowalnych – takich jak sterowniki przerwań czy DMA, wpisanie wartości
początkowych do struktur systemowych pamięci.
• zapewnienie w postaci programów obsługi przerwań (programowych bądź sprzętowych), procedur obsługi (sterowników, driverów) podstawowych, standardowych urządzeń systemu.
1. BIOS – procedura POST
Po restarcie systemu, niezależnie od jego przyczyny, procesor rozpoczyna wykonywanie instrukcji od adresu pamięci F000:FFF0h. Pod adresem tym znajduje się kod instrukcji skoku do procedury POST.
Jej zadaniem jest przetestowanie oraz inicjalizacja podstawowych układów płyty głównej.
Kolejno testowane są:
• procesor
• zawartość pamięci ROM (poprawność odczytu)
• pamięć RAM
• testowanie i inicjowanie układów programowalnych płyty głównej
• inicjowane są struktury systemowe – tablica wektorów przerwań
• testowane są standardowe urządzenia peryferyjne – klawiatura, stacje dysków, karta grafiki
• ostatnim etapem jest sprawdzenie obecności BIOS–u na kartach
Po wykonaniu wszystkich wcześniejszych operacji następuje przekazanie sterowania do procedury ładującej system operacyjny (ang. Bootstrap Loader).
2. BIOS - Setup
Podstawowym zadaniem procedur zawartych w BIOS-ie po restarcie komputera jest zaprogramowanie sposobu pracy wielu układów, w których należy wpisać warunki początkowe.
Oprócz tego, rozwiązania płyt głównych poszczególnych producentów umożliwiają wybór dodatkowych możliwości, decydujących o sposobie pracy systemu.
BIOS
Przykładem może być określenie ilości stanów oczekiwania przy dostępie do pamięci czy włączanie lub wyłączanie opcji „shadow BIOS”. Wyboru tych opcji dokonujemy przy pomocy programu SETUP (ang. setup – ustawienia).
BIOS – Setup – podstawowe ustawienia
• Standard CMOS Setup – dotyczy parametrów zapisanych w pamięci konfiguracyjnej zegara czasu rzeczywistego
• BIOS Features Setup – zmienia własności procedur BIOS-u wywoływanych przerwaniami sprzętowymi bądź programowymi
• CHIPSET Features Setup – zmienia sposób pracy układów zawartych w Chpsecie, sterujących pracą układów płyty głównej
• PCI Configuration Setup – ustawia opcje dotyczące sposobu pracy magistrali PCI
• Power Management Setup – zarządza oszczędzaniem mocy
3. BIOS – podstawowe procedury wejścia /
wyjściaDotyczą działania określonych procedur przerwań, których przyczyną jest wykonanie określonego rozkazu.
Procedury umieszczone są w BIOS-ie (pamięć ROM) jako podstawowe procedury wejścia / wyjścia. Dotyczą tylko wybranych przerwań od 0 do 1Fh.
Przykładowe przerwania BIOS – u:
• INT10h – obsługa ekranu
• INT13h – obsługa dysków twardych
• INT17h – obsługa drukarki
Część urządzeń może nie być obsługiwanych przez BIOS. Są to urządzenia które najczęściej posiadają własne sterowniki lub własny BIOS.
4. Przestrzeń adresowa pamięci i układów wejścia / wyjścia
Jednym z rozwiązań rzutujących na architekturę komputerów IBM PC była wartość adresu, spod którego procesory rodziny 80x86 po restarcie pobierały pierwszą instrukcję do wykonania. Adres ten wynosi FFFF0h i jest oddalony o 16 bajtów od końca pierwszego MB pamięci. Wymusza to położenie programu inicjującego pracę komputera, czyli BIOS-u.
Pierwsze komputery miały 1 MB pamięci podzielony na: 640 KB dla programów i ich danych i 384 KB pamięci zarezerwowanej dla zadań specjalnych. Pierwszy z wymienionych obszarów nosił nazwę pamięci
konwencjonalnej, a drugi pamięci górnej. Przy bardzo szybkim rozwoju komputerów ilość pamięci gwałtownie wzrosła powodując powstanie nowego podziału pamięci.
Pamięć EXPANDED – zawiera sterowniki umożliwiające zaadresowanie 32 MB pamięci poprzez zastosowanie ramki pamięci stronicowanej – przy 20 bitowej magistrali adresowej.
Pamięć EXTENDED – lub XMS – zawiera sterowniki umożliwiające zaadresowanie 32 MB pamięci poprzez zastosowanie ramki pamięci stronicowanej – przy większej niż 20 bitowej magistrali adresowej.
Pamięć ta była wykorzystywana dopiero po wprowadzeniu nakładki Windows na system operacyjny DOS.