Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Tryby HiRes bez BIOSu. Napisanie sterownika karty graficznej

pvc 10 Jul 2007 23:42 1278 6
  • #1
    pvc
    Level 13  
    Witam!
    Czy istnieje jakiś sposób na napisanie(w czystym ASM) sterownika karty graficznej, który dla większości kart graficznych pozwalał na użycie większej rozdzielczości i głębii kolorów niż standardowy tryb VGA 640x480x4. Chodzi mi o jakieś dokumentacje(może jest jakiś standard), dzięki którym było by to możliwe bez użycia funkcji BIOSu(tym bardziej bibliotek jakiegokolwiek systemu operacyjnego) tzn. używając tylko pamięci i portów. Sterownik nie musiałby wspierać jakiegokolwiek przyspieszenia(sprzętowego) bo ma on tylko na celu umożliwienie wyświetlenie zwykłego obrazu 2D. Jeżeli takowy standard nie istnieje to byłbym wdzięczny za podanie jakiegokolwiek źródła informacji na temat obsługi znanych kart graficznych(mam nadzieje unikąć analizy kodu linuxa bo poprostu ten asembler AT&T wprowadza DUUUŻO zamieszania a poza tym sterowniki te używają kodu z jądra linuxa[do których nie mam dostępu bo poprostu części z nich nie chce a części nie potrafie zaprogramować]).

    EDIT: Zapomniałem dodać, że chodzi mi o ASM procesora x86 w komputerze PC.
  • #2
    tzok
    Moderator of Cars
    Poszukaj informacji na temat trybów/specyfikacji VESA, większość (jak nie wszystkie) kart obsługuje te tryby i właśnie z tych trybów korzysta linuksowy x-serwer w przypadku braku sterowników karty graficznej.
  • #3
    pvc
    Level 13  
    Nie wiem czy dobrze myslę(jak się myle to mnie popraw) ale VESA opiera się chyba o przerwanie int 0x10 BIOSu a mnie chodzi o to żeby nie trzeba było sie co chwile przełączać się pomiędzy trybem rzeczywistym i chronionym(w końcu BIOS jest napisany dla trybu rzeczywistego a sterownik ma być w całości dla trybu chronionego) bo dużo czasu to zajmuje i można się przy tym zakrecić.
  • #4
    tzok
    Moderator of Cars
    ...nie bardzo masz wybór, chyba że ograniczysz się do obsługi tylko kilku najpopularniejszych GPU. Zarówno Linux jak i Windows XP korzystają z trybu VESA przy braku sterowników. Może zainteresuje Cię ta strona:
    http://www.geocities.com/bearwindows/vbemp.htm
  • #5
    pvc
    Level 13  
    Dzięki za linka :) (może sie przydać). Właśnie wpadłem na dosyć ciekawy pomysł co do tego nieszczęsnego int 0x10. W trybie rzeczywistym na początku pamięci znajdują się wektory przerwań(więc wektor do int 0x10 też tam jest). Gdyby zacząć deasemblować od miejsca, w którym zaczyna się podprogram obsługi tegoż przerwania i przepisać to co wyjdzie w taki sposób żeby działało w trybie chronionym(czyli zrobić 32 bitową wersję przerwania int 0x10). Wydaje mi się że to by mogło zadziałać. Tylko pojawia się jeden problem... Skąd brać obrazy ROMów kart graficznych? :/
  • #6
    tzok
    Moderator of Cars
    To akurat nie jest wielki problem, zwłaszcza jeśli chodzi o karty nVidia, są bez problemu dostępne obrazy BIOSów do kart.
  • #7
    lelekx
    Level 30  
    A może inaczej? Dla linuksa jest kilka sterowników kart graficznych - podejrzyj sobie źródła, może znajdziesz informacje o inicjowaniu trybów graficznych, konfiguracji pamięci wideo, etc.
    Niestety bez VESA taki pseudo reverse-engineering będziesz musiał przeprowadzić dla każdej karty graficznej, która potencjalnie mogłaby zostać użyta.