2009-11-21 15 views
7

Zastanawiam się, czy istnieje jakiś sposób, aby napisać program w języku C, aby zmienić ilość pamięci współdzielonej między pamięcią RAM i kartą GFX, lub w ogóle, w jaki sposób skontaktować się z Ustawienia BIOS?Zmiana ustawień BIOS przy użyciu języka C

+0

http://www.microsoft.com/communities/newsgroups/en-us/default.aspx?dg=microsoft.public.vc .language & tid = f5c02216-01e2-46d4-8c99-ac6a5981313c & cat = & lang = & cr = & sloc = & p = 1 – Xinus

+1

Myślę, że to nie jest dobre, aby to zrobić, "nie rób tego" –

+0

Potencjalnie niebezpieczne dla zdrowia maszyn. Nie rób tego. – ty812

Odpowiedz

10

Krótka odpowiedź: Nie

Długa odpowiedź: Nie zadzieraj z BIOS użytkownika. Istnieje powód, dla którego nie ma API ani podobnych rozwiązań. Mój komputer, moje ustawienia.

13

Dostęp do ustawień BIOS można uzyskać poprzez port I/O 70h i 71h. (Niektóre chipsety mają także rozszerzoną CMOS w wersji 72/73 lub podobnej).

Z jakiego systemu operacyjnego korzystasz? Jeśli korzystasz z systemu Windows, nie będziesz w stanie wykonywać operacji wejścia/wyjścia portu bezpośrednio z aplikacji, będziesz musiał napisać sterownik trybu jądra lub użyć zestawu narzędzi innej firmy, np. WinIO. Pod Linuksem możesz użyć/dev/nvram, aby uzyskać ustawienia CMOS. (Zakładając, że sterownik nvram dla systemu Linux ma obsługę twojego chipsetu, w przeciwnym razie użyj/dev/port.)

Po uzyskaniu bitów CMOS, następnym zadaniem będzie ustalenie, która lokalizacja w CMOS odpowiada ustawieniu pamięci wideo.

Oto (żałośnie niekompletne) mapa miejsc w pamięci CMOS: http://ivs.cs.uni-magdeburg.de/~zbrog/asm/cmos.html

Mapa lokalizacji CMOS jest bardzo charakterystyczne dla płyty głównej, BIOS oraz BIOS rev. (Mapa CMOS może zmieniać się pomiędzy obrotami BIOS-u, gdy nowe opcje menu są dodawane/usuwane.) Może twój dostawca płyty głównej może dostarczyć mapę CMOS. Mają narzędzia do generowania takiej mapy (jest to część procesu kompilacji BIOS-u), ale mogą nie być skłonni do jej udostępnienia.

Bez mapy istnieją inne metody określania, które bity w pamięci CMOS reprezentują rozmiar pamięci wideo. Spróbuj wyrzucić ustawienia CMOS z różnymi rozmiarami pamięci i dowiedzieć się, które bity się zmieniają.

Niektóre inne szczegóły:

  1. Poza kilkoma bitami „standardowych” CMOS, większość z nich są bardzo zależne od platformy, mam nadzieję, że nie planują na złożenie aplikacji ogólnego przeznaczenia z tego .

  2. Istnieją sumy kontrolne w niektórych przesunięciach w CMOS. Po zmianie wartości CMOS, musisz naprawić sumę kontrolną, aby odzwierciedlić zmiany.

  3. Po zmianie ustawienia nie zostanie zastosowany do następnego ponownego uruchomienia (gdy BIOS odczytuje ustawienia CMOS i inicjalizuje mikroukład).

  4. Czy to jest mikroukład Intela? Rdzenie graficzne Intel posiadają magiczną funkcję o nazwie Dynamic Video Memory Technology (DVMT), która modyfikuje wykorzystanie pamięci wideo w oparciu o intensywność działania aplikacji. http://www.intel.com/support/graphics/sb/cs-010488.htm Nie jestem pewien, czy inni producenci chipsetów mają podobną technologię.

  5. Przerzuć to wszystko przez okno na nowoczesny system UEFI, który zazwyczaj używa nieulotnej partycji pamięci w układzie BIOS BIOS do ustawień. (Niektóre lokalizacje CMOS są wypełniane dla kompatybilności starszych w systemie UEFI.)

Powiązane problemy