Komputery klasy PC
Dariusz Chaberski
§ Start systemu adres 0xFFFF:0x0000
§ POST (ang. Power On Self Test)
+ sprawdzenie zmiennej BIOSu 0x0040:0x0072 - 0x1234 - zimny start (RESET, włączenie zasila-
nia), gorący start (CTRL ALT DEL)
+ zimny start
3 test procesora (typowe instrukcje, rejestry)
3 test pamięci ROM (sprawdzana jest suma kontrolna i porównywana z sumą znajdującą się
na końcu pamięci)
3 test pamięci RAM (zapisywanie i odczytywanie wartości testowych 0xAF, 0x05, itp)
3 test specjalizowanych układów scalonych (kontrolery przerwań, bezpośredniego dostępu do
pamięci, układy czasowe, wejścia wyjścia itp)
3 test klawiatury, karty graficznej, stacji dysków, dysków twardych itp.
3 test rozszerzonej pamięci ROM
· początek bloku pamięci 0x55:0xAA:N, N=[0,255] - liczba 512 bajtowych bloków
· wykonanie podprogramów tam zamieszczonych
· ustawienie wektorów przerwań
· inicjalizacja kart rozszerzeń
2
§ POST (ang. Power On Self Test)
+ zimny start
3 pod adres 0000:7C00 ładowana jest zawartość sektora 1 ścieżki 0 głowicy 0 (MBR) pierw-
szej/aktywnej stacji dysków jeśli sektor zakończony jest bajtami 0x55, 0xAA
3 wykonanie programu pod adresem 0000:7C00
+ gorący start - zimny start oprócz testu pamięci RAM
§ Mapa pamięci (tryb rzeczywisty 1 MB)
+ F000:0000-FFFF:000F - BIOS
+ A000:0000-F000:0000 - pamięć ROM kart rozszerzeń (karta graficzna VGA)
+ 0060:0000-A000-0000 - pamięć operaracyjna RAM
+ 0040:0000-0060:0000 - zmienne BIOSu
+ 0000:0000-0040:0000 - wektory przerwań
3
§ Kontroler DMA
+ 0000-001f : dma1 (podrzędny, kanały 0,1,2,3)
+ 00c0-00df : dma2 (nadrzędny 0, kanały 5(1),6(2),7(3))
+ DMA Page Registers (Low)
3 0x87 r/w Channel 0 Low byte (23-16) page Register
3 0x83 r/w Channel 1 Low byte (23-16) page Register
3 0x81 r/w Channel 2 Low byte (23-16) page Register
3 0x82 r/w Channel 3 Low byte (23-16) page Register
3 0x8b r/w Channel 5 Low byte (23-16) page Register
3 0x89 r/w Channel 6 Low byte (23-16) page Register
3 0x8a r/w Channel 7 Low byte (23-16) page Register
4
§
+ DMA Page Registers (High)
3 0x487 r/w Channel 0 High byte (bits 31-24) page Register
3 0x483 r/w Channel 1 High byte (bits 31-24) page Register
3 0x481 r/w Channel 2 High byte (bits 31-24) page Register
3 0x482 r/w Channel 3 High byte (bits 31-24) page Register
3 0x48b r/w Channel 5 High byte (bits 31-24) page Register
3 0x489 r/w Channel 6 High byte (bits 31-24) page Register
3 0x48a r/w Channel 7 High byte (bits 31-24) page Register
5
§
+ DMA High byte word count
3 0x401 r/w Channel 0 High byte (bits 23-16) word count
3 0x403 r/w Channel 1 High byte (bits 23-16) word count
3 0x405 r/w Channel 2 High byte (bits 23-16) word count
3 0x407 r/w Channel 3 High byte (bits 23-16) word count
3 0x4c6 r/w Channel 5 High byte (bits 23-16) word count
3 0x4ca r/w Channel 6 High byte (bits 23-16) word count
3 0x4ce r/w Channel 7 High byte (bits 23-16) word count
6
§
+ 0x00-0x1f DMA Controller #1 (Channels 0, 1, 2 and 3)
3 DMA Address and Count Registers
· 0x00 write Channel 0 starting address
· 0x00 read Channel 0 current address
· 0x01 write Channel 0 starting word count
· 0x01 read Channel 0 remaining word count
· 0x02 write Channel 1 starting address
· 0x02 read Channel 1 current address
· 0x03 write Channel 1 starting word count
· 0x03 read Channel 1 remaining word count
· 0x04 write Channel 2 starting address
· 0x04 read Channel 2 current address
· 0x05 write Channel 2 starting word count
· 0x05 read Channel 2 remaining word count
· 0x06 write Channel 3 starting address
· 0x06 read Channel 3 current address
· 0x07 write Channel 3 starting word count
· 0x07 read Channel 3 remaining word count
7
§
+
3 DMA Command Registers
· 0x08 write Command Register
· 0x08 read Status Register
· 0x09 write Request Register
· 0x09 read -
· 0x0a write Single Mask Register Bit
· 0x0a read -
· 0x0b write Mode Register
· 0x0b read -
· 0x0c write Clear LSB/MSB Flip-Flop
· 0x0c read -
· 0x0d write Master Clear/Reset
· 0x0d read Temporary Register (not available on newer versions)
· 0x0e write Clear Mask Register
· 0x0e read -
· 0x0f write Write All Mask Register Bits
· 0x0f read Read All Mask Register Bits (only in Intel 82374)
8
§
+ 0xc0-0xdf DMA Controller #2 (Channels 4, 5, 6 and 7)
3 DMA Address and Count Registers
· 0xc0 write Channel 4 starting address
· 0xc0 read Channel 4 current address
· 0xc2 write Channel 4 starting word count
· 0xc2 read Channel 4 remaining word count
· 0xc4 write Channel 5 starting address
· 0xc4 read Channel 5 current address
· 0xc6 write Channel 5 starting word count
· 0xc6 read Channel 5 remaining word count
· 0xc8 write Channel 6 starting address
· 0xc8 read Channel 6 current address
· 0xca write Channel 6 starting word count
· 0xca read Channel 6 remaining word count
· 0xcc write Channel 7 starting address
· 0xcc read Channel 7 current address
· 0xce write Channel 7 starting word count
· 0xce read Channel 7 remaining word count
9
§
+
3 DMA Command Registers
· 0xd0 write Command Register
· 0xd0 read Status Register
· 0xd2 write Request Register
· 0xd2 read -
· 0xd4 write Single Mask Register Bit
· 0xd4 read -
· 0xd6 write Mode Register
· 0xd6 read -
· 0xd8 write Clear LSB/MSB Flip-Flop
· 0xd8 read -
· 0xda write Master Clear/Reset
· 0xda read Temporary Register (not present in Intel 82374)
· 0xdc write Clear Mask Register
· 0xdc read -
· 0xde write Write All Mask Register Bits
· 0xdf read Read All Mask Register Bits (only in Intel 82374)
10
§ Programowalny kontroler przerwań
+ 0020-0021 : pic1
+ 00a0-00a1 : pic2
§ Programowalny układ czasowy
+ 0040-0043 : timer0
+ 0050-0053 : timer1
11