Czy BIOS ma jakieś ogólne „sterowniki”

22

W jaki sposób BIOS kontroluje urządzenia we / wy bez żadnych sterowników?

Na przykład, w jaki sposób wyświetlany jest obraz podczas uruchamiania komputera, jeśli BIOS nie ma żadnych sterowników karty graficznej.

Czy istnieje jakiś rodzaj ogólnego sterownika, który jest standardem we wszystkich systemach BIOS i sprzęcie, który pozwala BIOSowi wykonywać podstawowe funkcje bez względu na zainstalowany sprzęt.

Każda pomoc będzie mile widziana.

Dzięki.

RJSmith92
źródło
Czy masz jakiś konkretny problem, który próbujesz rozwiązać? Jeśli pytasz, czy jest BIOS, używa uniwersalnego napędu ogólnego - tak nie jest
Ramhound
Myślę, że istnieje minimalny standardowy format wyjściowy (vesa), a karta graficzna ma swoje własne bios. Poza tym nie jest tak, jakby Twoje oprogramowanie bios / uefi było renderowane w czasie rzeczywistym w 3D.
Journeyman Geek
5
@Ramhound To nie jest problem, który próbuję rozwiązać, to tylko ogólne pytanie. Niezależnie od tego, jaką kartę graficzną umieścisz w systemie, nadal widzisz problem podczas uruchamiania, więc czy jest jakiś standardowy interfejs, który jest zaprogramowany w BIOS-ie?
RJSmith92
4
Do you have a specific problem your trying to solve? Tak, próbują rozwiązać problem znalezienia odpowiedzi na zadane pytanie. ¬_¬
Synetech
Powiązane: superuser.com/questions/357328/…
Russell Borogove

Odpowiedzi:

13

Czy BIOS ma jakieś ogólne „sterowniki”

W jaki sposób BIOS kontroluje urządzenia we / wy bez żadnych sterowników?

Standardy. Wszystkie komponenty implementują podstawowy interfejs, a BIOS jest zaprogramowany do korzystania z niego. Oczywiście ponieważ jest to podstawowy interfejs (to właśnie oznacza „B” w BIOS-ie), nie może on w pełni wykorzystać pełnych możliwości sprzętu; oprogramowanie należy wdrożyć za pośrednictwem sterowników, które mają bezpośredni dostęp do sprzętu.

Pierwotnie producenci systemu BIOS stworzyli zestaw interfejsów API, których urządzenia powinny używać, jeśli chcą być kompatybilne. Zrobili to za pomocą „ przerwań ”, co jest sposobem, w jaki urządzenie może, no cóż, przerwać program, aby poinformować, że coś się wydarzyło i na odwrót.

Na przykład, w jaki sposób wyświetlany jest obraz podczas uruchamiania komputera, jeśli BIOS nie ma żadnych sterowników karty graficznej.

W przypadku wyświetlacza przed uruchomieniem oprogramowanie układowe karty wideo implementuje VESA (Video Electronics Standards Association), który jest standardem stworzonym w celu uproszczenia dostępu do sprzętu wyświetlającego. BIOS wie, jak uzyskać dostęp do sprzętu wideo za pomocą standardowych funkcji. Jest nieco podobny do tego, w jaki sposób DirectX został zaimplementowany jako interfejs API wyższego poziomu do sprzętu, aby programiści nie musieli uwzględniać każdej konfiguracji sprzętowej.

Czy istnieje jakiś rodzaj ogólnego sterownika, który wyróżnia się we wszystkich systemach BIOS i sprzęcie, który pozwala BIOSowi wykonywać podstawowe funkcje bez względu na zainstalowany sprzęt.

Raczej. To nie jest sterownik, ale standardowy interfejs API ; zestaw funkcji programistycznych, których można używać do wykonywania podstawowych czynności, takich jak inicjalizacja urządzenia lub danych wejściowych i wyjściowych.

Jeśli producenci chcą sprzedawać swoje produkty, będą musieli upewnić się, że przynajmniej implementują standardowe interfejsy API, aby były kompatybilne. W ten sposób system może wykryć sprzęt, aw przypadku urządzeń o krytycznym znaczeniu dla rozruchu może uzyskać do nich dostęp na poziomie podstawowym, dopóki nie zostanie załadowany sterownik oprogramowania, który wie, jak uzyskać do nich pełny dostęp.

