簡體   English   中英

使用C語言更改BIOS設置

[英]Change BIOS settings using the C language

我想知道是否有任何方法可以編寫C程序來更改RAM和GFX卡之間共享的內存量,或者一般如何聯系BIOS設置?

您可以通過I / O端口70h和71h訪問BIOS設置。 (有些芯片組還有72/73或類似的擴展CMOS。)

你用的是什么操作系統? 如果您運行的是Windows,則無法直接從應用程序執行端口I / O,您必須編寫內核模式驅動程序,或使用WinIO等第三方工具包。 在Linux下,您可以使用/ dev / nvram來獲取CMOS設置。 (假設Linux nvram驅動程序支持您的芯片組。否則使用/ dev / port。)

一旦獲得CMOS位,下一個任務就是確定CMOS中的哪個位置對應於視頻存儲器設置。

這是一個(可悲的是不完整的)CMOS內存位置圖: http//ivs.cs.uni-magdeburg.de/~zbrog/asm/cmos.html

CMOS位置的地圖非常特定於主板,BIOS和BIOS rev。 (當添加/刪除新的菜單選項時,CMOS映射可以在BIOS轉速之間切換。)也許您的主板供應商可以為您提供CMOS映射。 他們有生成這種地圖的工具(它是BIOS編譯過程的一部分),但他們可能不願意分享它。

如果沒有映射,還有其他方法可以確定CMOS中的哪些位代表視頻內存大小。 嘗試轉儲具有各種內存大小的CMOS設置,並找出哪些位發生變化。

其他一些細節:

  1. 除了一些“標准”CMOS位之外,其中大多數都是非常依賴平台的,我希望你不打算用它來制作一個通用的應用程序。

  2. CMOS中的某些偏移處有校驗和。 更改CMOS值后,您必須修復校驗和以反映更改。

  3. 更改設置后,它將不會生效到下次重新啟動(當BIOS讀取CMOS設置並初始化芯片組時)。

  4. 這是英特爾芯片組嗎? 英特爾圖形核心具有稱為動態視頻內存技術(DVMT)的神奇功能,可根據運行應用程序的圖形密集程度調整視頻內存使用量。 http://www.intel.com/support/graphics/sb/cs-010488.htm我不確定其他芯片組供應商是否有類似的技術。

  5. 在現代UEFI系統上拋出所有這些,這通常使用BIOS閃存芯片中的非易失性存儲分區進行設置。 (在UEFI系統上填充了一些CMOS位置以實現傳統兼容性。)

簡答:不。

答案很長:不要亂用用戶的BIOS。 這就是為什么沒有API或類似的原因。 我的電腦,我的設置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM