專(zhuān)利名稱(chēng):一種基于io訪(fǎng)問(wèn)方式的顯卡bios更新方法
技術(shù)領(lǐng)域:
本發(fā)明涉及顯卡研發(fā)領(lǐng)域,特別是一種在計(jì)算機(jī)系統(tǒng)中能簡(jiǎn)單、快速和可靠地更新顯卡BIOS (Basic Input Output System,基本輸入輸出系統(tǒng))的方法。
背景技術(shù):
顯卡BIOS包括傳統(tǒng)的VGA (Video Graphics Array,視頻圖形陣列)BIOS和擴(kuò)展的VBE (VESA BIOS EXTENSION,視頻電子標(biāo)準(zhǔn)協(xié)會(huì)BIOS擴(kuò)展),其包含了顯卡的硬件控制程序,另外還存放有顯卡型號(hào)、規(guī)格、生產(chǎn)廠商、出廠時(shí)間等信息,并在開(kāi)機(jī)時(shí)對(duì)顯卡進(jìn)行初始化。顯卡BIOS在計(jì)算機(jī)系統(tǒng)中發(fā)揮著重要的作用,它影響著顯卡性能的發(fā)揮。與系統(tǒng)BIOS—樣,顯卡BIOS同樣存儲(chǔ)在ROM(只讀存儲(chǔ)器)中。上電自檢(POST)是系統(tǒng)BIOS的一大組成部分,它負(fù)責(zé)上電后對(duì)計(jì)算機(jī)系統(tǒng)所有硬件和寄存器的檢測(cè)和初始化工作,這其中包含將保存在顯卡擴(kuò)展ROM中的顯卡BIOS影射(Shadow)到系統(tǒng)主存中預(yù)留給顯卡BIOS的區(qū)域。參考圖1,本發(fā)明提供了上電自檢影射顯卡擴(kuò)展ROM的流程:使能擴(kuò)展R0M,并將擴(kuò)展ROM映射到系統(tǒng)地址空間中一塊未被占據(jù)的區(qū)域;查找擴(kuò)展ROM中對(duì)應(yīng)的映像(Image)并通過(guò)內(nèi)存訪(fǎng)問(wèn)方式將其復(fù)制到主存預(yù)留區(qū)域(從OCOOOOh到ODFFFFh);去使能(Disable)擴(kuò)展ROM ;調(diào)用初始化函數(shù)。影射顯卡擴(kuò)展ROM后,顯卡BIOS就存在于主存中,相當(dāng)于顯卡擴(kuò)展ROM的“影子”,操作系統(tǒng)和驅(qū)動(dòng)程序通過(guò)直接訪(fǎng)問(wèn)主存而調(diào)用相關(guān)顯卡BIOS函數(shù)。隨著技術(shù)的進(jìn)步和計(jì)算機(jī)軟硬件系統(tǒng)的升級(jí),顯卡中一些不完善的問(wèn)題會(huì)暴露出來(lái),研發(fā)人員需要不斷修改和完善顯卡B10S,隨之更新顯卡BIOS。然而,完成顯卡擴(kuò)展ROM影射后,由于擴(kuò)展ROM已被去使能,且最初分配給擴(kuò)展ROM的內(nèi)存地址空間被操作系統(tǒng)回收,所以應(yīng)用程序不可能通過(guò)常規(guī)內(nèi)存訪(fǎng)問(wèn)方式訪(fǎng)問(wèn)擴(kuò)展ROM。另外,傳統(tǒng)的在DOS下更新顯卡BIOS的流程顯得繁瑣冗長(zhǎng),容易出錯(cuò),導(dǎo)致更新失敗,甚至導(dǎo)致不可修復(fù)的硬件損壞。
發(fā)明內(nèi)容
本發(fā)明的目的是研制一種簡(jiǎn)便高效的顯卡BIOS更新方法,使得顯卡BIOS的更新方便、快速和可靠。本發(fā)明一種基于10訪(fǎng)問(wèn)方式的顯卡BIOS更新方法,其包括以下步驟:
(1)用待更新顯卡或第三方顯卡啟動(dòng)微軟視窗操作系統(tǒng);
(2)根據(jù)廠商識(shí)別號(hào)(VendorID)和設(shè)備識(shí)別號(hào)(Device ID)選擇并定位待更新顯卡;
(3)判斷待更新顯卡PCI(Peripheral Component Interconnect,周邊兀件擴(kuò)展接口)配置空間命令寄存器是否使能10訪(fǎng)問(wèn)。如果待更新顯卡PCI配置空間命令寄存器未使能10訪(fǎng)問(wèn),使能10訪(fǎng)問(wèn);
(4)通過(guò)10訪(fǎng)問(wèn)方式讀出待更新顯卡擴(kuò)展ROM中舊的BIOS;
(5)通過(guò)10訪(fǎng)問(wèn)方式將新的BIOS寫(xiě)入待更新顯卡擴(kuò)展ROM;
(6)通過(guò)10訪(fǎng)問(wèn)方式讀出待更新顯卡擴(kuò)展ROM中新的BIOS并完成校驗(yàn); (7)重啟微軟視窗操作系統(tǒng)。本發(fā)明的顯卡基于PCI或PC1-E總線(xiàn)協(xié)議,且申請(qǐng)了一定數(shù)量的IO地址空間。計(jì)算機(jī)系統(tǒng)上電自檢發(fā)起對(duì)顯卡擴(kuò)展ROM的內(nèi)存訪(fǎng)問(wèn)請(qǐng)求,顯卡擴(kuò)展ROM中的BIOS被映射到計(jì)算機(jī)系統(tǒng)主存,且擴(kuò)展ROM的內(nèi)存地址空間被回收,應(yīng)用程序無(wú)法通過(guò)常規(guī)內(nèi)存訪(fǎng)問(wèn)方式讀寫(xiě)擴(kuò)展ROM;進(jìn)入操作系統(tǒng)后,顯卡BIOS更新程序依據(jù)顯卡申請(qǐng)的IO地址空間發(fā)起對(duì)擴(kuò)展ROM的IO讀寫(xiě)訪(fǎng)問(wèn)請(qǐng)求。另外,顯卡擴(kuò)展ROM的接口采用SPI (Serial PeripheralInterface,串行外圍接口 )協(xié)議,存儲(chǔ)介質(zhì)可為FLASH (閃存)或者EEPROM (電可擦除只讀存儲(chǔ)器)。顯卡將顯卡BIOS更新程序發(fā)起的PCI或PC1-E IO訪(fǎng)問(wèn)請(qǐng)求轉(zhuǎn)換成SPI命令序列并最終形成SPI串行信號(hào),從而完成對(duì)擴(kuò)展ROM的讀寫(xiě)。本發(fā)明一種基于IO訪(fǎng)問(wèn)方式的顯卡BIOS更新方法采取IO訪(fǎng)問(wèn)方式解決了顯卡進(jìn)入操作系統(tǒng)后,擴(kuò)展ROM內(nèi)存地址空間雖已無(wú)效,但仍可以快速、可靠地完成對(duì)顯卡BIOS的更新,縮短了顯卡BIOS的開(kāi)發(fā)周期。此外,本發(fā)明提出的基于微軟視窗操作系統(tǒng)的顯卡BIOS更新方法,操作簡(jiǎn)單、方便。
圖1本發(fā)明計(jì)算機(jī)系統(tǒng)上電自檢顯卡擴(kuò)展ROM影射流程 圖2本發(fā)明基于10訪(fǎng)問(wèn)方式的顯卡BIOS更新方法較佳實(shí)施方式的流程圖。
具體實(shí)施例方式參照?qǐng)D2,本發(fā)明基于10訪(fǎng)問(wèn)方式的顯卡BIOS更新方法較佳實(shí)施方式包括以下步驟:
201:啟動(dòng)微軟視窗操作系統(tǒng)后,顯卡BIOS更新程序首先根據(jù)廠商識(shí)別號(hào)(Vendor ID)和設(shè)備識(shí)別號(hào)(Device ID)選擇并定位顯卡。顯卡BIOS更新程序中設(shè)置了默認(rèn)的廠商識(shí)別號(hào)和設(shè)備識(shí)別號(hào),如果默認(rèn)設(shè)置與待更新顯卡的廠商識(shí)別號(hào)和設(shè)備識(shí)別號(hào)一致,無(wú)需再作選擇;否則需要進(jìn)一步輸入待更新顯卡的廠商識(shí)別號(hào)和設(shè)備識(shí)別號(hào)以定位待更新顯卡。202:判斷PCI配置空間命令寄存器是否已使能10訪(fǎng)問(wèn)。進(jìn)入操作系統(tǒng)后,常規(guī)的擴(kuò)展ROM內(nèi)存訪(fǎng)問(wèn)方式已失效,顯卡BIOS更新程序通過(guò)10訪(fǎng)問(wèn)方式訪(fǎng)問(wèn)擴(kuò)展ROM。操作系統(tǒng)可能已去使能(Disable) 10訪(fǎng)問(wèn),顯卡BIOS更新程序查看命令寄存器(偏移量為04h)的10訪(fǎng)問(wèn)使能位(最低位)是否有效(為1),如10訪(fǎng)問(wèn)使能位為1,無(wú)需修改;否則,修改此位為I。203:備份待更新顯卡舊的BIOS。準(zhǔn)備更新顯卡BIOS之前,對(duì)待更新顯卡BIOS作備份,以防顯卡BIOS更新失敗。備份顯卡BIOS時(shí),首先獲取待更新顯卡申請(qǐng)的相關(guān)10地址空間,再通過(guò)10訪(fǎng)問(wèn)方式讀出擴(kuò)展ROM中舊的BIOS并保存到文件。204:從新的BIOS文件讀入新的BIOS并寫(xiě)入待更新顯卡擴(kuò)展ROM。寫(xiě)入擴(kuò)展ROM時(shí),首先獲取待更新顯卡申請(qǐng)的相關(guān)10地址空間,再通過(guò)10訪(fǎng)問(wèn)方式將新的BIOS寫(xiě)入擴(kuò)展匪。205:讀出待更新顯卡新的BIOS并完成校驗(yàn)。首先,通過(guò)10訪(fǎng)問(wèn)方式讀出擴(kuò)展ROM中已更新的BIOS并將它保存到文件中,再將此文件與待更新顯卡新的BIOS文件作比對(duì),如比對(duì)結(jié)果匹配則表示顯卡BIOS更新成功,結(jié)束更新程序,重啟操作系統(tǒng)即可使用新的顯卡BIOS;否則,重復(fù)步驟204和205直到更新成功。如果因?yàn)榉侨藶榈囊蛩?如斷電)導(dǎo)致待顯卡BIOS更新失敗,借助第三方的獨(dú)立顯卡或集成顯卡完成操作系統(tǒng)的啟動(dòng);進(jìn)入操作系統(tǒng)后,仍按照?qǐng)D2所示步驟完成對(duì)待更新顯卡BIOS的恢復(fù)或更新。
權(quán)利要求
1.一種基于IO訪(fǎng)問(wèn)方式的顯卡BIOS更新方法,其特征在于:包括以下步驟: (1)用待更新顯卡或第三方顯卡啟動(dòng)微軟視窗操作系統(tǒng); (2)根據(jù)廠商識(shí)別號(hào)和設(shè)備識(shí)別號(hào)選擇并定位待更新顯卡; (3)判斷待更新顯卡PCI配置空間命令寄存器是否使能IO訪(fǎng)問(wèn);如果待更新顯卡PCI配置空間命令寄存器未使能IO訪(fǎng)問(wèn),使能IO訪(fǎng)問(wèn); (4)讀出待更新顯卡擴(kuò)展ROM中舊的BIOS; (5)將新的BIOS寫(xiě)入待更新顯卡擴(kuò)展ROM; (6)讀出待更新顯卡擴(kuò)展ROM中新的BIOS并完成校驗(yàn); (7)重啟微軟視窗操作系統(tǒng)。
2.如權(quán)利要求1所述的基于IO訪(fǎng)問(wèn)方式的顯卡BIOS更新方法,其特征在于:所述的讀寫(xiě)擴(kuò)展ROM通過(guò)10訪(fǎng)問(wèn)方式完成。
3.如權(quán)利要求1所述的基于10訪(fǎng)問(wèn)方式的顯卡BIOS更新方法,其特征在于:所述的顯卡基于PCI或PC1-E總線(xiàn)協(xié)議,且申請(qǐng)了一定數(shù)量的10地址空間。
4.如權(quán)利要求1所述的基于10訪(fǎng)問(wèn)方式的顯卡BIOS更新方法,其特征在于:所述的擴(kuò)展ROM的存儲(chǔ)介質(zhì)可為FLASH或者EEPR0M,接口采用SPI協(xié)議。
全文摘要
一種基于IO訪(fǎng)問(wèn)方式的顯卡BIOS更新方法,包括啟動(dòng)微軟視窗操作系統(tǒng)并執(zhí)行更新程序;根據(jù)廠商識(shí)別號(hào)和設(shè)備識(shí)別號(hào)選擇并定位待更新顯卡;判斷待更新顯卡PCI配置空間命令寄存器是否使能IO訪(fǎng)問(wèn);通過(guò)IO訪(fǎng)問(wèn)方式讀出待更新顯卡擴(kuò)展ROM中舊的BIOS;通過(guò)IO訪(fǎng)問(wèn)方式將新的BIOS寫(xiě)入待更新顯卡擴(kuò)展ROM;通過(guò)IO訪(fǎng)問(wèn)方式讀出待更新顯卡擴(kuò)展ROM中新的BIOS并完成校驗(yàn);退出更新程序并重啟微軟視窗操作系統(tǒng)。上述基于IO訪(fǎng)問(wèn)方式的顯卡BIOS更新方法可方便、快速和可靠地完成對(duì)顯卡BIOS的更新。
文檔編號(hào)G06F9/445GK103106161SQ201210561699
公開(kāi)日2013年5月15日 申請(qǐng)日期2012年12月22日 優(yōu)先權(quán)日2012年12月22日
發(fā)明者高齊黃亮, 張義偉, 秦信剛, 高齊 申請(qǐng)人:中國(guó)船舶重工集團(tuán)公司第七0九研究所