專利名稱:一種在系統(tǒng)引導(dǎo)階段訪問硬件設(shè)備的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機(jī)領(lǐng)域,具體涉及計算機(jī)系統(tǒng)引導(dǎo)階段訪問硬件設(shè)備的方法。
背景技術(shù):
一般來說,計算機(jī)啟動過程包括三個主要階段
a)BIOS (Basic Input Output System,基本輸入輸出系統(tǒng))階段;b)MBR (Master Boot Record,主引導(dǎo)記錄)引導(dǎo)操作系統(tǒng)階段;
c)操作運行階段。其中,BIOS階段可以通過編寫MA (Memory absent,內(nèi)存為加載)驅(qū)動以及MP(Memory present,內(nèi)存已加載)驅(qū)動實現(xiàn)與硬件設(shè)備(如TCM (Trusted CryptographyModule,可信計算模塊)芯片)的通訊。在操作系統(tǒng)運行階段可以通過編寫系統(tǒng)級驅(qū)動程序?qū)崿F(xiàn)與TCM芯片的通訊。當(dāng)計算機(jī)啟動過程處于MBR引導(dǎo)操作系統(tǒng)階段時,BIOS已經(jīng)完成POST (Power Onself Test,上電自檢)動作,并交出控制權(quán),此時操作系統(tǒng)還沒有加載。如果在此階段需要訪問TCM芯片,由于還未完成進(jìn)入操作系統(tǒng)動作,TCM芯片的系統(tǒng)級驅(qū)動可能還未加載,同時BIOS已失去對計算機(jī)的控制權(quán),BIOS驅(qū)動也無法調(diào)用。為滿足此階段訪問TCM芯片的需求,常見的解決方法是,利用中斷向量表中未被使用的中斷號來進(jìn)行定義符合TCM芯片需要的功能,同時需要在BIOS中實現(xiàn)相應(yīng)中斷服務(wù)功能。利用中斷方式雖然能夠達(dá)到引導(dǎo)階段與TCM芯片通訊的目的,但是,此方法也存在許多弊端
1)需要搶占未被使用的中斷號,并推之成為共知標(biāo)準(zhǔn);
2)需要在BIOS內(nèi)進(jìn)行開發(fā)調(diào)試工作。對于選定中斷號并使之成為標(biāo)準(zhǔn),這需要諸多軟硬件廠商共同達(dá)成一致。對于BIOS內(nèi)的中斷服務(wù)函數(shù)實現(xiàn)需要有專業(yè)的BIOS開發(fā)人員進(jìn)行開發(fā),并且需要在計算機(jī)出廠時內(nèi)置新功能的BI0S,對于無該功能BIOS的計算機(jī)來說,則無法在MBR引導(dǎo)操作系統(tǒng)階段與TCM芯片通訊。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是提供一種在系統(tǒng)引導(dǎo)階段訪問硬件設(shè)備的方法,以避免搶占未被使用的中斷號并推之成為共知標(biāo)準(zhǔn)所帯來的麻煩以及對BIOS的修改。本發(fā)明解決上述技術(shù)問題的技術(shù)方案如下一種在系統(tǒng)引導(dǎo)階段訪問硬件設(shè)備的方法,包括通過直接訪問所述硬件設(shè)備的物理內(nèi)存地址向所述硬件設(shè)備發(fā)送數(shù)據(jù);通過直接訪問所述硬件設(shè)備的物理內(nèi)存地址從所述硬件設(shè)備讀取數(shù)據(jù)。本發(fā)明的有益效果是在系統(tǒng)引導(dǎo)階段,雖然沒有BIOS驅(qū)動也沒有系統(tǒng)級驅(qū)動,但所述硬件設(shè)備所使用的物理內(nèi)存地址是固定的,通過直接訪問所述硬件設(shè)備映射的物理內(nèi)存地址,通過對所述硬件設(shè)備特定寄存器的操作完成硬件設(shè)備的訪問,從而在不需要系統(tǒng)中斷資源,也不需要修改、更新BIOS的情況下實現(xiàn)了系統(tǒng)引導(dǎo)階段與硬件設(shè)備進(jìn)行通τΗ ο在上述技術(shù)方案的基礎(chǔ)上,本發(fā)明還可以做如下改進(jìn)。進(jìn)ー步,所述方法通過訪問映射到所述硬件設(shè)備對應(yīng)的內(nèi)存地址空間上的該硬件設(shè)備的寄存器的數(shù)據(jù)內(nèi)容,對所述硬件設(shè)備收發(fā)數(shù)據(jù)狀態(tài)進(jìn)行判斷;通過讀/寫所述硬件設(shè)備對應(yīng)的內(nèi)存地址空間上的該硬件設(shè)備的數(shù)據(jù)交換寄存器,進(jìn)行數(shù)據(jù)的讀/寫。進(jìn)ー步,在所述發(fā)送數(shù)據(jù)和讀取數(shù)據(jù)之前還包括,在所述系統(tǒng)引導(dǎo)階段將RealMode模式(小實模式)切換為Big Real Mode模式(大實模式)的模式切換過程。采用上述進(jìn)ー步方案的有益效果是,擴(kuò)展了程序訪問物理內(nèi)存地址的范圍。
進(jìn)ー步,將Real Mode模式切換為Big Real Mode模式的模式切換過程包括關(guān)閉系統(tǒng)中斷;保存IDTR寄存器(當(dāng)前運行環(huán)境信息);加載GDTR寄存器;保存寄存器;加載所述IDTR ;開中斷。采用上述進(jìn)ー步方案的有益效果是,實現(xiàn)了從Real Mode模式到Big Real Mode模式的切換。進(jìn)ー步,所述硬件設(shè)備為TCM芯片。進(jìn)ー步,所述TCM芯片的物理內(nèi)存地址為0xFED4000至0xFED44FFF。進(jìn)ー步,所述方法通過匯編語言和/或C語言編寫成獨立的用于硬件設(shè)備訪問的程序模塊,并集成于MBR引導(dǎo)程序中。采用上述進(jìn)ー步方案的有益效果是,將本方法設(shè)計成ー個獨立的程序模塊,可以靈活、方便地集成到MBR引導(dǎo)程序中,大大降低了本方法的使用難度。本發(fā)明所提供的方法編寫成獨立系統(tǒng)引導(dǎo)級的硬件設(shè)備訪問的程序模塊,在程序模塊內(nèi)實現(xiàn)與硬件設(shè)備的通訊,本方法功能獨立,結(jié)構(gòu)簡潔,易于調(diào)用,不需修改BI0S,也不需要占用系統(tǒng)中斷號就能達(dá)到系統(tǒng)引導(dǎo)階段訪問硬件設(shè)備的需求。
圖I為本發(fā)明中的系統(tǒng)引導(dǎo)階段TCM芯片訪問模塊調(diào)用流程 圖2為本發(fā)明中的模式切換流程 圖3為本發(fā)明中在小實模式下數(shù)據(jù)收發(fā)過程 圖4為本發(fā)明中與TCM芯片交互完成數(shù)據(jù)收發(fā)的過程圖。
具體實施例方式以下結(jié)合附圖對本發(fā)明的原理和特征進(jìn)行描述,所舉實例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。下面以TCM芯片為例對本發(fā)明的在系統(tǒng)引導(dǎo)階段訪問硬件設(shè)備的方法進(jìn)行進(jìn)一步描述。本方法的實現(xiàn)形態(tài)
采用匯編語言和/或C語言進(jìn)行編寫,編譯成獨立的16位庫模塊,提供統(tǒng)ー的調(diào)接ロ。本方法的使用流程
如圖I所示,在編寫MBR弓丨導(dǎo)程序時,將引導(dǎo)階段TCM芯片訪問的程序模塊(上述16位庫模塊)編寫進(jìn)MBR引導(dǎo)程序中,如果需要與TCM芯片進(jìn)行通訊,MBR引導(dǎo)程序直接使用該TCM芯片訪問的程序模塊來完成。由于上述模塊是ー個獨立的庫模塊,可靈活、方便地集成到調(diào)用程序內(nèi),大大地降低了使用難度。本方法的實現(xiàn)原理
TCM芯片使用的固定內(nèi)存地址是0xFED4000至0xFED44FFF,在系統(tǒng)引導(dǎo)階段雖然沒有BIOS驅(qū)動也沒有系統(tǒng)級驅(qū)動,但可以通過直接訪問TCM芯片映射的物理內(nèi)存地址,通過對TCM芯片特定寄存器的操作完成TCM芯片的功能訪問。本發(fā)明的方法,通過直接訪問TCM芯片的物理內(nèi)存地址向TCM芯片發(fā)送數(shù)據(jù),并通過直接訪問TCM芯片的物理內(nèi)存地址從TCM芯片讀取數(shù)據(jù)。該TCM芯片訪問程序模塊的主要功能包括三方面系統(tǒng)模式切換、向TCM芯片發(fā)送數(shù)據(jù)、從TCM芯片讀取數(shù)據(jù)。一.系統(tǒng)模式切換
由于在系統(tǒng)引導(dǎo)階段處于Real Mode (小實模式)在這種模式下,程序只能訪問到IM以下的內(nèi)存地址范圍,因此需要切換到Big Real Mode (大實模式)才能訪問0xFED4000至0xFED44FFF地址范圍。模式切換流程如圖2所示,包括
第一步關(guān)閉系統(tǒng)中斷;
第二步保存IDTR寄存器(當(dāng)前運行環(huán)境信息);
第三步加載GDTR寄存器;
第四步加載剛才所保存的IDTR寄存器;
第五歩開啟系統(tǒng)中斷。ニ.收/發(fā)數(shù)據(jù)
TCM芯片規(guī)范定義了通訊數(shù)據(jù)包的格式及交互協(xié)議,圖3描述在小實模式數(shù)據(jù)收發(fā)過程,該過程如下
第一歩,首先按上面所述方法,進(jìn)入Big Real Mode ;
第二步,在Big Real Mode下進(jìn)行TCM芯片交互(交互過程見圖4);
第三步,退出Big Real Mode。圖4描述了與TCM芯片交互完成數(shù)據(jù)收發(fā)的過程,該過程包括判斷TCM芯片狀態(tài);進(jìn)行TCM芯片的數(shù)據(jù)收/發(fā);設(shè)置TCM芯片狀態(tài)。在圖4的與TCM芯片交互完成數(shù)據(jù)收發(fā)的過程中,對TCM芯片狀態(tài)的判斷是通過訪問映射到0xFED4000至0xFED44FFF內(nèi)存地址空間上的特定TCM芯片寄存器的數(shù)據(jù)內(nèi)容來完成,數(shù)據(jù)的接收/發(fā)送是通過讀取/寫入0xFED4000至0xFED44FFF內(nèi)存地址空間上的TCM芯片數(shù)據(jù)交換寄存來完成。以上僅是以TCM芯片為例,對本發(fā)明的方法進(jìn)行了具體的描述,該方法不僅局限于TCM芯片在系統(tǒng)引導(dǎo)階段進(jìn)行訪問,對于其他硬件設(shè)備同樣可以采用本發(fā)明的方法進(jìn)行訪問。以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種在系統(tǒng)引導(dǎo)階段訪問硬件設(shè)備的方法,其特征在于,所述方法包括通過直接訪問所述硬件設(shè)備的物理內(nèi)存地址向所述硬件設(shè)備發(fā)送數(shù)據(jù);通過直接訪問所述硬件設(shè)備的物理內(nèi)存地址從所述硬件設(shè)備讀取數(shù)據(jù)。
2.根據(jù)權(quán)利要求I所述的在系統(tǒng)引導(dǎo)階段訪問硬件設(shè)備的方法,其特征在于通過訪問映射到所述硬件設(shè)備對應(yīng)的內(nèi)存地址空間上的該硬件設(shè)備的寄存器的數(shù)據(jù)內(nèi)容,對所述硬件設(shè)備收發(fā)數(shù)據(jù)的狀態(tài)進(jìn)行判斷;通過讀/寫所述硬件設(shè)備對應(yīng)的內(nèi)存地址空間上的該硬件設(shè)備的數(shù)據(jù)交換寄存器,進(jìn)行數(shù)據(jù)的接收/發(fā)送。
3.根據(jù)權(quán)利要求I所述的在系統(tǒng)引導(dǎo)階段訪問硬件設(shè)備的方法,其特征在于在所述發(fā)送數(shù)據(jù)和讀取數(shù)據(jù)之前還包括,在所述系統(tǒng)引導(dǎo)階段將Real Mode模式切換為Big RealMode模式的模式切換過程。
4.根據(jù)權(quán)利要求3所述的在系統(tǒng)引導(dǎo)階段訪問硬件設(shè)備的方法,其特征在于JfRealMode模式切換為Big Real Mode模式的模式切換過程包括關(guān)閉系統(tǒng)中斷;保存IDTR寄存器;加載GDTR寄存器;保存寄存器;加載所述IDTR寄存器;開啟系統(tǒng)中斷。
5.根據(jù)權(quán)利要求I至4任一項所述的在系統(tǒng)引導(dǎo)階段訪問硬件設(shè)備的方法,其特征在于,所述硬件設(shè)備為TCM芯片。
6.根據(jù)權(quán)利要求5所述的在系統(tǒng)引導(dǎo)階段訪問硬件設(shè)備的方法,其特征在于,所述TCM芯片的物理內(nèi)存地址為0xFED4000至0xFED44FFF。
7.根據(jù)權(quán)利要求I至4任一項所述的在系統(tǒng)引導(dǎo)階段訪問硬件設(shè)備的方法,其特征在于,所述方法通過匯編語言和/或C語言編寫成獨立的用于硬件設(shè)備訪問的程序模塊,并集成于MBR引導(dǎo)程序中。
全文摘要
本發(fā)明涉及一種在系統(tǒng)引導(dǎo)階段訪問硬件設(shè)備的方法,包括通過直接訪問所述硬件設(shè)備的物理內(nèi)存地址向所述硬件設(shè)備發(fā)送數(shù)據(jù);通過直接訪問所述硬件設(shè)備的物理內(nèi)存地址從所述硬件設(shè)備讀取數(shù)據(jù)。利用本發(fā)明的方法,在不需要系統(tǒng)中斷資源,也不需要修改、更新BIOS的情況下實現(xiàn)了系統(tǒng)引導(dǎo)階段與硬件設(shè)備進(jìn)行通訊。
文檔編號G06F9/445GK102693138SQ20111007220
公開日2012年9月26日 申請日期2011年3月24日 優(yōu)先權(quán)日2011年3月24日
發(fā)明者羅廣文 申請人:國民技術(shù)股份有限公司