 | |
|
 | |  |
| 03 Wrz 2010 - 04:27 | |  |  |  |  |
N0003c4
| Last Updated : 2010-08-24 23:52:15 (6486 read)
Generator testowego sygnału video dla monitorów VGA
|
|
Jest to
urządzenie zbudowane na bazie płyty głównej komputera PC, które do pracy
potrzebuje jedynie karty grafiki zgodnej ze standardem VGA. Do budowy
została użyta płyta główna od komputerów PC z procesorem Intel 80286
(czytaj: dwa łosie cześć). Być może wielu Czytelników nie widziała czegoś
takiego, więc wygląda to następująco:
Fot.1: Płyta główna
komputera PC z procesorem i80286
Zastosowany tu procesor
i80286 pracujący z zawrotną prędkością, bo był taktowany z generatora
dającego impulsy zegarowe o częstotliwości maksymalnie kilkunastu MHz
(procesor w płycie głównej na fotografii 1 jest taktowany częstotliwością
16MHz), raczej należy uznać na mało udany.
Fot.2: Procesor i80286
(właściwie jego klon w wykonaniu firmy SIEMENS)
Był to
pierwszy model w rodzinie dziadka 8086, który posiadał “ogromną”
przestrzeń adresową – mógł zaadresować aż 16 megabajtów pamięci fizycznej
oraz posiadał mechanizmy ochronny pamięci (czyli wykonywany aktualnie
program/proces nie mógł “zajechać” w zasoby innego programu/procesu).
Znane przysłowie “pierwsze śliwki robaczywki” w pełni sprawdziło się w tym
przypadku. Ten model raczej należy uznać na nieudany. Jednak nie ma tego
złego .... więc i80286 stanowił bazę rozwojową dla procesorów i80386
(czytaj: trzy łosie), który już okazał się rozwiązaniem bardziej
przemyślanym. I80286 jest procesorem w pełni 16-bitowym (inaczej jak
jego trochę kulawy dziadek i8088) i dysponuje 16-bitową szyną danych do
pamięci. Pobierając kod rozkazu do wykonania, procesor odczytywał pamięć w
trybie 16-bitowym. Oznacza to, że program zawarty w pamięci BIOS musi
znajdować się pamięci 16-bitowej. Najczęściej stosowanym rozwiązaniem jest
użycie dwóch układów 8-bitowych pamięci tylko do odczytu umieszczonej na
wspólnej szynie adresowej i szyną danych przyłączonej do części młodszej
oraz starszej szyny danych procesora.
Fot.3: 16-bitowy
BIOS
Aby nie pomylić “połówek programu BIOS” jedna stanowi
część młodszą (LOW) oraz starszą (HIGH). Na płytach głównych jest
oznaczenie jaką część należy włożyć w daną podstawkę. Innym oznaczeniem
występującym jest EVEN (parzysty: odpowiadający części młodszej) oraz, ODD
(nieparzysty: odpowiadający części starszej). Wracając jednak do
tematu, to potrzebna jest jedynie karta kontrolera grafiki zgodna z VGA.
Fot.4:
Karta grafiki VGA
Włączając “komputer” do pracy, procesor
wykonuje program zawarty w pamięci BIOS (nasz BIOS), a jego zadaniem jest
wygenerowanie obrazu zawierającego kolorowe linie pionowe, poziome (krata)
oraz okrągłe dla monitora VGA. Pozwalało to na naprawę, diagnostykę i
strojenie tych monitorów. Generator obrazu nie musiał ładować żadnego
programu z dysku lub dyskietki. Realizował swoją funkcję natychmiast po
włączeniu.
Fot.5: Wygenerowany
obraz kontrolny (jeden z wielu możliwych)
Jeżeli ktoś jest
przekonany, że program do umieszczenia w pamięci BIOS można pisać
wyłącznie w języku asemblera, to muszę zaznaczyć, że jest w błędzie.
Zaprezentowany program jest napisany w języku MODULA 2. Jestem przekonany,
że ten język popularnością nie przebija przykładowo języka C. Porównując
go do innych, to należy stwierdzić, że łączy pewne cechy języka PASCAL i
języka C. Z PASCALA dziedziczy syntaktykę, jest ona podobna (a właściwie
należy uznać, że jest uproszczeniem). Podobnie jak w języku C, nie ma
wbudowanych w język obsługi wejścia/wyjścia, odpowiednie procedury są
dołączane jako biblioteki użytkowe. Pisząc taki program należy mieć na
uwadze, że program będzie pracował bez systemu operacyjnego. Właściwie sam
sobie jest systemem operacyjnym, czyli możliwe jest przejęcie jakiegoś
przerwania na siebie i użycia go: zamiast wywołania instrukcją call,
będzie wywołanie instrukcją int – dziwaczne, ale możliwe. Na programie
spoczywa obowiązek odpowiedniego zainicjowania i obsługi sprzętowej
istotnych zespołów z płyty głównej (kontroler przerwań, kontroler DMA,
układów czasowych itp). Oznacza to również, że nie można używać
interrupt'ów do DOS'a (bo go nie ma – wyłączone są przykładowo funkcje
przydziału pamięci, obsługi plików), interrupt'ów do BIOS'a (bo go nie ma
– wyłączone są funkcje obsługi technicznej dysków, dyskietek, klawiatury,
video..) ... a nie, nie. Video będzie działać, ponieważ BIOS od kontrolera
video jest. Otóż, na kartach kontrolerów video jest BIOS zawierający
obsługę właśnie tej karty. Należy ją jedynie aktywować, w wyniku której
BIOS obsługi video przejmie na siebie przerwanie od “smarowania po
ekranie”. Do włączenia przykładowo trybu graficznego (karta startuje w
trybie alfanumerycznym) można użyć przerwania (int 10hex). Program był
tworzony i testowany pod kontrolą DOS'a jako typowa aplikacja (z
ograniczeniem do minimum powiązania z systemem operacyjnym – jak najmniej
przerwań do systemu). Pewne funkcje są używane, bo o ile załadowanie
programu do pamięci operacyjnej realizowane przez system nie ma odbicia w
kodzie, to zakończenie programu (i usunięcie z pamięci) już występuje.
Dodatkowo, program jest sterowalny z klawiatury (chociażby by przekazać mu
polecenie zakończenia pracy). Po “wychuchaniu” programu, należy go
“odwiązać” od systemu operacyjnego i jakoś zaaplikować do EPROM'a, ale to
już temat na całkiem inne rozważania. |
Wsad EPROM
(low): HEX. Wsad EPROM (high): HEX. Program źródłowo: MOD. Inne PC-towe zabawki: tutaj. | /Gaweł,
19-04-2008/
| | [Wersja do wydruku | Poleć tę stronę przyjacielowi] |
| |
|  |  |  |  | PostNuke | Wsparcie PostNuke | Programiści |  |
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest (c) 2003 by me This web site was made with PostNuke, a web portal system written in PHP. PostNuke jest Darmowym Oprogramowaniem na licencji GNU/GPL. Możesz publikować u siebie nasze newsy za pomocą pliku backend.php
|
|