Synetech
źródło
Dzięki, świetna odpowiedź. Więc wywołania przerwania systemu BIOS (z których systemów DOS używałeś) są nadal używane aż do załadowania systemu operacyjnego?
RJSmith92
1
Tak, BIOS zapewnia szereg różnych przerwań, których można użyć (choć nie wszystkie BIOSy zapewniają wszystkie funkcje). Systemy DOS z nich korzystały, ale DOS stworzył również INT 21 i 2F, aby zapewnić przerwania programowe wyższego poziomu, aby coś zrobić (bardzo tęsknię za programowaniem DOS / asemblera sprzętowego). Faktem jest, że zawsze będzie potrzebna podstawowa funkcjonalność niskiego poziomu wymagana do zapewnienia zgodności, nawet z EFI i wszystkim innym, co będzie w przyszłości. Może przybierać różne formy, ale bez jakiegoś wspólnego języka system nie mógłby używać urządzeń.
Synetech
Rozumiem, że wywołania przerwań są nadal używane przez jądro i usługi na poziomie jądra. Czy to nie prawda?
BlueRaja - Danny Pflughoeft
@BlueRaja, może podczas rozruchu (potrzebują jakiegoś sposobu dostępu do sprzętu), ale po uruchomieniu procedur wykrywania używają odpowiednich sterowników (które są jedynie programami niskiego poziomu), aby bezpośrednio uzyskać dostęp do sprzętu. Nawet jądro potrzebuje bezpośredniego dostępu, aby w pełni wykorzystać możliwości sprzętu, na przykład korzystając z zaawansowanych funkcji procesora lub optymalizując użycie kontrolera pamięci i mikroukładu.
Synetech
22

BIOS w komputerze miał pełnić podobną funkcję jak BIOS w 8-bitowym systemie CP / M, popularnym zanim komputer przejął kontrolę w połowie lat 80-tych. BIOS miał zawierać minimalny bootloader i zależne od sprzętu procedury niskiego poziomu do wprowadzania i wysyłania danych do kilku urządzeń (ekran, dysk, taśma, port COM). Wiedza na ten temat została wbudowana w ROM - nie jest potrzebny sterownik i oczywiście żaden dodatkowy sprzęt nie jest obsługiwany przez ROM. (Rzeczy takie jak zarządzanie energią i ACPI pojawiły się znacznie później, w latach 90-tych, po tym, jak PC stał się wszechobecną platformą).

(„System plików” CP / M znajdował się w składniku załadowanym z dysku o nazwie BDOS - podobnie znajomość systemu plików FAT i jego interfejsów znajduje się w (przynajmniej jednym) dwóch ukrytych plikach MSDOS.SYS lub IO.SYS - nie jest częścią BIOS ROM.)

Jednak ... BIOS komputera, w przeciwieństwie do CP / M, wspierał pojęcie „ROM opcji”, które mogą być zawarte na karcie rozszerzeń. Tak więc istniał przynajmniej minimalny mechanizm rozszerzania BIOS-u. Karty graficzne zaczynające się od CGA (MDA, poprzednik CGA, prawdopodobnie też to zrobiły) miałyby opcjonalną pamięć ROM, która rozszerzyła lub dodała funkcje I / O do interfejsu BIOS. (Właśnie dlatego widzisz komunikat NVidia przed uruchomieniem BIOS-u.) Tak samo jak twarde kontrolery i karty SCSI. Wszystko to nadal działa. Wiele starszych kart sieciowych ma gniazdo na bootowalną pamięć ROM.

Należy również pamiętać, że producenci klonów komputerowych, którzy powstali w latach 80-tych, bardzo szybko postanowili nie zapewniać tylko kompatybilnego interfejsu BIOS, ale ostatecznie musieli skopiować platformę PC jako całość, w tym cały sprzęt niskiego poziomu, taki jak układ czasowy , kontroler przerwań itp. (Było to stosunkowo łatwe, ponieważ niewiele z tego było własnością IBM.) Było tak, ponieważ BIOS był powolny, a programiści uzyskiwali bezpośredni dostęp do sprzętu, szczególnie w przypadku gier.

Tak więc pomiędzy opcjonalnymi ROM-ami a tym konsensem standardowego sprzętu, który tworzy platformę PC, a także faktem, że była utrzymywana wstecznie kompatybilna podczas ewolucji komputera, coś, co chce korzystać z wyświetlacza bez sterownika, może:

  • użyj standardowych interfejsów BIOS-u, które mogą być „zaczepione” przez opcjonalną pamięć ROM w sprzęcie wideo
  • lub poczytaj założenia dotyczące tego, jaki sprzęt znajduje się w systemie i uzyskaj bezpośredni dostęp do podstawowego sprzętu

Cały sprzęt do wyświetlania na komputerze nadal działa w trybie „kompatybilnym z VGA” po uruchomieniu. Oryginalny adapter IBM VGA miał tryby kompatybilne z wcześniejszymi kartami EGA, CGA i MDA. Wszystko to oznacza, że ​​coś uruchomionego z BIOS-u lub poza systemem operacyjnym może założyć, że nadal może odczytywać i zapisywać tę samą pamięć podłączoną do wyświetlacza, jak w 1985 r., W drodze konwencji.

LawrenceC
źródło
Dziękuję za odpowiedź. Czy BIOS na kartach rozszerzeń musi być zgodny z jakimś standardem, aby każdy bios płyty głównej mógł z niego korzystać?
RJSmith92,
1
Nie jestem pewien, czy to tyle samo, co standard, czy długoletnia konwencja, ale coś takiego. Myślę, że specyfikacja rozruchu systemu BIOS (BBS) jest tutaj formalnym standardem. en.wikipedia.org/wiki/Option_ROM
LawrenceC
Tak, tego właśnie szukałem.
Jeszcze