1. Własny system operacyjny
1/34
1
2
3
4
5
Procesor – wybrane
zagadnienia
zaawansowane
offset
DS
SS
ES
FS
GS
Rej. Segment.
CS
+
Instrukcja...
16
Szyna
adresowa
16
20
1. Własny system operacyjny
2/34
1
2
3
4
5
Obsługa szyny adresowej: banki vs segmenty
offset
DS
SS
ES
FS
GS
Rej. Segment.
CS
+
Instrukcja...
16
Szyna
adresowa
16
20
Szyna
adresowa
8
offset
Instrukcja...
7
STATUS.RP0
LSb
MSb
1
Banki pamięci, przykład Microchip PIC
Segmenty pamięci, przykład 8086
2 Α 8 7
1 0 0 5
2 Β 8 7 5
+
segment:
offset:
adres fizyczny:
1
0011010
STATUS.RP0:
offset:
adres fizyczny:
10011010
1. Własny system operacyjny
3/34
1
2
3
4
5
BIOS i start systemu
BIOS – Basic Input/Output System – oprogramowanie wbudowane w chip na płycie
głównej komputera PC.
1. Wykonuje procedurę POST – Power-On Self Test, w celu
inicjalizacji i testowania urządzeń
2. Ładuje system operacyjny (boot OS)
IPL Device – Initial Program Load Device – urządzenie umożliwiające załadowanie
systemu operacyjnego
BAID – BIOS Aware IPL Device – urządzenie IPL, które do załadowania systemu
potrzebuje odpowiedniego kodu obsługującego w BIOS.
1. Własny system operacyjny
4/34
1
2
3
4
5
BIOS i start systemu
1. Procesor wykonuje instrukcje zaczynając od
adresu F000:FFF0 (zazwyczaj jmp)
2. Instrukcje dotyczą procedury POST
3. Po zakończeniu POST wywoływane jest
przerwanie 19h
4. Przerwanie 19h podejmuje próbę załadowania
systemu operacyjnego zgodnie z tablicą IPL
5. Jeśli próba się nie powiedzie, wywoływane jest
przerwanie 18h
6. Przerwanie 18h przekazuje sterowanie do
przerwania 19h, jeśli IPL Table posiada
kolejen wpisy, lub wyświetla komunikat o
błędzie
1. Własny system operacyjny
5/34
1
2
3
4
5
BIOS i start systemu z dyskietki
Procesor pracuje w trybie rzeczywistym x86
Załadowanie 512 bajtów do pamięci pod adresem 0000h:7C00h z dysku z lokalizacji:
head 0, cylinder 0,
sector 1
http://www.howtodothings.com/computers/a1015-making-your-own-operating-system.html
Każda strona dyskietki FDD ma swoją głowicę (heads 0...1).
Każda strona składa się z 80 cylindrów, każdy cylinder
składa się z 18 sektorów. Każdy sektor składa się z 512
bajtów.
Łączny rozmiar dyskietki: 2 x 80 x 18 x 512 = 1,474,560
1. Własny system operacyjny
6/34
1
2
3
4
5
BIOS i start systemu z dyskietki
LEA SI,
msg
MOV AH, 0Eh
pisz:
MOV AL, [SI]
CMP AL, 0
JZ done
INT 10h.
INC SI
JMP pisz
done:
MOV AH, 0
INT 16h
JMP done
new_line EQU 13,
10
msg DB ‘moj pierwszy system operacyjny!'
DB new_line, ‘Nacisnij klawisz', 0
1. Własny system operacyjny
7/34
1
2
3
4
5
DOS – szablon programu
.model small
.386
.data
tekst byte „czesc”, 0Ah, 0Dh, „$”
.stack 100h
.code
.startup
MOV dx, offset tekst
MOV ah, 09h
INT 21h
.exit
end
1. Własny system operacyjny
8/34
1
2
3
4
5
Segmenty i modele pamięci
.model small
.386
dane segment para
tekst byte „czesc”, 0Ah, 0Dh, „$”
dane ends
moj_stos
segment stack para
word 10 dup (?)
moj_stos
ends
program segment para ‘code’
assume cs:program, ds:dane
.startup
MOV dx, offset tekst
MOV ah, 09h
INT 21h
.exit
program ends
end
ASSUME segRegister:segLocation [...]
name SEGMENT [align][READONLY]...
.....
name ENDS
1. Własny system operacyjny
9/34
1
2
3
4
5
Budowa pliku .exe
exe_data_start = exe.header_paragraphs * 16L;
http://www.delorie.com/djgpp/doc/exe/
2. Tryb chroniony x86
10/34
1
2
3
4
5
Tryb pracy procesorów x86 (IA-32)
Tryb rzeczywisty – tryb zgodny z najstarszym z rodziny 8086
Tryb chroniony – tryb przeznaczony do pracy „wielozadaniowej” pod kontrolą
systemu operacyjnego. Adresowanie może być w modelu płaskim (bez
segmentacji), segmentowy (podobnie do trybu rzeczywistego) oraz adresowanie
logiczne (oparty na tablicy deskryptorów i selektorach).
Tryb SMM (System Management Mode) – tryb zarządzania sprzętem przez system
operacyjny
IA-32 – Intel Architecture 32 bit.
Tryb wirtualny 8086 – wersja trybu chronionego do wykonywania programów w
trybie rzeczywistym
2. Tryb chroniony x86
11/34
1
2
3
4
5
Tryb chroniony procesora 80386 - adresowanie
Intel IA-32 Software Developer;s Manual, August 2007
2. Tryb chroniony x86
12/34
1
2
3
4
5
Tryb chroniony procesora 80386 –
adresowanie model płaski
Intel IA-32 Software Developer;s Manual, August 2007
2. Tryb chroniony x86
13/34
1
2
3
4
5
Tryb chroniony procesora 80386 – zmiana zadań
Intel IA-32 Software Developer;s Manual, August 2007
2. Tryb chroniony x86
14/34
1
2
3
4
5
Architektura IA-32
szybkie spojrzenie
Intel IA-32 Software Developer;s Manual, August 2007
2. Tryb chroniony x86
15/34
1
2
3
4
5
Windows – szablon programu
.model flat, stdcall
option casemap :none
include windows.inc
include user32.inc
include kernel32.inc
includelib user32.lib
includelib kernel32.lib
.data
Tytul_okna byte „moje okno”, 0
Tekst_w_oknie byte „czesc!”, 0
.code
start:
invoke MessageBox, NULL, ADDR Tekst_w_oknie, ADDR Tytul_okna, MB_OK
invoke ExitProcess, NULL
end start
2. Tryb chroniony x86
16/34
1
2
3
4
5
Przerwa na przemyślenia
.model flat, stdcall
option casemap :none
include windows.inc
include user32.inc
include kernel32.inc
includelib user32.lib
includelib kernel32.lib
.data
Tytul_okna byte „moje okno”, 0
Tekst_w_oknie byte „czesc!”, 0
.code
start:
invoke MessageBox, NULL, ADDR Tekst_w_oknie, ADDR Tytul_okna, MB_OK
invoke ExitProcess, NULL
end start
3. Maszyna stanów procesora
17/34
1
2
3
4
5
Maszyna stanów – procesor x86
Intel IA-32 Software Developer;s Manual, August 2007
3. Maszyna stanów procesora
18/34
1
2
3
4
5
Maszyna stanów –
procesor Renesas
SH-2
RENESAS, SH7040 Hardware Manual, 2003
19/34
1
2
3
4
5
4. Układ sterujący
Układ sterujący - synteza
G. De Micheli, Synteza i optymalizacja układów cyfrowych, WNT 1998
20/34
1
2
3
4
5
4. Układ sterujący
Układ sterujący – kod wertykalny/horyzontalny
Kodowanie horyzontalne (poziome)
Kodowanie wertykalne (pionowe)
Kodowanie mieszane
21/34
1
2
3
4
5
4. Układ sterujący
Układ sterujący – struktura hierarchiczna
5. System przerwań + DMA
22/34
1
2
3
4
5
Mechanizm przerwań - PIC
Microchip, PIC16F84A datasheet
org 4h
; - - - - - - - ;czy TMR0 - - - - - - - -
INI_TMR0_MAIN
bcf INTCON, T0IF
; - - - - - - - ;czy RB - - - - - - - - -
INI_RB_MAIN
bcf INTCON, RBIF
; - - - - - - - - - - - - - - - - - - - - - -
retfie
;koniec obslugi vektora przerwan
1)
Zatrzymywane jest wykonanie programu
2)
Odkładana jest wartość rejestru PC na stos
3)
PC przyjmuje nową wartość 04h
4)
Procedura obsługi przerwania kończy się z instr.
RETFIE
WYKONANIE PROCEDURY OBSŁUGI
PRZERWANIA MUSI TRWAĆ KRÓTKO !!!
5. System przerwań + DMA
23/34
1
2
3
4
5
Mechanizm przerwań - podział
Sytuacje wyjątkowe (exception interrupts) – zdarzenia o największym znaczeniu
dla działania programu. Nie można ich odłożyć na później. Na przykład błąd
dzielenia przez zero (divide-by-zero exception) lub przerwanie niemaskowalne
(non-maskable interrupt).
Maskowalne przerwania sprzętowe (event interrupts) – przerwania pochodzące od
urządzeń peryferyjnych. Mogą być blokowane i mogą mieć różne priorytety. Na
przykład przerwanie od układu Timera.
Przerwania programowe (software interrupts) – wywoływane są przez
umieszczenie w programie instrukcji wywołania przerwania (umieszczane przez
programistę). Wykorzystywane czasem do zapewnienia wsparcie sprzętowego dla
priorytetów wykonania pewnych fragmentów kodu lub częściej do implementacji
funkcji systemowych (np.. BIOS).
Pułapki (traps) – stosowane do śledzenia wykonania programu w fazie testowania
(breakpoints).
5. System przerwań + DMA
24/34
1
2
3
4
5
Mechanizm przerwań - ARM
5. System przerwań + DMA
25/34
1
2
3
4
5
Mechanizm przerwań - PC
5. System przerwań + DMA
26/34
1
2
3
4
5
Mechanizm przerwań – Intel 8259A
5. System przerwań + DMA
27/34
1
2
3
4
5
1) Urządzenie zgłasza chęć przerwania na linii IRx
2) Sprawdzane jest zezwolenie na przerwanie i
priorytety przerwań
3) Wystawiany jest sygnał na linii INT
4) Procesor odpowiada sygnałem na linii INTA
5) Procesor po raz drugi daje sygnał na INTA, na który
kontroler wystawia na szynę danych numer
przerwania
6) Numer przerwania jest dla procesora indeksem w
tablicy adresów do funkcji obsługi
7) Jeśli kontroler pracuje w trybie automatycznym, sam
odznacza wykonanie przerwania w rejestrze statusu
przerwań, w innym przypadku program użytkownika
musi to zrobić.
Mechanizm przerwań – Intel 8259A
5. System przerwań + DMA
28/34
1
2
3
4
5
DMA - Direct Memory Access, zysk
1)
Procesor odczytuje bajt z portu IO
i zapamiętuje w akumulatorze
2)
Procesor wpisuje wartość z
akumulatora do pamięci
1)
Bajt wystawiany jest przez urządzenie
i wpisywany bezpośrednio do pamieci.
Szyna adresowa i sterująca
kontrolowana przez kontroler DMA.
5. System przerwań + DMA
29/34
1
2
3
4
5
DMA na komputerze PC
1)
Urządzenie per. gdy ma dane do wysłania wystawia sygnał na DREQx (DMA Request)
2)
Układ DMA wystawia żądanie przejęcia szyny na linie HRQ (Hold Request)
3)
Procesor/kontroler szyny odpowiada zezwoleniem na przejęcie szyny na HLDA (Hold Ack)
4)
Układ DMA informuje urządzenie per. o przejęciu kontroli nad szyną na linii DACKx i
rozpoczyna transmisję (IOR/IOW/MEMR/MEMW/EOP)
5. System przerwań + DMA
30/34
1
2
3
4
5
Tryby pracy kontrolera DMA
„I” (Idle) – tryb spoczynkowy, oczekuje na nadejście żądania transmisji DMA
„S” (Single) – pojedyncze przesłanie. Rejestr adresowy zmniejszany/zwiększany o
jeden.
„B” (Block) – transmisja trwa nieprzerwanie aż do zewnętrznego sygnału EOP od
urządzenia per. Każde przesłanie pomniejsza/powiększa rejestr adresowy o jeden.
„D” (Demand) – podobny do trybu „B”. Pozwala na przerwanie transmisji po
określonej maksymalnej liczby cykli lub wystąpienia żądania transmisji DMA o
wyższym priorytecie.
„C” (Cascade) – kontrolery połączone w kaskadę przekazują informację do
urządzenia Master nie przejmując samodzielnie kontroli na szynie.
„V” (Verify) – tryb diagnostyczny. Wystawia do urządzenia właściwe sygnały ale nie
przejmuje kontroli nad szyną.
5. System przerwań + DMA
31/34
1
2
3
4
5
DMA – połączenie kaskadowe i podłączanie do szyny
5. System przerwań + DMA
32/34
1
2
3
4
5
DTC – Data Transfer Controller,
przykład Hitachi SH-2
5. System przerwań + DMA
33/34
1
2
3
4
5
Polecana literatura
1) E. Wróbel, Asembler, Helion 2004
Rozdział 1-15
2) G. Syck, Turbo Assembler Biblia użytkownika, LT&P 1996
Rozdział 1-7
3) G. De Micheli, Synteza i optymalizacja układów cyfrowych, WNT 1998
Rozdział 4
6) Intel IA-32 Software Developers Manual, August 2007
4) P. Metzger, Anatomia PC, Helion 2001
Rozdział 6, 7
5) R. Pełka, Mikrokontrolery, architektura, programowanie, zastosowania, WKŁ 2000
Rozdział 2
5. System przerwań + DMA
34/34
1
2
3
4
5
KONIEC
dr inż. Mariusz Kapruziak
mkapruziak@wi.ps.pl
pok. 107, tel. 449 55 44