本發(fā)明涉及計算機,特別涉及一種變量配置區(qū)域讀取方法、裝置、設備及介質。
背景技術:
1、當前,國產cpu(central?processing?unit,中央處理器)平臺在啟動的dxe(driver?execution?environment,驅動執(zhí)行環(huán)境)階段前無法讀取variable(可變)區(qū)域,故而造成很多不便。例如當前服務器在客戶端時維護迭代升級時需要進行保留客戶配置升級,但當前因節(jié)省開機時間而做的已有內存訓練結果跳過內存訓練的操作,并且bios(basic?input?output?system,基本輸入輸出系統(tǒng))啟動時無法識別啟動前是否做過保留配置刷新,因此平臺bios保留配置升級code(代碼)時可能造成dram(dynamic?randomaccess?memory,動態(tài)隨機存取存儲器)電氣兼容性上的隱患問題。
2、因此,如何提供一種解決上述技術問題的方案是本領域技術人員目前需要解決的問題。
技術實現(xiàn)思路
1、有鑒于此,本發(fā)明的目的在于提供一種變量配置區(qū)域讀取方法、裝置、設備及介質,能夠實現(xiàn)在啟動的dxe階段前讀取variable區(qū)域,解決國產cpu平臺bios升級code時存在的不可控風險。其具體方案如下:
2、第一方面,本技術公開了一種變量配置區(qū)域讀取方法,應用于基本輸入輸出系統(tǒng),包括:
3、對基本輸入輸出系統(tǒng)的代碼進行重構,以將所述基本輸入輸出系統(tǒng)的變量存放代碼調整為目標代碼;其中,所述變量存放代碼為用于規(guī)定變量的變量配置區(qū)域以及規(guī)定所述變量存放在所述變量配置區(qū)域的代碼,通過在所述變量配置區(qū)域中增加一個空變量以得到所述目標代碼;
4、對重構后的所述基本輸入輸出系統(tǒng)的代碼進行編譯,當所述基本輸入輸出系統(tǒng)處于啟動的安全驗證階段時,初始化預設串行外設接口,并通過所述預設串行外設接口讀取所述空變量,以判斷所述基本輸入輸出系統(tǒng)在啟動前是否針對相應的版本進行過保留配置刷新并獲取相應的判斷結果;
5、根據(jù)所述判斷結果執(zhí)行所述基本輸入輸出系統(tǒng)啟動的可擴展固件接口前期初始化階段的流程,并在執(zhí)行完所述可擴展固件接口前期初始化階段的流程后啟動進入操作系統(tǒng)。
6、可選的,所述對重構后的所述基本輸入輸出系統(tǒng)的代碼進行編譯之后,還包括:
7、通過目標刷新方式對編譯后的所述基本輸入輸出系統(tǒng)進行版本刷新;其中,所述目標刷新方式通過使用命令行解釋器、操作系統(tǒng)、所述基本輸入輸出系統(tǒng)的設置界面以及基板管理控制器的網頁界面中的任一種方式,以保留配置的方式進行版本刷新。
8、可選的,所述當所述基本輸入輸出系統(tǒng)處于啟動的安全驗證階段時,初始化預設串行外設接口,包括:
9、當所述基本輸入輸出系統(tǒng)處于啟動的安全驗證階段時,利用二級緩存的臨時內存空間,通過內存映射輸入/輸出初始化所述基本輸入輸出系統(tǒng)的閃存與中央處理器之間的預設串行外設接口的寄存器和讀寫功能。
10、可選的,所述通過所述預設串行外設接口讀取所述空變量,以判斷所述基本輸入輸出系統(tǒng)在啟動前是否針對相應的版本進行過保留配置刷新并獲取相應的判斷結果,包括:
11、通過所述預設串行外設接口根據(jù)所述變量配置區(qū)域中變量的全局唯一標識符讀取所述空變量,并判斷是否能夠讀取到所述空變量;
12、如果能夠讀取到所述空變量,則獲取所述空變量所在的地址數(shù)據(jù),并根據(jù)所述地址數(shù)據(jù)判斷所述空變量的第一狀態(tài)位是否為可用狀態(tài);
13、當所述第一狀態(tài)位為可用狀態(tài)時,判定所述基本輸入輸出系統(tǒng)在啟動前針對相應的版本進行過保留配置刷新;
14、當所述第一狀態(tài)位為不可用狀態(tài)時,判定所述基本輸入輸出系統(tǒng)在啟動前沒有針對相應的版本進行過保留配置刷新。
15、可選的,所述當所述第一狀態(tài)位為可用狀態(tài)時,判定所述基本輸入輸出系統(tǒng)在啟動前針對相應的版本進行過保留配置刷新的過程中,還包括:
16、確定所述變量配置區(qū)域中需要刪除的內存輸入/輸出時序參數(shù)變量,并通過所述預設串行外設接口讀取所述內存輸入/輸出時序參數(shù)變量;
17、將所述內存輸入/輸出時序參數(shù)變量的第二狀態(tài)位置為不可用狀態(tài),然后將不可用狀態(tài)的所述內存輸入/輸出時序參數(shù)變量對應的數(shù)據(jù)寫回所述基本輸入輸出系統(tǒng)的閃存,以刪除所述內存輸入/輸出時序參數(shù)變量;
18、將所述空變量對應的所述第一狀態(tài)位由可用狀態(tài)置為不可用狀態(tài),然后將不可用狀態(tài)的所述空變量對應的數(shù)據(jù)寫回所述基本輸入輸出系統(tǒng)的閃存,以刪除所述空變量;
19、當所述空變量和所述內存輸入/輸出時序參數(shù)變量刪除完成后,關閉所述預設串行外設接口,并釋放占用的臨時內存空間;
20、相應的,所述當所述第一狀態(tài)位為不可用狀態(tài)時,判定所述基本輸入輸出系統(tǒng)在啟動前沒有針對相應的版本進行過保留配置刷新的過程,還包括:
21、直接觸發(fā)所述關閉所述預設串行外設接口,并釋放占用的臨時內存空間的步驟。
22、可選的,判斷是否能夠讀取到所述空變量之后,還包括:
23、如果不能夠讀取到所述空變量,則直接觸發(fā)所述關閉所述預設串行外設接口,并釋放占用的臨時內存空間的步驟。
24、可選的,所述根據(jù)所述判斷結果執(zhí)行所述基本輸入輸出系統(tǒng)啟動的可擴展固件接口前期初始化階段的流程,包括:
25、判斷是否能夠讀取到當前所述變量配置區(qū)域中內存輸入/輸出時序參數(shù)變量的第三狀態(tài)位;
26、如果能夠讀取到所述第三狀態(tài)位,獲取所述第三狀態(tài)位的狀態(tài);
27、當所述第三狀態(tài)位為可用狀態(tài)時,基于第一數(shù)值表執(zhí)行所述基本輸入輸出系統(tǒng)啟動的可擴展固件接口前期初始化階段的流程;
28、當所述第三狀態(tài)位為不可用狀態(tài)時,重新進行內存訓練,并存儲內存訓練過程中產生的新訓練結果變量以得到第二數(shù)值表,然后基于所述第二數(shù)值表執(zhí)行所述基本輸入輸出系統(tǒng)啟動的可擴展固件接口前期初始化階段的流程;
29、如果不能夠讀取到所述第三狀態(tài)位,則觸發(fā)所述重新進行內存訓練,并存儲內存訓練過程中產生的新訓練結果變量以得到第二數(shù)值表的步驟。
30、第二方面,本技術公開了一種變量配置區(qū)域讀取裝置,應用于基本輸入輸出系統(tǒng),包括:
31、代碼重構模塊,用于對基本輸入輸出系統(tǒng)的代碼進行重構,以將所述基本輸入輸出系統(tǒng)的變量存放代碼調整為目標代碼;其中,所述變量存放代碼為用于規(guī)定變量的變量配置區(qū)域以及規(guī)定所述變量存放在所述變量配置區(qū)域的代碼,通過在所述變量配置區(qū)域中增加一個空變量以得到所述目標代碼;
32、第一階段執(zhí)行模塊,用于對重構后的所述基本輸入輸出系統(tǒng)的代碼進行編譯,當所述基本輸入輸出系統(tǒng)處于啟動的安全驗證階段時,初始化預設串行外設接口,并通過所述預設串行外設接口讀取所述空變量,以判斷所述基本輸入輸出系統(tǒng)在啟動前是否針對相應的版本進行過保留配置刷新并獲取相應的判斷結果;
33、第二階段執(zhí)行模塊,用于根據(jù)所述判斷結果執(zhí)行所述基本輸入輸出系統(tǒng)啟動的可擴展固件接口前期初始化階段的流程,并在執(zhí)行完所述可擴展固件接口前期初始化階段的流程后啟動進入操作系統(tǒng)。
34、第三方面,本技術公開了一種電子設備,所述電子設備包括處理器和存儲器;其中,所述存儲器用于存儲計算機程序,所述計算機程序由所述處理器加載并執(zhí)行以實現(xiàn)如前所述的變量配置區(qū)域讀取方法。
35、第四方面,本技術公開了一種計算機可讀存儲介質,用于存儲計算機程序;其中所述計算機程序被處理器執(zhí)行時實現(xiàn)如前所述的變量配置區(qū)域讀取方法。
36、本技術提供了一種變量配置區(qū)域讀取方法,應用于基本輸入輸出系統(tǒng),包括:對基本輸入輸出系統(tǒng)的代碼進行重構,以將所述基本輸入輸出系統(tǒng)的變量存放代碼調整為目標代碼;其中,所述變量存放代碼為用于規(guī)定變量的變量配置區(qū)域以及規(guī)定所述變量存放在所述變量配置區(qū)域的代碼,通過在所述變量配置區(qū)域中增加一個空變量以得到所述目標代碼;對重構后的所述基本輸入輸出系統(tǒng)的代碼進行編譯,當所述基本輸入輸出系統(tǒng)處于啟動的安全驗證階段時,初始化預設串行外設接口,并通過所述預設串行外設接口讀取所述空變量,以判斷所述基本輸入輸出系統(tǒng)在啟動前是否針對相應的版本進行過保留配置刷新并獲取相應的判斷結果;根據(jù)所述判斷結果執(zhí)行所述基本輸入輸出系統(tǒng)啟動的可擴展固件接口前期初始化階段的流程,并在執(zhí)行完所述可擴展固件接口前期初始化階段的流程后啟動進入操作系統(tǒng)。
37、本技術的有益技術效果為:通過在基本輸入輸出系統(tǒng)編譯時,埋入一個空變量的方式,在基本輸入輸出系統(tǒng)啟動到安全驗證階段時通過預設串行外設接口讀取空變量,以判斷此次啟動前是否保留配置刷新過版本。進一步的,在基本輸入輸出系統(tǒng)啟動的可擴展固件接口前期初始化階段,根據(jù)判斷結果選擇重新進行內存訓練后繼續(xù)啟動或直接繼續(xù)啟動流程;最后啟動進入操作系統(tǒng)。如此一來,能夠實現(xiàn)提前對變量配置區(qū)域的空間進行讀寫判斷,解決在啟動的驅動執(zhí)行環(huán)境階段前無法讀取變量配置區(qū)域的問題,進而解決了國產cpu平臺基本輸入輸出系統(tǒng)升級代碼時存在的不可控風險。在面臨機器升級涉及到版本保留配置刷新后,可以使機器穩(wěn)定的運行,不會出現(xiàn)dram電氣兼容性上的隱患問題,從軟件的手段來解決宕機、運行不穩(wěn)定的風險,有很大的經濟價值,避免了客戶投訴。
38、此外,本技術提供的一種變量配置區(qū)域讀取裝置、設備及存儲介質,與上述變量配置區(qū)域讀取方法對應,效果同上。