本技術(shù)涉及計算機,特別是涉及一種bmc芯片固件升級方法、bmc芯片、設(shè)備和存儲介質(zhì)。
背景技術(shù):
1、目前,bmc(baseboard?management?controller,基板管理控制器)芯片是一種服務(wù)器遠程管理芯片,可以用于遠程控制服務(wù)器的重啟,也可以監(jiān)控服務(wù)器基本組件的運行情況。由于服務(wù)器業(yè)務(wù)的需要以及固件安全漏洞修復(fù),bmc芯片固件升級方法中的固件程序通常需要進行更新。bmc芯片固件升級方法的固件程序通常存儲在flash(一種非易失性存儲器)中。目前更新bmc?flash芯片中固件程序的方法主要有三種:(1)通過flash燒錄器直接對bmc?flash芯片進行燒錄,然后將flash芯片焊接到板卡上;(2)bmc芯片固件升級方法上的u-boot(universal?bootloader,開源的引導(dǎo)加載程序)程序啟動后,通過u-boot程序驅(qū)動bmc芯片固件升級方法的flash控制器燒錄flash;(3)主機啟動后,通過bmc芯片固件升級方法的h2b模塊燒錄flash。
2、然而bmc芯片固件升級方法更新重啟過程中,服務(wù)器將處于無法被管理的狀態(tài),flash燒錄也存在著失敗的可能性,一旦固件更新失敗,服務(wù)器將無法進行斷電重啟。因此研究出一種穩(wěn)定可靠,運維人員操作簡單的固件更新方式和bmc芯片固件升級方法是十分有必要的。
技術(shù)實現(xiàn)思路
1、基于此,本技術(shù)提供了一種bmc芯片固件升級方法、裝置、設(shè)備和存儲介質(zhì),以解決現(xiàn)有技術(shù)中存在的問題。
2、第一方面,提供一種bmc芯片固件升級方法,該方法包括:
3、基于預(yù)設(shè)的固件更新狀態(tài)模塊設(shè)置固件開始更新標識位和固件完成更新標識位;響應(yīng)于主處理器獲取到待更新固件程序,通過固件更新狀態(tài)模塊將固件開始更新標識位置為第一標識;
4、主處理器基于所述待更新固件程序執(zhí)行固件更新,響應(yīng)于固件更新完成,通過固件更新狀態(tài)模塊將固件完成更新標識位置為第一標識;
5、基于協(xié)處理器檢測所述固件更新狀態(tài)模塊中的固件開始更新標識位,若所述固件開始更新標識位為第一標識,則在經(jīng)過預(yù)設(shè)時間間隔后,檢測所述固件更新狀態(tài)模塊中的固件更新完成標識位,若所述固件完成更新標識位為第一標識,則清除所述固件完成更新標識位,若所述固件完成更新標識位為非第一標識,則復(fù)位所述主處理器。
6、根據(jù)本技術(shù)實施例中一種可實現(xiàn)的方式,所述方法還包括:
7、將主處理器當前固件程序和所述待更新固件程序存儲到存儲模塊;
8、若所述協(xié)處理器在經(jīng)過所述預(yù)設(shè)時間間隔后,檢測確定所述固件更新狀態(tài)模塊中的固件更新完成標識為非第一標識,則從所述存儲模塊獲取所述當前固件程序,控制所述主處理器寫入所述當前固件程序。
9、根據(jù)本技術(shù)實施例中一種可實現(xiàn)的方式,所述響應(yīng)于主處理器獲取到待更新固件程序,通過固件更新狀態(tài)模塊將固件開始更新標識位置為第一標識,包括:
10、主處理器通過遠程連接模塊驅(qū)動網(wǎng)口從遠程網(wǎng)絡(luò)獲取到所述待更新固件程序并存儲到存儲模塊;
11、將當前使用的所述當前固件程序備份到所述存儲模塊的第一空間,并將所述第一空間設(shè)置為只讀模式;
12、獲取所述待更新固件程序的加密類型,根據(jù)所述加密類型確定對應(yīng)的解密算法;
13、通過預(yù)設(shè)的固件校驗?zāi)K基于所述解密算法對所述待更新固件程序進行解密;
14、響應(yīng)于所述待更新固件程序解密成功,基于所述固件校驗?zāi)K將解密后的待更新固件存儲到所述存儲模塊的第二空間,并將所述第二空間設(shè)置為只讀模式;
15、響應(yīng)于所述解密后的待更新固件存儲到所述存儲模塊的第二空間,通過所述固件校驗?zāi)K將數(shù)據(jù)校驗標識位置為第一標識;
16、響應(yīng)于所述數(shù)據(jù)校驗標識位為第一標識,通過固件更新狀態(tài)模塊將固件開始更新標識位置為第一標識。
17、根據(jù)本技術(shù)實施例中一種可實現(xiàn)的方式,所述主處理器基于所述待更新固件程序執(zhí)行固件更新,響應(yīng)于固件更新完成,通過固件更新狀態(tài)模塊將固件完成更新標識位置為第一標識,包括:
18、將所述待更新固件程序燒錄進主處理器flash控制器,在所述主處理器flash控制器燒錄完成后,復(fù)位所述主處理器,其中,所述主處理器flash控制器用于存儲所述主處理器上電運行的程序;
19、主處理器基于所述主處理器flash控制器執(zhí)行所述待更新固件程序,若執(zhí)行成功,則通過所述固件更新狀態(tài)模塊將所述固件完成更新標識位置為第一標識。
20、根據(jù)本技術(shù)實施例中一種可實現(xiàn)的方式,所述方法還包括:
21、響應(yīng)于固件更新完成,復(fù)位并啟動所述主處理,若所述主處理器復(fù)位并啟動成功則通過固件更新狀態(tài)模塊清除所述固件開始更新標識位;
22、響應(yīng)于所述固件開始更新標識位被清除,所述存儲模塊將所述第一空間設(shè)置的只讀模式清除。
23、根據(jù)本技術(shù)實施例中一種可實現(xiàn)的方式,所述若所述協(xié)處理器在經(jīng)過所述預(yù)設(shè)時間間隔后,檢測確定所述固件更新狀態(tài)模塊中的固件更新完成標識為非第一標識,則從所述存儲模塊獲取所述當前固件程序,控制所述主處理器寫入所述當前固件程序,包括:
24、若所述協(xié)處理器在經(jīng)過所述預(yù)設(shè)時間間隔后,檢測確定所述固件更新狀態(tài)模塊中的固件更新完成標識為非第一標識,則復(fù)位所述主處理器flash控制器,從所述存儲模塊獲取所述當前固件程序;
25、將所述當前固件程序燒錄進主處理器flash控制器,在所述主處理器flash控制器燒錄完成后,復(fù)位所述主處理器;
26、主處理器基于所述主處理器flash控制器執(zhí)行所述當前固件程序。
27、根據(jù)本技術(shù)實施例中一種可實現(xiàn)的方式,其特征在于,所述方法還包括:
28、獲取所述主處理器處理的目標任務(wù)線程;
29、響應(yīng)于所述主處理器基于所述待更新固件程序執(zhí)行固件更新,基于所述協(xié)處理器處理所述目標任務(wù)線程。
30、第二方面,提供了一種bmc芯片,包括:主處理器、協(xié)處理器和固件更新狀態(tài)模塊,所述主處理器和所述協(xié)處理器分別與所述固件更新狀態(tài)模塊通信連接;
31、所述固件更新狀態(tài)模塊用于:基于預(yù)設(shè)的固件更新狀態(tài)模塊設(shè)置固件開始更新標識位和固件完成更新標識位;
32、所述主處理器用于:響應(yīng)于獲取到待更新固件程序,通過固件更新狀態(tài)模塊將固件開始更新標識位置為第一標識;基于所述待更新固件程序執(zhí)行固件更新,響應(yīng)于固件更新完成,通過固件更新狀態(tài)模塊將固件完成更新標識位置為第一標識;
33、所述協(xié)處理器用于:檢測所述固件更新狀態(tài)模塊中的固件開始更新標識位,若所述固件開始更新標識位為第一標識,則在經(jīng)過預(yù)設(shè)時間間隔后,檢測所述固件更新狀態(tài)模塊中的固件更新完成標識位,若所述固件完成更新標識位為第一標識,則清除所述固件完成更新標識位,若所述固件完成更新標識位為非第一標識,則復(fù)位所述主處理器。
34、第三方面,提供了一種計算機設(shè)備,包括:
35、至少一個處理器;以及
36、與所述至少一個處理器通信連接的存儲器;其中,
37、所述存儲器存儲有可被所述至少一個處理器執(zhí)行的計算機指令,所述計算機指令被所述至少一個處理器執(zhí)行,以使所述至少一個處理器能夠執(zhí)行上述第一方面中涉及的方法。
38、第四方面,提供了一種計算機可讀存儲介質(zhì),其上存儲有計算機指令,其特征在于,所述計算機指令用于使計算機執(zhí)行上述第一方面中涉及的方法。
39、根據(jù)本技術(shù)實施例所提供的技術(shù)內(nèi)容,本技術(shù)通過基于預(yù)設(shè)的固件更新狀態(tài)模塊設(shè)置固件開始更新標識位和固件完成更新標識位;響應(yīng)于主處理器獲取到待更新固件程序,通過固件更新狀態(tài)模塊將固件開始更新標識位置為第一標識;主處理器基于待更新固件程序執(zhí)行固件更新,響應(yīng)于固件更新完成,通過固件更新狀態(tài)模塊將固件完成更新標識位置為第一標識;基于協(xié)處理器檢測固件更新狀態(tài)模塊中的固件開始更新標識位,若固件開始更新標識位為第一標識,則在經(jīng)過預(yù)設(shè)時間間隔后,檢測固件更新狀態(tài)模塊中的固件更新完成標識位,若固件完成更新標識位為第一標識,則清除固件完成更新標識位,若固件完成更新標識位為非第一標識,則復(fù)位主處理器,解決了bmc固件更新失敗后芯片無法重新啟動的問題,避免了更新過程中的固件不可用造成的芯片主處理器無法正常運行的情況,增加了bmc主處理器更新固件過程的可靠性,增加了固件更新的效率。