機(jī)架式服務(wù)器系統(tǒng)的固件更新方法及其裝置制造方法
【專利摘要】本發(fā)明公開了一種機(jī)架式服務(wù)器系統(tǒng)的固件更新方法,適用于通過一控制芯片模組更新一待更新芯片模組的固件,所述更新方法包括以下步驟:通過所述控制芯片模組發(fā)送可形成一更新固件的多個(gè)數(shù)據(jù)包給所述待更新芯片模組;通過所述控制芯片模組發(fā)送一驗(yàn)證所述多個(gè)數(shù)據(jù)包的命令至所述待更新芯片模組;通過所述控制芯片模組從所述待更新芯片模組獲得所述多個(gè)數(shù)據(jù)包對(duì)應(yīng)的多個(gè)驗(yàn)證信息;通過所述控制芯片模組判斷所述多個(gè)數(shù)據(jù)包對(duì)應(yīng)的多個(gè)驗(yàn)證信息是否全部正確,以確認(rèn)所述待更新芯片模組收到的所述多個(gè)數(shù)據(jù)包是否出錯(cuò)。本發(fā)明能夠有效解決現(xiàn)有技術(shù)中更新固件緩慢和耗時(shí)較長的問題,從而可以節(jié)省大量更新時(shí)間,使得更新固件的速度大幅提升。
【專利說明】機(jī)架式服務(wù)器系統(tǒng)的固件更新方法及其裝置
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及服務(wù)器架構(gòu)領(lǐng)域,具體的說,是一種機(jī)架式服務(wù)器系統(tǒng)的固件更新方 法及其裝置,適用于通過一控制芯片模組更新一待更新芯片模組的固件。
【背景技術(shù)】
[0002] 目前服務(wù)器廣為各企業(yè)所使用,發(fā)展的范圍除了結(jié)合國際網(wǎng)絡(luò)與電信業(yè)務(wù)的應(yīng)用 夕卜,也更深入到普通人的生活中,例如金融、財(cái)經(jīng)、網(wǎng)絡(luò)銀行等,這些都必須依托服務(wù)器強(qiáng)大 的運(yùn)算能力。
[0003] 如今服務(wù)器的種類有很多種,比較常見的有機(jī)架式服務(wù)器與塔式服務(wù)器。其中,機(jī) 架服務(wù)器是一種優(yōu)化結(jié)構(gòu)的塔式服務(wù)器,其設(shè)計(jì)宗旨主要是為了盡可能減少服務(wù)器空間的 占用。一般而言,機(jī)架服務(wù)器的寬度為19英寸,高度以U為單位(1U = 44. 45毫米),通常 有1U,2U,4U,5U等幾種標(biāo)準(zhǔn)的服務(wù)器。而為了要提升目前服務(wù)器的基板的應(yīng)用層面,系統(tǒng) 廠商通常會(huì)將服務(wù)器的基板設(shè)計(jì)成可以與各種類型(例如1U,2U及4U)的系統(tǒng)相容。
[0004] 而在服務(wù)器機(jī)架系統(tǒng)中的主板包含了多種嵌入式芯片(例如作為控制芯片、計(jì)算 功耗芯片的Cortex-M3或Cortex-4芯片等),這些嵌入式芯片都需要固件來配合運(yùn)行。倘 若在服務(wù)器機(jī)架系統(tǒng)出貨之后,需要更新上述芯片的固件,可以采用的做法是通過一設(shè)置 在服務(wù)器機(jī)架內(nèi)的機(jī)架管理控制器(Rack Management Controller,簡稱RMC)來進(jìn)行更新。 該機(jī)架管理控制器包括一 ARM9芯片,且運(yùn)行于一嵌入式Linux系統(tǒng)。當(dāng)需要更新服務(wù)器機(jī) 架系統(tǒng)中某一主板的嵌入式芯片的固件時(shí),由機(jī)架管理控制器讀取固件文件,并且將固件 文件分解成若干個(gè)數(shù)據(jù)包發(fā)送至待更新的芯片。在現(xiàn)有的更新方法中,每發(fā)送一個(gè)數(shù)據(jù)包, 機(jī)架管理控制器均會(huì)等待芯片的返回,并且檢查數(shù)據(jù)包CRC是否正確,若正確才會(huì)發(fā)送下 一個(gè)數(shù)據(jù)包。于是,目前更新芯片固件比較緩慢,用時(shí)較長。
[0005] 有鑒于此,亟需提供一種新的機(jī)架式服務(wù)器系統(tǒng)的固件更新方法或裝置來解決上 述問題。
【發(fā)明內(nèi)容】
[0006] 本發(fā)明的目的在于,提供一種機(jī)架式服務(wù)器系統(tǒng)的固件更新方法,其能夠有效解 決現(xiàn)有技術(shù)中更新固件緩慢和耗時(shí)較長的問題,從而可以節(jié)省大量更新時(shí)間,使得更新固 件的速度大幅提升。
[0007] 為實(shí)現(xiàn)上述目的,本發(fā)明提供一種機(jī)架式服務(wù)器系統(tǒng)的固件更新方法,適用于通 過一控制芯片模組更新一待更新芯片模組的固件,所述控制芯片模組為一機(jī)架式服務(wù)器系 統(tǒng)的一機(jī)架管理控制器,所述機(jī)架式服務(wù)器系統(tǒng)包括連接所述機(jī)架管理控制器的至少一服 務(wù)器,所述至少一服務(wù)器包含所述待更新芯片模組,所述機(jī)架管理控制器可控制所述至少 一服務(wù)器的開機(jī)與關(guān)機(jī),所述更新方法包括以下步驟:通過所述控制芯片模組發(fā)送可形成 一更新固件的多個(gè)數(shù)據(jù)包給所述待更新芯片模組;通過所述控制芯片模組發(fā)送一驗(yàn)證所述 多個(gè)數(shù)據(jù)包的命令至所述待更新芯片模組;通過所述控制芯片模組從所述待更新芯片模組 獲得所述多個(gè)數(shù)據(jù)包對(duì)應(yīng)的多個(gè)驗(yàn)證信息;通過所述控制芯片模組判斷所述多個(gè)數(shù)據(jù)包對(duì) 應(yīng)的多個(gè)驗(yàn)證信息是否全部正確,以確認(rèn)所述待更新芯片模組收到的所述多個(gè)數(shù)據(jù)包是否 出錯(cuò)。
[0008] 作為可選的技術(shù)方案,在通過所述控制芯片模組判斷所述多個(gè)數(shù)據(jù)包對(duì)應(yīng)的多個(gè) 驗(yàn)證信息是否正確的步驟中,包括:若其中有驗(yàn)證信息不正確,進(jìn)一步包括:a、通過所述控 制芯片模組將出錯(cuò)的驗(yàn)證信息所對(duì)應(yīng)的數(shù)據(jù)包重新發(fā)送給所述待更新芯片模組;b、通過所 述控制芯片模組從所述待更新芯片模組獲得重新發(fā)送給所述待更新芯片模組的數(shù)據(jù)包對(duì) 應(yīng)的驗(yàn)證信息;c、通過所述控制芯片模組判斷重新發(fā)送給所述待更新芯片模組的數(shù)據(jù)包對(duì) 應(yīng)的驗(yàn)證信息是否正確;若正確,則所述控制芯片模組重新發(fā)送給所述待更新芯片模組的 數(shù)據(jù)包沒有出錯(cuò),若不正確,循環(huán)執(zhí)行步驟a、b、c,直到所述控制芯片模組從所述待更新芯 片模組獲得的驗(yàn)證信息中不存在錯(cuò)誤的驗(yàn)證信息。
[0009] 作為可選的技術(shù)方案,在通過所述控制芯片模組發(fā)送可形成一更新固件的多個(gè)數(shù) 據(jù)包給所述待更新芯片模組的步驟之前,進(jìn)一步包括通過所述控制芯片模組將更新固件分 解成所述多個(gè)數(shù)據(jù)包。
[0010] 作為可選的技術(shù)方案,在通過所述控制芯片模組判斷所述多個(gè)數(shù)據(jù)包對(duì)應(yīng)的多個(gè) 驗(yàn)證信息是否正確的步驟中,包括:若所述多個(gè)驗(yàn)證信息正確,則待更新芯片模組收到的各 數(shù)據(jù)包沒有出錯(cuò)。
[0011] 作為可選的技術(shù)方案,所述待更新芯片模組是一具有固件的芯片,所述具有固件 的芯片設(shè)置于一服務(wù)器的一主板上。
[0012] 作為可選的技術(shù)方案,通過所述控制芯片模組發(fā)送可形成一更新固件的多個(gè)數(shù)據(jù) 包給所述待更新芯片模組的步驟之前進(jìn)一步包括:通過所述控制芯片模組發(fā)送一更新開始 命令至所述待更新芯片模組;通過所述控制芯片模組從所述待更新芯片模組獲得一運(yùn)行狀 態(tài)信息;通過所述控制芯片模組判斷所述運(yùn)行狀態(tài)信息是否為一第一運(yùn)行狀態(tài),若不是,則 所述待更新芯片模組切換為第一運(yùn)行狀態(tài)。
[0013] 作為可選的技術(shù)方案,在通過所述控制芯片模組發(fā)送一更新開始命令至所述待更 新芯片模組的步驟之后進(jìn)一步包括:通過所述控制芯片模組從所述待更新芯片模組等待接 收一運(yùn)行狀態(tài)信息;若等待接收的時(shí)間超過一預(yù)設(shè)的第一時(shí)間閾值時(shí),則所述控制芯片模 組重新發(fā)送一更新開始命令至所述待更新芯片模組,并且記錄重新發(fā)送更新開始命令的次 數(shù)。
[0014] 作為可選的技術(shù)方案,在所述控制芯片模組重新發(fā)送一更新開始命令至所述待更 新芯片模組,并且記錄重新發(fā)送更新開始命令的次數(shù)的步驟之后,進(jìn)一步包括:通過所述控 制芯片模組判斷重新發(fā)送更新開始命令的次數(shù)是否大于一預(yù)設(shè)的重發(fā)次數(shù)最大值;若是, 則停止更新固件的操作。
[0015] 作為可選的技術(shù)方案,在所述控制芯片模組從所述待更新芯片模組獲得的驗(yàn)證信 息中不存在錯(cuò)誤的驗(yàn)證信息的步驟之后,進(jìn)一步包括:通過所述控制芯片模組發(fā)送一完成 更新固件的命令至所述待更新芯片模組;通過所述控制芯片模組從所述待更新芯片模組獲 得一完成更新固件的響應(yīng),所述待更新芯片模組已標(biāo)記為一固件更新成功狀態(tài)。
[0016] 本發(fā)明的另一目的在于,提供一種固件更新裝置,適用于通過一控制芯片模組更 新一待更新芯片模組的固件,所述控制芯片模組為一機(jī)架式服務(wù)器系統(tǒng)的一機(jī)架管理控制 器,所述機(jī)架式服務(wù)器系統(tǒng)包括連接所述機(jī)架管理控制器的至少一服務(wù)器,所述至少一服 務(wù)器包含所述待更新芯片模組,所述機(jī)架管理控制器可控制所述至少一服務(wù)器的開機(jī)與關(guān) 機(jī),所述固件更新裝置包括:數(shù)據(jù)包發(fā)送模塊,用以通過所述控制芯片模組發(fā)送可形成一更 新固件的多個(gè)數(shù)據(jù)包給所述待更新芯片模組;驗(yàn)證信息請(qǐng)求模塊,與所述數(shù)據(jù)包發(fā)送模塊 相連,用以通過所述控制芯片模組發(fā)送一驗(yàn)證所述多個(gè)數(shù)據(jù)包的命令至所述待更新芯片模 組;驗(yàn)證信息獲取模塊,與所述驗(yàn)證信息請(qǐng)求模塊相連,用以通過所述控制芯片模組從所述 待更新芯片模組獲得所述多個(gè)數(shù)據(jù)包對(duì)應(yīng)的多個(gè)驗(yàn)證信息;驗(yàn)證信息判斷模塊,與所述驗(yàn) 證信息獲取模塊相連,用以通過所述控制芯片模組判斷所述多個(gè)數(shù)據(jù)包對(duì)應(yīng)的多個(gè)驗(yàn)證信 息是否全部正確,以確認(rèn)所述待更新芯片模組收到的所述多個(gè)數(shù)據(jù)包是否出錯(cuò)。
[0017] 作為可選的技術(shù)方案,所述固件更新裝置進(jìn)一步包括:數(shù)據(jù)包重發(fā)模塊,與所述驗(yàn) 證信息判斷模塊相連,用于在所述多個(gè)驗(yàn)證信息中有驗(yàn)證信息不正確,通過所述控制芯片 模組將出錯(cuò)的驗(yàn)證信息所對(duì)應(yīng)的數(shù)據(jù)包重新發(fā)送給所述待更新芯片模組;驗(yàn)證信息重獲模 塊,與所述數(shù)據(jù)包重發(fā)模塊相連,用于通過所述控制芯片模組從所述待更新芯片模組獲得 重新發(fā)送給所述待更新芯片模組的數(shù)據(jù)包對(duì)應(yīng)的驗(yàn)證信息;驗(yàn)證信息重判模塊,與所述驗(yàn) 證信息重獲模塊相連,用于通過所述控制芯片模組判斷重新發(fā)送給所述待更新芯片模組的 數(shù)據(jù)包對(duì)應(yīng)的驗(yàn)證信息是否正確,當(dāng)驗(yàn)證信息不正確時(shí),調(diào)用所述數(shù)據(jù)包重發(fā)模塊。
[0018] 作為可選的技術(shù)方案,所述待更新芯片模組是一具有固件的芯片,所述具有固件 的芯片設(shè)置于一服務(wù)器的一主板上。
[0019] 作為可選的技術(shù)方案,所述固件更新裝置進(jìn)一步包括:更新開始命令發(fā)送模塊,用 以通過所述控制芯片模組發(fā)送一更新開始命令至所述待更新芯片模組;運(yùn)行狀態(tài)獲取模 塊,與所述更新開始命令發(fā)送模塊相連,用以通過所述控制芯片模組從所述待更新芯片模 組獲得一運(yùn)行狀態(tài)信息;運(yùn)行狀態(tài)判斷模塊,與所述運(yùn)行狀態(tài)獲取模塊相連,用以通過所述 控制芯片模組判斷所述運(yùn)行狀態(tài)信息是否為一第一運(yùn)行狀態(tài),若不是,則所述待更新芯片 模組切換為第一運(yùn)行狀態(tài)。
[0020] 作為可選的技術(shù)方案,所述固件更新裝置進(jìn)一步包括:等待接收模塊,用以通過所 述控制芯片模組從所述待更新芯片模組等待接收一運(yùn)行狀態(tài)信息;更新開始命令重發(fā)模 塊,與所述等待接收模塊相連,用以若等待接收的時(shí)間超過一預(yù)設(shè)的第一時(shí)間閾值時(shí),則所 述控制芯片模組重新發(fā)送一更新開始命令至所述待更新芯片模組,并且記錄重新發(fā)送更新 開始命令的次數(shù)。
[0021] 作為可選的技術(shù)方案,所述固件更新裝置進(jìn)一步包括:重發(fā)次數(shù)判斷模塊,用以通 過所述控制芯片模組判斷重新發(fā)送更新開始命令的次數(shù)是否大于一預(yù)設(shè)的重發(fā)次數(shù)最大 值,若是,則停止更新固件的操作。
[0022] 作為可選的技術(shù)方案,所述固件更新裝置進(jìn)一步包括:完成更新請(qǐng)求模塊,用以通 過所述控制芯片模組發(fā)送一完成更新固件的命令至所述待更新芯片模組;完成更新響應(yīng)模 塊,與所述完成更新請(qǐng)求模塊相連,用以通過所述控制芯片模組從所述待更新芯片模組獲 得一完成更新固件的響應(yīng),所述待更新芯片模組已標(biāo)記為一固件更新成功狀態(tài)。
[0023] 本發(fā)明的優(yōu)點(diǎn)在于,通過所述機(jī)架式服務(wù)器系統(tǒng)的固件更新方法及其裝置,能夠 有效解決現(xiàn)有技術(shù)更新芯片固件緩慢和耗時(shí)較長的問題,從而可以節(jié)省大量更新時(shí)間,提 升更新固件的速度,以進(jìn)一步提高升級(jí)工作的效率。
【專利附圖】
【附圖說明】
[0024] 圖1是本發(fā)明一實(shí)施例中機(jī)架式服務(wù)器系統(tǒng)的固件更新方法的具體實(shí)施步驟流 程不意圖。
[0025] 圖2是現(xiàn)有機(jī)架式服務(wù)器系統(tǒng)的固件更新方法的信息交互示意圖。
[0026] 圖3是本發(fā)明所述機(jī)架式服務(wù)器系統(tǒng)的固件更新方法的信息交互示意圖。
[0027] 圖4是本發(fā)明一實(shí)施例中所述固件更新裝置所在服務(wù)器的架構(gòu)示意圖。
[0028] 圖5是本發(fā)明一實(shí)施例中所述固件更新裝置的架構(gòu)圖。
【具體實(shí)施方式】
[0029] 下面結(jié)合附圖對(duì)本發(fā)明提供的所述機(jī)架式服務(wù)器系統(tǒng)的固件更新方法及其裝置 的具體實(shí)施做詳細(xì)說明。
[0030] 圖1是本發(fā)明一實(shí)施例中機(jī)架式服務(wù)器系統(tǒng)的固件更新方法具體實(shí)施步驟流程 示意圖。參見圖1所示,本發(fā)明提供一種機(jī)架式服務(wù)器系統(tǒng)的固件更新方法,適用于通過一 控制芯片模組更新一待更新芯片模組的固件。在本實(shí)施例中,所述控制芯片模組為一機(jī)架 式服務(wù)器系統(tǒng)的一機(jī)架管理控制器(Rack Management Controller,簡稱RMC),以對(duì)待更新 芯片模組所具有固件的芯片進(jìn)行固件更新。所述機(jī)架式服務(wù)器系統(tǒng)包括連接所述機(jī)架管理 控制器的至少一服務(wù)器,所述至少一服務(wù)器包含所述待更新芯片模組,所述機(jī)架管理控制 器可控制所述至少一服務(wù)器的開機(jī)與關(guān)機(jī)。所述機(jī)架管理控制器具有一 ARM系列芯片(例 如ARM9芯片)且運(yùn)行著一嵌入式Linux系統(tǒng),但不以此限定本發(fā)明請(qǐng)求保護(hù)的范圍。在其 他實(shí)施例中,所述控制芯片模組也可以為一服務(wù)器的一基板管理控制器,所述基板管理控 制器可控制所述服務(wù)器的開機(jī)與關(guān)機(jī),所述服務(wù)器包含所述待更新芯片模組。此外,所述待 更新芯片模組是一具有固件的芯片,所述具有固件的芯片設(shè)置于一服務(wù)器的一主板上。所 述待更新芯片模組可以控制風(fēng)扇轉(zhuǎn)速的控制芯片,或可以計(jì)算功耗的芯片等。所述機(jī)架管 理控制器將所取得的供更新使用的固件分解成若干個(gè)數(shù)據(jù)包,以便后續(xù)發(fā)送給需要更新的 節(jié)點(diǎn)。
[0031] 本發(fā)明所述機(jī)架式服務(wù)器系統(tǒng)的固件更新方法包括以下步驟:步驟S101、通過所 述控制芯片模組發(fā)送一更新開始命令至所述待更新芯片模組;步驟S103、通過所述控制芯 片模組從所述待更新芯片模組獲得一運(yùn)行狀態(tài)信息;步驟S105、通過所述控制芯片模組判 斷所述運(yùn)行狀態(tài)信息是否為一第一運(yùn)行狀態(tài),若不是,則所述待更新芯片模組切換為第一 運(yùn)行狀態(tài);步驟S110、通過所述控制芯片模組發(fā)送可形成一更新固件的多個(gè)數(shù)據(jù)包給所述 待更新芯片模組;步驟S120、通過所述控制芯片模組發(fā)送一驗(yàn)證所述多個(gè)數(shù)據(jù)包的命令至 所述待更新芯片模組;步驟S130、通過所述控制芯片模組從所述待更新芯片模組獲得所述 多個(gè)數(shù)據(jù)包對(duì)應(yīng)的多個(gè)驗(yàn)證信息;步驟S140、通過所述控制芯片模組判斷所述多個(gè)數(shù)據(jù)包 對(duì)應(yīng)的多個(gè)驗(yàn)證信息是否全部正確,以確認(rèn)所述待更新芯片模組收到的所述多個(gè)數(shù)據(jù)包是 否出錯(cuò);步驟S151、通過所述控制芯片模組將出錯(cuò)的驗(yàn)證信息所對(duì)應(yīng)的數(shù)據(jù)包重新發(fā)送給 所述待更新芯片模組;步驟S153、通過所述控制芯片模組從所述待更新芯片模組獲得重新 發(fā)送給所述待更新芯片模組的數(shù)據(jù)包對(duì)應(yīng)的驗(yàn)證信息;步驟S155、通過所述控制芯片模組 判斷重新發(fā)送給所述待更新芯片模組的數(shù)據(jù)包對(duì)應(yīng)的驗(yàn)證信息是否正確;若正確,則所述 控制芯片模組重新發(fā)送給所述待更新芯片模組的數(shù)據(jù)包沒有出錯(cuò),若不正確,循環(huán)執(zhí)行步 驟3151、3153、3155,直到所述控制芯片模組從所述待更新芯片模組獲得的驗(yàn)證信息中不存 在錯(cuò)誤的驗(yàn)證信息;步驟S161、通過所述控制芯片模組發(fā)送一完成更新固件的命令至所述 待更新芯片模組;步驟S163、通過所述控制芯片模組從所述待更新芯片模組獲得一完成更 新固件的響應(yīng),所述待更新芯片模組已標(biāo)記為一固件更新成功狀態(tài)。
[0032] 以下將對(duì)上述步驟進(jìn)一步詳細(xì)描述。
[0033] 在步驟S101中,所述控制芯片模組發(fā)送一更新開始命令至所述待更新芯片模組, 以嘗試與所述待更新芯片模組建立一物理鏈路。其中,所述待更新芯片模組為一具有固件 的芯片,具有固件的芯片設(shè)置于一服務(wù)器的一主板上。所述更新開始命令中包含更新固件 應(yīng)用程序的首地址、每一數(shù)據(jù)包的大小以及數(shù)據(jù)包的數(shù)量等信息。當(dāng)發(fā)送該更新開始命令 后,表示準(zhǔn)備開始更新固件,并且等待所述待更新芯片模組的回復(fù)。
[0034] 在步驟S103中,在所述待更新芯片模組接收到更新開始命令后,通過所述控制芯 片模組等待接收從所述待更新芯片模組返回的一運(yùn)行狀態(tài)信息,所述運(yùn)行狀態(tài)信息也就是 設(shè)置在待更新芯片模組的芯片所屬的主板的當(dāng)前運(yùn)行狀態(tài),包括bootcode和runtime兩種 運(yùn)行狀態(tài),bootcode運(yùn)行狀態(tài)用于更新固件操作,而runtime運(yùn)行狀態(tài)用于主板正常工作。
[0035] 在步驟S105中,接著,通過所述控制芯片模組判斷所述運(yùn)行狀態(tài)信息是否為一第 一運(yùn)行狀態(tài)(即能夠進(jìn)行更新固件的狀態(tài),例如bootcode運(yùn)行狀態(tài)),若設(shè)置在待更新芯片 模組的芯片所屬的主板的當(dāng)前運(yùn)行狀態(tài)為runtime運(yùn)行狀態(tài),則自動(dòng)切換至bootcode運(yùn)行 狀態(tài),從而為后繼的更新固件做好準(zhǔn)備。即,bootcode運(yùn)行狀態(tài)能夠進(jìn)行更新固件,runtime 運(yùn)行狀態(tài)不能夠進(jìn)行更新固件。需注意的是,若所述控制芯片模組判斷等待接收的時(shí)間超 過一預(yù)設(shè)的第一時(shí)間閾值時(shí),則所述控制芯片模組重新發(fā)送一更新開始命令至所述待更新 芯片模組,并且記錄重新發(fā)送更新開始命令的次數(shù)。進(jìn)一步,所述控制芯片模組判斷重新發(fā) 送更新開始命令的次數(shù)是否大于一預(yù)設(shè)的重發(fā)次數(shù)最大值,若是,則停止更新固件的操作。 為了保證更新固件工作的效率,在本發(fā)明的實(shí)施例中,設(shè)有一重發(fā)次數(shù)最大值,例如3次, 若重新發(fā)送更新開始命令的次數(shù)超過3次后,停止建立物理鏈接,即停止更新固件操作。上 述步驟S101?S105是可選步驟,用于使所述控制芯片模組嘗試與所述待更新芯片模組建 立物理鏈接。由于可能受環(huán)境因素(例如網(wǎng)絡(luò)環(huán)境)的影響,不能保證所述控制芯片模組 首次就能夠與所述待更新芯片模組成功建立物理鏈接,因此允許所述控制芯片模組多次嘗 試與所述待更新芯片模組建立物理鏈接。
[0036] 在步驟S110中,通過所述控制芯片模組發(fā)送可形成一更新固件的多個(gè)數(shù)據(jù)包給 所述待更新芯片模組,并且開始連續(xù)不中斷的發(fā)送多個(gè)包含更新固件的數(shù)據(jù)包給所述待更 新芯片模組,直至所述多個(gè)數(shù)據(jù)包發(fā)送完畢。在通過所述控制芯片模組發(fā)送可形成一更新 固件的多個(gè)數(shù)據(jù)包給所述待更新芯片模組的步驟之前,進(jìn)一步包括通過所述控制芯片模組 將更新固件分解成所述多個(gè)數(shù)據(jù)包。當(dāng)需要更新所述待更新芯片模組(例如服務(wù)器機(jī)架系 統(tǒng)中任一主板的嵌入式芯片的固件)時(shí),所述控制芯片模組首先讀取更新固件,然后將所 述更新固件拆分為多個(gè)數(shù)據(jù)包,以準(zhǔn)備之后發(fā)送至所述待更新芯片模組。在本發(fā)明的實(shí)施 例中,所述控制芯片模組會(huì)先發(fā)送一更新固件的命令(例如,SET FW IMAGE命令)至所述 待更新芯片模組,接著開始連續(xù)不中斷的發(fā)送多個(gè)包含更新固件的數(shù)據(jù)包給所述待更新芯 片模組(即待更新固件的芯片的引導(dǎo)代碼bootcode),直至所述多個(gè)數(shù)據(jù)包發(fā)送完畢,以保 證所述更新固件的數(shù)據(jù)包能夠被快速且可靠的傳輸。
[0037] 在步驟S120中,通過所述控制芯片模組發(fā)送一驗(yàn)證所述多個(gè)數(shù)據(jù)包的命令至所 述待更新芯片模組,以驗(yàn)證待更新芯片模組所接收的所述多個(gè)數(shù)據(jù)包是否正確(由于在傳 送過程中數(shù)據(jù)包可能會(huì)出錯(cuò))。當(dāng)更新固件被拆分為多個(gè)數(shù)據(jù)包進(jìn)行傳送時(shí),需要對(duì)所傳送 的多個(gè)數(shù)據(jù)包進(jìn)行CRC(即Cyclic Redundancy Check的縮寫,循環(huán)冗余校驗(yàn))驗(yàn)證,以保 證所傳送的更新固件的完整性和可靠性。在本發(fā)明的實(shí)施例中,通過發(fā)送一驗(yàn)證所述多個(gè) 數(shù)據(jù)包的命令(例如,CHECK FW IMAGE命令)至所述待更新芯片模組,以獲取所述多個(gè)數(shù) 據(jù)包的多個(gè)驗(yàn)證信息。同時(shí),經(jīng)研究,發(fā)現(xiàn)現(xiàn)有技術(shù)造成目前更新芯片固件緩慢和耗時(shí)較長 的原因在于,在現(xiàn)有機(jī)架式服務(wù)器系統(tǒng)的固件更新方法中,控制芯片模組每次發(fā)送一個(gè)數(shù) 據(jù)包給待更新芯片模組,都會(huì)等待所述待更新芯片模組(即設(shè)置在待更新芯片模組中的芯 片)返回單個(gè)被傳送數(shù)據(jù)包的CRC信息,然后控制芯片模組再檢查該單個(gè)數(shù)據(jù)包的CRC信 息是否正確,若正確才會(huì)再依次發(fā)送下一個(gè)數(shù)據(jù)包,若不正確則重新發(fā)送該單個(gè)數(shù)據(jù)包。由 于每發(fā)送完一個(gè)數(shù)據(jù)包后均需要等待所述待更新芯片模組的響應(yīng),若數(shù)據(jù)包較多(即更新 固件較大),于是會(huì)花費(fèi)較長的等待時(shí)間,以至造成現(xiàn)有技術(shù)更新芯片固件緩慢和耗時(shí)較長 的情況。而在本發(fā)明的實(shí)施例中,所述控制芯片模組將不再每發(fā)送一個(gè)數(shù)據(jù)包后等待待更 新芯片模組的響應(yīng),而是連續(xù)不中斷且一次性將所有數(shù)據(jù)包全部發(fā)送完畢,再檢驗(yàn)所述多 個(gè)數(shù)據(jù)包的多個(gè)CRC信息(包括正確及出錯(cuò)的全部CRC信息)。
[0038] 在步驟S130中,通過所述控制芯片模組接收從所述待更新芯片模組返回的所述 多個(gè)數(shù)據(jù)包的多個(gè)驗(yàn)證信息。
[0039] 在步驟S140中,通過所述控制芯片模組判斷所述多個(gè)數(shù)據(jù)包對(duì)應(yīng)的多個(gè)驗(yàn)證信 息是否全部正確。若其中某個(gè)驗(yàn)證信息不正確,則說明其所對(duì)應(yīng)的數(shù)據(jù)包出錯(cuò)。若不正確, 則控制芯片模組會(huì)進(jìn)一步發(fā)送一重新更新固件的命令(例如,RE-SET FW IMAGE命令)至 所述待更新芯片模組,并且將其中出錯(cuò)的數(shù)據(jù)包重新發(fā)送給所述待更新芯片模組,具體步 驟如下文所述。
[0040] 在步驟S140之后進(jìn)一步包括:步驟S151、通過所述控制芯片模組將出錯(cuò)的驗(yàn)證信 息所對(duì)應(yīng)的所有出錯(cuò)的數(shù)據(jù)包重新統(tǒng)一發(fā)送給所述待更新芯片模組;步驟S153、通過所述 控制芯片模組從所述待更新芯片模組獲得重新發(fā)送給所述待更新芯片模組的數(shù)據(jù)包對(duì)應(yīng) 的驗(yàn)證信息;步驟S155、通過所述控制芯片模組判斷重新發(fā)送給所述待更新芯片模組的數(shù) 據(jù)包對(duì)應(yīng)的驗(yàn)證信息是否正確;若正確,則所述控制芯片模組重新發(fā)送給所述待更新芯片 模組的數(shù)據(jù)包沒有出錯(cuò),若不正確,循環(huán)執(zhí)行步驟3151、3153、3155,直到所述控制芯片模組 從所述待更新芯片模組獲得的驗(yàn)證信息中不存在錯(cuò)誤的驗(yàn)證信息(即多個(gè)驗(yàn)證信息為全 部正確)。
[0041] 通過循環(huán)執(zhí)行步驟S151、S153和S155,以保證所述多個(gè)數(shù)據(jù)包均正確,即所述芯 片所獲得的更新固件是正確的。另外,在將其中所有出錯(cuò)的數(shù)據(jù)包一次性地重新發(fā)送的過 程中,重新發(fā)送的數(shù)據(jù)包個(gè)數(shù)為當(dāng)前出錯(cuò)的數(shù)據(jù)包的最大值,并且等待一次響應(yīng)。例如總 共出錯(cuò)的數(shù)據(jù)包為3個(gè),則將該3個(gè)出錯(cuò)的數(shù)據(jù)包再一次統(tǒng)一的發(fā)送,并且等待1次響應(yīng)。 而在現(xiàn)有技術(shù)中,重新發(fā)送數(shù)據(jù)包次數(shù)為當(dāng)前出錯(cuò)的數(shù)據(jù)包個(gè)數(shù)的累加值,并且等待多次 響應(yīng)。例如,總共出錯(cuò)的數(shù)據(jù)包為3個(gè),則第一次將第一個(gè)數(shù)據(jù)包進(jìn)行重發(fā),并且等待第一 次響應(yīng),第二次將第二數(shù)據(jù)包進(jìn)行重發(fā),并且等待第二次響應(yīng),第三次將第三數(shù)據(jù)包進(jìn)行重 發(fā),并且等待第三次響應(yīng)。因此本發(fā)明能夠有效地解決在發(fā)送多個(gè)數(shù)據(jù)包過程中繁瑣地等 待待更新芯片模組響應(yīng)這一步驟,從而節(jié)約大量時(shí)間,提升了固件更新速度。
[0042] 在步驟S155之后,可以進(jìn)一步包括:步驟S161、通過所述控制芯片模組發(fā)送一完 成更新固件的命令至所述待更新芯片模組;步驟S163、通過所述控制芯片模組從所述待更 新芯片模組獲得一完成更新固件的響應(yīng),所述待更新芯片模組已標(biāo)記為一固件更新成功狀 態(tài)。
[0043] 當(dāng)所述多個(gè)數(shù)據(jù)包的多個(gè)驗(yàn)證信息全部正確之后,所述控制芯片模組發(fā)送一完成 更新固件的命令(例如,COMPLETE命令)至所述待更新芯片模組。所述待更新芯片模組接 收到完成更新固件的命令后,更新固件標(biāo)識(shí)(例如flag = 1,表示固件更新成功,同時(shí)該標(biāo) 識(shí)也用于bootcode/runtime運(yùn)行狀態(tài)的切換,因此該標(biāo)識(shí)也可以被稱為切換模式標(biāo)識(shí)), 并執(zhí)行固件更新應(yīng)用程序,之后并返回一完成更新固件的響應(yīng)至控制芯片模組。在執(zhí)行固 件更新應(yīng)用程序過程中,提供兩種方式。優(yōu)選的,一種方式是設(shè)置在所述待更新芯片模組中 的芯片先將所有數(shù)據(jù)包在隨機(jī)存取內(nèi)存(即RAM)中收集,然后再寫入只讀內(nèi)存(即ROM) 中,以更新固件。另一種方式是所述芯片一邊在RAM中收集數(shù)據(jù)包,一邊將其寫入至ROM 中,從而完成更新固件的操作。所述控制芯片模組接收到從所述待更新芯片模組返回的一 完成更新固件的響應(yīng)后,表示所述固件更新已完成。需注意的是,設(shè)置在待更新芯片模組的 芯片所屬的主板重新啟動(dòng)后,會(huì)自動(dòng)檢查更新固件標(biāo)識(shí),若發(fā)現(xiàn)flag = 1時(shí),會(huì)自動(dòng)切換至 runtime運(yùn)行狀態(tài)。
[0044] 以下將提供一實(shí)施例,并結(jié)合圖2和圖3來進(jìn)一步說明本發(fā)明所述機(jī)架式服務(wù)器 系統(tǒng)的固件更新方法及現(xiàn)有技術(shù)機(jī)架式服務(wù)器系統(tǒng)的固件更新方法。
[0045] 圖2是現(xiàn)有機(jī)架式服務(wù)器系統(tǒng)的固件更新方法的信息交互示意圖。圖3是本發(fā)明 所述機(jī)架式服務(wù)器系統(tǒng)的固件更新方法的信息交互示意圖。
[0046] 參考圖2所示,假設(shè)發(fā)送一個(gè)數(shù)據(jù)包需要1秒,等待響應(yīng)需要1S,一共發(fā)送10個(gè) 包。
[0047] 步驟S211 :通過控制芯片模組發(fā)送第一個(gè)數(shù)據(jù)包至待更新芯片模組。
[0048] 步驟S212 :通過控制芯片模組發(fā)送數(shù)據(jù)包驗(yàn)證信息命令至待更新芯片模組。
[0049] 步驟S213 :通過控制芯片模組接收第一個(gè)數(shù)據(jù)包的驗(yàn)證信息。
[0050] 步驟S214 :通過控制芯片模組判斷驗(yàn)證信息是否正確,若正確,則發(fā)送第二個(gè)數(shù) 據(jù)包。
[0051] 步驟S215 :通過控制芯片模組發(fā)送第N個(gè)數(shù)據(jù)包至待更新芯片模組,其中N為小 于10。
[0052] 步驟S216 :通過控制芯片模組發(fā)送第N個(gè)數(shù)據(jù)包的驗(yàn)證信息命令至待更新芯片模 組。
[0053] 步驟S217 :通過控制芯片模組接收第N個(gè)數(shù)據(jù)包的驗(yàn)證信息。
[0054] 步驟S218 :通過控制芯片模組判斷該第N個(gè)數(shù)據(jù)包的驗(yàn)證信息是否正確,若不正 確,重新發(fā)送第N個(gè)數(shù)據(jù)包。
[0055] 步驟S219 :通過控制芯片模組再次判斷第N個(gè)數(shù)據(jù)包的驗(yàn)證信息是否正確,若正 確,則發(fā)送第N+1個(gè)數(shù)據(jù)包。
[0056] 因此,由上述流程可知,若發(fā)送10個(gè)數(shù)據(jù)包過程中,未有出錯(cuò)包的情況下,需花時(shí) 間約為20秒。當(dāng)出錯(cuò)1個(gè)數(shù)據(jù)包的情況下,需花時(shí)間約為20秒+1秒+1秒(即22秒)。 當(dāng)出錯(cuò)2個(gè)數(shù)據(jù)包的情況下,需花時(shí)間約為20秒+2秒+2秒(即24秒)。當(dāng)出錯(cuò)3個(gè)數(shù)據(jù) 包的情況下,需花時(shí)間約為20秒+3秒+3秒(即26秒)。當(dāng)出錯(cuò)N個(gè)數(shù)據(jù)包的情況下,需 花時(shí)間約為20秒+N秒+N秒(即20秒+2N秒)。
[0057] 接著,參考圖3所示,假設(shè)序列式地發(fā)送10個(gè)數(shù)據(jù)包需要1秒,等待響應(yīng)需要1S, 一共發(fā)送10個(gè)包。
[0058] 步驟S311 :通過控制芯片模組發(fā)送10個(gè)數(shù)據(jù)包至待更新芯片模組。
[0059] 步驟S312 :通過控制芯片模組發(fā)送10個(gè)數(shù)據(jù)包的驗(yàn)證信息命令至待更新芯片模 組。
[0060] 步驟S313 :通過控制芯片模組接收10個(gè)數(shù)據(jù)包的驗(yàn)證信息。
[0061] 步驟S314 :通過控制芯片模組判斷10個(gè)數(shù)據(jù)包的驗(yàn)證信息是否正確,若發(fā)現(xiàn)有3 個(gè)數(shù)據(jù)包不正確,則將其中出錯(cuò)的3個(gè)數(shù)據(jù)包進(jìn)行第一次的重新發(fā)送。
[0062] 步驟S315 :通過控制芯片模組再次判斷所述出錯(cuò)的3個(gè)包的驗(yàn)證信息是否正確, 若正確,則表示完成更新固件的傳送,若仍然發(fā)現(xiàn)有2個(gè)包的驗(yàn)證信息不正確,則將出錯(cuò)的 2個(gè)數(shù)據(jù)包進(jìn)行第二次的重新發(fā)送。
[0063] 步驟S316 :通過控制芯片模組再次判斷所述出錯(cuò)的2個(gè)包的驗(yàn)證信息是否正確, 若正確,則表示完成更新固件的傳送,若仍然發(fā)現(xiàn)有1個(gè)包的驗(yàn)證信息不正確,則將出錯(cuò)的 1個(gè)數(shù)據(jù)包進(jìn)行第三次的重新發(fā)送。
[0064] 步驟S317 :通過控制芯片模組再次判斷所述出錯(cuò)的1個(gè)包的驗(yàn)證信息是否正確, 若正確,則表示完成更新固件的傳送。
[0065] 因此,由上述流程可知,若發(fā)送10個(gè)數(shù)據(jù)包過程中,未有出錯(cuò)包的情況下,需花時(shí) 間近似為2秒(假設(shè)認(rèn)為發(fā)送1個(gè)數(shù)據(jù)包的時(shí)間相當(dāng)于同時(shí)發(fā)送10個(gè)數(shù)據(jù)包的時(shí)間。在 實(shí)務(wù)操作中,考慮到數(shù)據(jù)包自身數(shù)據(jù)的大小以及網(wǎng)絡(luò)環(huán)境,同時(shí)發(fā)送10個(gè)數(shù)據(jù)包的時(shí)間應(yīng) 稍大于發(fā)送1個(gè)數(shù)據(jù)包的時(shí)間)。當(dāng)?shù)?次有數(shù)據(jù)包出錯(cuò)的情況下,需花時(shí)間約為2秒+1 秒+1秒(即4秒)。當(dāng)?shù)?次有數(shù)據(jù)包出錯(cuò)的情況下,需花時(shí)間約為4秒+1秒+1秒(即 6秒)。當(dāng)?shù)?次有數(shù)據(jù)包出錯(cuò)的情況下,需花時(shí)間約為6秒+1秒+1秒(即8秒)。當(dāng)?shù)?N次有數(shù)據(jù)包出錯(cuò)的情況下,需花時(shí)間約為2N秒+1秒+1秒(即2N+2秒)。
[0066] 因此,上述內(nèi)容可知,本發(fā)明在將所有出錯(cuò)的數(shù)據(jù)包一次性地重新發(fā)送的過程中, 重新發(fā)送的數(shù)據(jù)包個(gè)數(shù)為當(dāng)前出錯(cuò)的數(shù)據(jù)包的最大值,并且等待一次響應(yīng)。而在現(xiàn)有技術(shù) 中,重新發(fā)送數(shù)據(jù)包次數(shù)為當(dāng)前出錯(cuò)的數(shù)據(jù)包個(gè)數(shù)的累加值,并且等待多次響應(yīng)。于是,本 發(fā)明能夠有效地解決在發(fā)送多個(gè)數(shù)據(jù)包過程中繁瑣地等待所述待更新芯片模組響應(yīng)這一 步驟,從而節(jié)約大量時(shí)間,提升了固件更新速度。
[0067] 圖4是本發(fā)明一實(shí)施例中所述固件更新裝置所在服務(wù)器的架構(gòu)示意圖。參見圖4 所示,根據(jù)本發(fā)明一實(shí)施例,本發(fā)明所述一種固件更新裝置500,適用于通過一控制芯片模 組410更新一待更新芯片模組420的固件。在本實(shí)施例中,所述控制芯片模組410為一機(jī) 架式服務(wù)器系統(tǒng)400的一機(jī)架管理控制器,以對(duì)待更新芯片模組420所具有固件的芯片430 進(jìn)行固件更新。所述機(jī)架式服務(wù)器系統(tǒng)400包括連接所述機(jī)架管理控制器的至少一服務(wù)器 (圖中未示),所述至少一服務(wù)器包含所述待更新芯片模組420,所述機(jī)架管理控制器可控 制所述至少一服務(wù)器的開機(jī)與關(guān)機(jī)。所述機(jī)架管理控制器具有一 ARM系列芯片且運(yùn)行著一 嵌入式Linux系統(tǒng),但不以此限定本發(fā)明請(qǐng)求保護(hù)的范圍。在其他實(shí)施例中,所述控制芯片 模組410也可以為一服務(wù)器(圖中未示)的一基板管理控制器,所述基板管理控制器可控 制所述服務(wù)器的開機(jī)與關(guān)機(jī),所述服務(wù)器包含所述待更新芯片模組420。此外,所述待更新 芯片模組420是一具有固件的芯片430,所述具有固件的芯片430設(shè)置于一服務(wù)器的一主板 (圖中未示)上。
[0068] 圖5是本發(fā)明一實(shí)施例中所述固件更新裝置的架構(gòu)圖。參見圖5及圖4所示,所 述固件更新裝置500包括:一數(shù)據(jù)包發(fā)送模塊510、一驗(yàn)證信息請(qǐng)求模塊520、一驗(yàn)證信息獲 取模塊530和一驗(yàn)證信息判斷模塊540。在本發(fā)明一實(shí)施例中,所述固件更新裝置500可以 設(shè)置在控制芯片模組內(nèi),用于對(duì)一服務(wù)器機(jī)架系統(tǒng)中的至少一主板的至少一芯片進(jìn)行固件 更新。而在其他實(shí)施例中,所述固件更新裝置500也可以設(shè)置在服務(wù)器機(jī)架系統(tǒng)的其他設(shè) 備內(nèi),以對(duì)至少一主板的至少一芯片進(jìn)行固件更新,當(dāng)然,所述固件更新裝置500也可以是 獨(dú)立一體的。
[0069] 其中,數(shù)據(jù)包發(fā)送模塊510,用以通過所述控制芯片模組410發(fā)送可形成一更新固 件的多個(gè)數(shù)據(jù)包給所述待更新芯片模組420。在本發(fā)明一實(shí)施例中,所述固件更新裝置500 會(huì)首先發(fā)送一更新固件的命令至所述待更新芯片模組420,接著開始連續(xù)不中斷的發(fā)送多 個(gè)包含更新固件的數(shù)據(jù)包給所述待更新芯片模組420。所述控制芯片模組410與所述待更 新芯片模組420之間的傳輸通道帶寬有限,對(duì)傳輸資料的大小具有限制,因此需要將更新 固件拆分為多個(gè)數(shù)據(jù)包后進(jìn)行發(fā)送,直至所述多個(gè)數(shù)據(jù)包發(fā)送完畢。
[0070] 所述驗(yàn)證信息請(qǐng)求模塊520,與所述數(shù)據(jù)包發(fā)送模塊510相連,用以通過所述控制 芯片模組410發(fā)送一驗(yàn)證所述多個(gè)數(shù)據(jù)包的命令至所述待更新芯片模組420。由于更新固 件被拆分為多個(gè)數(shù)據(jù)包進(jìn)行傳送,因此需要對(duì)所傳送的多個(gè)數(shù)據(jù)包進(jìn)行CRC驗(yàn)證,以保證 所傳送的更新固件的完整性和可靠性。
[0071] 所述驗(yàn)證信息獲取模塊530,與所述驗(yàn)證信息請(qǐng)求模塊520相連,用以通過所述控 制芯片模組410從所述待更新芯片模組420獲得所述多個(gè)數(shù)據(jù)包對(duì)應(yīng)的多個(gè)驗(yàn)證信息。
[0072] 所述驗(yàn)證信息判斷模塊540,與所述驗(yàn)證信息獲取模塊530相連,用以通過所述控 制芯片模組410判斷所述多個(gè)數(shù)據(jù)包對(duì)應(yīng)的多個(gè)驗(yàn)證信息是否全部正確,以確認(rèn)所述待更 新芯片模組420收到的所述多個(gè)數(shù)據(jù)包是否出錯(cuò)。
[0073] 所述固件更新裝置500進(jìn)一步包括:數(shù)據(jù)包重發(fā)模塊551、驗(yàn)證信息重獲模塊552 和驗(yàn)證信息重判模塊553。其中所述數(shù)據(jù)包重發(fā)模塊551,與所述驗(yàn)證信息判斷模塊540相 連,用于在所述多個(gè)驗(yàn)證信息中有驗(yàn)證信息不正確,通過所述控制芯片模組410將出錯(cuò)的 驗(yàn)證信息所對(duì)應(yīng)的數(shù)據(jù)包重新發(fā)送給所述待更新芯片模組420。亦即,當(dāng)所述控制芯片模 組410在獲得所述多個(gè)數(shù)據(jù)包的多個(gè)驗(yàn)證信息后,若發(fā)現(xiàn)所述多個(gè)數(shù)據(jù)包的驗(yàn)證信息存有 錯(cuò)誤,所述固件更新裝置500會(huì)將其中所有出錯(cuò)的數(shù)據(jù)包統(tǒng)一重新發(fā)送至所述待更新芯片 模組420。驗(yàn)證信息重獲模塊552,與所述數(shù)據(jù)包重發(fā)模塊551相連,用于通過所述控制芯 片模組410從所述待更新芯片模組420獲得重新發(fā)送給所述待更新芯片模組420的數(shù)據(jù)包 對(duì)應(yīng)的驗(yàn)證信息。驗(yàn)證信息重判模塊553,與所述驗(yàn)證信息重獲模塊552相連,用于通過所 述控制芯片模組410判斷重新發(fā)送給所述待更新芯片模組420的數(shù)據(jù)包對(duì)應(yīng)的驗(yàn)證信息是 否正確,當(dāng)驗(yàn)證信息不正確時(shí),調(diào)用所述數(shù)據(jù)包重發(fā)模塊。亦即,在將所有出錯(cuò)的數(shù)據(jù)包統(tǒng) 一重新發(fā)送的過程中,若其中所述多個(gè)數(shù)據(jù)包的多個(gè)驗(yàn)證信息仍存有錯(cuò)誤,則繼續(xù)將其中 出錯(cuò)的數(shù)據(jù)包再一次重新發(fā)送至所述待更新芯片模組420,直至驗(yàn)證所述多個(gè)數(shù)據(jù)包全部 正確為止。
[0074] 在將其中所有出錯(cuò)的數(shù)據(jù)包一次性地重新發(fā)送的過程中,重新發(fā)送的數(shù)據(jù)包個(gè)數(shù) 為當(dāng)前出錯(cuò)的數(shù)據(jù)包的最大值,并且等待一次響應(yīng)。而現(xiàn)有技術(shù)是重新發(fā)送數(shù)據(jù)包次數(shù)為 當(dāng)前出錯(cuò)的數(shù)據(jù)包個(gè)數(shù)的累加值,并且等待多次響應(yīng)。因此本發(fā)明能夠有效地解決在發(fā)送 多個(gè)數(shù)據(jù)包過程中繁瑣地等待響應(yīng),從而節(jié)約大量時(shí)間,提升了固件更新速度。
[0075] 根據(jù)本發(fā)明一實(shí)施例,所述固件更新裝置500還可以包括:一更新開始命令發(fā)送 模塊501、一運(yùn)行狀態(tài)獲取模塊505和一運(yùn)行狀態(tài)判斷模塊506。所述更新開始命令發(fā)送模 塊501、運(yùn)行狀態(tài)獲取模塊505和運(yùn)行狀態(tài)判斷模塊506為可選組件。
[0076] 其中,所述更新開始命令發(fā)送模塊501,用以通過所述控制芯片模組410發(fā)送一更 新開始命令至所述待更新芯片模組420。通過發(fā)送更新開始命令,以嘗試與所述待更新芯片 模組420建立一物理鏈路。同時(shí)該更新開始命令中包含更新固件應(yīng)用程序的首地址、每一 數(shù)據(jù)包的大小以及數(shù)據(jù)包的數(shù)量等信息。當(dāng)發(fā)送該更新開始命令后,表示準(zhǔn)備開始更新固 件,并且等待所述待更新芯片模組420的響應(yīng)。
[0077] 所述運(yùn)行狀態(tài)獲取模塊505,用以通過所述控制芯片模組410從所述待更新芯片 模組420獲得一運(yùn)行狀態(tài)信息。在本發(fā)明的實(shí)施例中,所述運(yùn)行狀態(tài)獲取模塊505與一重 發(fā)次數(shù)判斷模塊504 (下文有詳述)相連,而在其他實(shí)施例中,所述運(yùn)行狀態(tài)獲取模塊505 可以直接與更新開始命令發(fā)送模塊501相連(如圖5中虛線連接所示)。所述運(yùn)行狀態(tài)判 斷模塊506,與所述運(yùn)行狀態(tài)獲取模塊505相連,用以通過所述控制芯片模組410判斷所述 運(yùn)行狀態(tài)信息是否為一第一運(yùn)行狀態(tài),若不是,則所述待更新芯片模組420切換為第一運(yùn) 行狀態(tài)。
[0078] 所述固件更新裝置500進(jìn)一步可以包括以下可選組件:一等待接收模塊502、一更 新開始命令重發(fā)模塊503以及一重發(fā)次數(shù)判斷模塊504。
[0079] 其中,所述等待接收模塊502,與更新開始命令發(fā)送模塊501相連,用以通過所述 控制芯片模組410從所述待更新芯片模組420等待接收一運(yùn)行狀態(tài)信息。當(dāng)所述待更新芯 片模組420接收到更新開始命令后,所述待更新芯片模組420返回設(shè)置在所述待更新芯片 模組420中的芯片所屬的主板的當(dāng)前運(yùn)行狀態(tài),包括bootcode和runtime兩種運(yùn)行狀態(tài), bootcode運(yùn)行狀態(tài)用于更新固件操作,而runtime運(yùn)行狀態(tài)用于主板正常工作。所述控制 芯片模組410會(huì)判斷所述運(yùn)行狀態(tài)信息是否為一預(yù)設(shè)的第一運(yùn)行狀態(tài)(例如bootcode運(yùn) 行狀態(tài))。若設(shè)置在待更新芯片模組420中的芯片所屬的主板的當(dāng)前運(yùn)行狀態(tài)為runtime 運(yùn)行狀態(tài),則自動(dòng)切換至bootcode運(yùn)行狀態(tài),從而為后繼的固件更新做好準(zhǔn)備。
[0080] 所述更新開始命令重發(fā)模塊503,與所述等待接收模塊502相連,用以若等待接收 的時(shí)間超過一預(yù)設(shè)的第一時(shí)間閾值時(shí),則所述控制芯片模組410重新發(fā)送一更新開始命令 至所述待更新芯片模組420,并且記錄重新發(fā)送更新開始命令的次數(shù)。
[0081] 所述重發(fā)次數(shù)判斷模塊504,與所述更新開始命令重發(fā)模塊503相連,用以通過所 述控制芯片模組410判斷重新發(fā)送更新開始命令的次數(shù)是否大于一預(yù)設(shè)的重發(fā)次數(shù)最大 值,若是,則停止更新固件的操作。所述固件更新裝置500嘗試與所述待更新芯片模組420 建立物理鏈接,由于可能受環(huán)境因素(例如網(wǎng)絡(luò)環(huán)境)的影響,不能保證所述固件更新裝置 500首次就能夠與所述待更新芯片模組420成功建立物理鏈接,因此允許所述固件更新裝 置500多次地嘗試與所述待更新芯片模組420建立物理鏈接。為了保證更新固件工作的效 率,設(shè)有一重發(fā)次數(shù)最大值,例如3次,若重新發(fā)送更新開始命令的次數(shù)超過3次后,停止建 立物理鏈接,即停止更新固件操作。
[0082] 所述固件更新裝置500還可以包括以下可選組件:一完成更新請(qǐng)求模塊561和一 完成更新響應(yīng)模塊562。其中,所述完成更新請(qǐng)求模塊561,用以通過所述控制芯片模組410 發(fā)送一完成更新固件的命令至所述待更新芯片模組420。
[0083] 所述完成更新響應(yīng)模塊562,與所述完成更新請(qǐng)求模塊561相連,通過所述控制芯 片模組410從所述待更新芯片模組420獲得一完成更新固件的響應(yīng),所述待更新芯片模組 420已標(biāo)記為一固件更新成功狀態(tài)。亦即,當(dāng)設(shè)置在所述待更新芯片模組420中的芯片接 收到完成更新固件的命令后,所述芯片會(huì)更新固件標(biāo)識(shí)(例如flag = 1,表示固件更新成 功,同時(shí)該標(biāo)識(shí)也用于bootcode/runtime運(yùn)行狀態(tài)的切換,因此該標(biāo)識(shí)也可以被稱為切換 模式標(biāo)識(shí)),并且執(zhí)行固件更新應(yīng)用程序,之后返回一完成更新固件的響應(yīng)至所述控制芯片 模組410。
[〇〇84] 以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本【技術(shù)領(lǐng)域】的普通技術(shù)人 員,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為 本發(fā)明的保護(hù)范圍。
【權(quán)利要求】
1. 一種機(jī)架式服務(wù)器系統(tǒng)的固件更新方法,適用于通過一控制芯片模組更新一待更新 芯片模組的固件,其中所述控制芯片模組為一機(jī)架式服務(wù)器系統(tǒng)的一機(jī)架管理控制器,所 述機(jī)架式服務(wù)器系統(tǒng)包括連接所述機(jī)架管理控制器的至少一服務(wù)器,所述至少一服務(wù)器包 含所述待更新芯片模組,所述機(jī)架管理控制器可控制所述至少一服務(wù)器的開機(jī)與關(guān)機(jī),其 特征在于,所述更新方法包括以下步驟: 通過所述控制芯片模組發(fā)送可形成一更新固件的多個(gè)數(shù)據(jù)包給所述待更新芯片模 組; 通過所述控制芯片模組發(fā)送一驗(yàn)證所述多個(gè)數(shù)據(jù)包的命令至所述待更新芯片模組; 通過所述控制芯片模組從所述待更新芯片模組獲得所述多個(gè)數(shù)據(jù)包對(duì)應(yīng)的多個(gè)驗(yàn)證 信息; 通過所述控制芯片模組判斷所述多個(gè)數(shù)據(jù)包對(duì)應(yīng)的多個(gè)驗(yàn)證信息是否全部正確,以確 認(rèn)所述待更新芯片模組收到的所述多個(gè)數(shù)據(jù)包是否出錯(cuò)。
2. 根據(jù)權(quán)利要求1所述的機(jī)架式服務(wù)器系統(tǒng)的固件更新方法,其特征在于,在通過所 述控制芯片模組判斷所述多個(gè)數(shù)據(jù)包對(duì)應(yīng)的多個(gè)驗(yàn)證信息是否正確的步驟中,包括:若其 中有驗(yàn)證信息不正確,進(jìn)一步包括: a、 通過所述控制芯片模組將出錯(cuò)的驗(yàn)證信息所對(duì)應(yīng)的數(shù)據(jù)包重新發(fā)送給所述待更新 芯片模組; b、 通過所述控制芯片模組從所述待更新芯片模組獲得重新發(fā)送給所述待更新芯片模 組的數(shù)據(jù)包對(duì)應(yīng)的驗(yàn)證信息; c、 通過所述控制芯片模組判斷重新發(fā)送給所述待更新芯片模組的數(shù)據(jù)包對(duì)應(yīng)的驗(yàn)證 /[目息是否正確; 若正確,則所述控制芯片模組重新發(fā)送給所述待更新芯片模組的數(shù)據(jù)包沒有出錯(cuò),若 不正確,循環(huán)執(zhí)行步驟a、b、c,直到所述控制芯片模組從所述待更新芯片模組獲得的驗(yàn)證信 息中不存在錯(cuò)誤的驗(yàn)證信息。
3. 根據(jù)權(quán)利要求1所述的機(jī)架式服務(wù)器系統(tǒng)的固件更新方法,其特征在于,在通過所 述控制芯片模組發(fā)送可形成一更新固件的多個(gè)數(shù)據(jù)包給所述待更新芯片模組的步驟之前, 進(jìn)一步包括通過所述控制芯片模組將更新固件分解成所述多個(gè)數(shù)據(jù)包。
4. 根據(jù)權(quán)利要求1所述的機(jī)架式服務(wù)器系統(tǒng)的固件更新方法,其特征在于,在通過所 述控制芯片模組判斷所述多個(gè)數(shù)據(jù)包對(duì)應(yīng)的多個(gè)驗(yàn)證信息是否正確的步驟中,包括:若所 述多個(gè)驗(yàn)證信息正確,則待更新芯片模組收到的各數(shù)據(jù)包沒有出錯(cuò)。
5. 根據(jù)權(quán)利要求1所述的機(jī)架式服務(wù)器系統(tǒng)的固件更新方法,其特征在于,所述待更 新芯片模組是一具有固件的芯片,所述具有固件的芯片設(shè)置于一服務(wù)器的一主板上。
6. 根據(jù)權(quán)利要求1所述的機(jī)架式服務(wù)器系統(tǒng)的固件更新方法,其特征在于,在通過所 述控制芯片模組發(fā)送可形成一更新固件的多個(gè)數(shù)據(jù)包給所述待更新芯片模組的步驟之前 進(jìn)一步包括: 通過所述控制芯片模組發(fā)送一更新開始命令至所述待更新芯片模組; 通過所述控制芯片模組從所述待更新芯片模組獲得一運(yùn)行狀態(tài)信息; 通過所述控制芯片模組判斷所述運(yùn)行狀態(tài)信息是否為一第一運(yùn)行狀態(tài),若不是,則所 述待更新芯片模組切換為第一運(yùn)行狀態(tài)。
7. 根據(jù)權(quán)利要求6所述的機(jī)架式服務(wù)器系統(tǒng)的固件更新方法,其特征在于,在通過所 述控制芯片模組發(fā)送一更新開始命令至所述待更新芯片模組的步驟之后進(jìn)一步包括: 通過所述控制芯片模組從所述待更新芯片模組等待接收一運(yùn)行狀態(tài)信息; 若等待接收的時(shí)間超過一預(yù)設(shè)的第一時(shí)間閾值時(shí),則所述控制芯片模組重新發(fā)送一更 新開始命令至所述待更新芯片模組,并且記錄重新發(fā)送更新開始命令的次數(shù)。
8. 根據(jù)權(quán)利要求7所述的機(jī)架式服務(wù)器系統(tǒng)的固件更新方法,其特征在于,在所述控 制芯片模組重新發(fā)送一更新開始命令至所述待更新芯片模組,并且記錄重新發(fā)送更新開始 命令的次數(shù)的步驟之后,進(jìn)一步包括: 通過所述控制芯片模組判斷重新發(fā)送更新開始命令的次數(shù)是否大于一預(yù)設(shè)的重發(fā)次 數(shù)最大值; 若是,則停止更新固件的操作。
9. 根據(jù)權(quán)利要求2所述的機(jī)架式服務(wù)器系統(tǒng)的固件更新方法,其特征在于,在所述控 制芯片模組從所述待更新芯片模組獲得的驗(yàn)證信息中不存在錯(cuò)誤的驗(yàn)證信息的步驟之后, 進(jìn)一步包括: 通過所述控制芯片模組發(fā)送一完成更新固件的命令至所述待更新芯片模組; 通過所述控制芯片模組從所述待更新芯片模組獲得一完成更新固件的響應(yīng),所述待更 新芯片模組已標(biāo)記為一固件更新成功狀態(tài)。
10. -種固件更新裝置,適用于通過一控制芯片模組更新一待更新芯片模組的固件,所 述控制芯片模組為一機(jī)架式服務(wù)器系統(tǒng)的一機(jī)架管理控制器,所述機(jī)架式服務(wù)器系統(tǒng)包括 連接所述機(jī)架管理控制器的至少一服務(wù)器,所述至少一服務(wù)器包含所述待更新芯片模組, 所述機(jī)架管理控制器可控制所述至少一服務(wù)器的開機(jī)與關(guān)機(jī),其特征在于,所述固件更新 裝置包括: 數(shù)據(jù)包發(fā)送模塊,用以通過所述控制芯片模組發(fā)送可形成一更新固件的多個(gè)數(shù)據(jù)包給 所述待更新芯片模組; 驗(yàn)證信息請(qǐng)求模塊,與所述數(shù)據(jù)包發(fā)送模塊相連,用以通過所述控制芯片模組發(fā)送一 驗(yàn)證所述多個(gè)數(shù)據(jù)包的命令至所述待更新芯片模組; 驗(yàn)證信息獲取模塊,與所述驗(yàn)證信息請(qǐng)求模塊相連,用以通過所述控制芯片模組從所 述待更新芯片模組獲得所述多個(gè)數(shù)據(jù)包對(duì)應(yīng)的多個(gè)驗(yàn)證信息; 驗(yàn)證信息判斷模塊,與所述驗(yàn)證信息獲取模塊相連,用以通過所述控制芯片模組判斷 所述多個(gè)數(shù)據(jù)包對(duì)應(yīng)的多個(gè)驗(yàn)證信息是否全部正確,以確認(rèn)所述待更新芯片模組收到的所 述多個(gè)數(shù)據(jù)包是否出錯(cuò)。
11. 根據(jù)權(quán)利要求10所述固件更新裝置,其特征在于,進(jìn)一步包括: 數(shù)據(jù)包重發(fā)模塊,與所述驗(yàn)證信息判斷模塊相連,用于在所述多個(gè)驗(yàn)證信息中有驗(yàn)證 信息不正確,通過所述控制芯片模組將出錯(cuò)的驗(yàn)證信息所對(duì)應(yīng)的數(shù)據(jù)包重新發(fā)送給所述待 更新芯片模組; 驗(yàn)證信息重獲模塊,與所述數(shù)據(jù)包重發(fā)模塊相連,用于通過所述控制芯片模組從所述 待更新芯片模組獲得重新發(fā)送給所述待更新芯片模組的數(shù)據(jù)包對(duì)應(yīng)的驗(yàn)證信息; 驗(yàn)證信息重判模塊,與所述驗(yàn)證信息重獲模塊相連,用于通過所述控制芯片模組判斷 重新發(fā)送給所述待更新芯片模組的數(shù)據(jù)包對(duì)應(yīng)的驗(yàn)證信息是否正確,當(dāng)驗(yàn)證信息不正確 時(shí),調(diào)用所述數(shù)據(jù)包重發(fā)模塊。
12. 根據(jù)權(quán)利要求10所述固件更新裝置,其特征在于,所述待更新芯片模組是一具有 固件的芯片,所述具有固件的芯片設(shè)置于一服務(wù)器的一主板上。
13. 根據(jù)權(quán)利要求10所述固件更新裝置,其特征在于,進(jìn)一步包括: 更新開始命令發(fā)送模塊,用以通過所述控制芯片模組發(fā)送一更新開始命令至所述待更 新芯片模組; 運(yùn)行狀態(tài)獲取模塊,與所述更新開始命令發(fā)送模塊相連,用以通過所述控制芯片模組 從所述待更新芯片模組獲得一運(yùn)行狀態(tài)信息; 運(yùn)行狀態(tài)判斷模塊,與所述運(yùn)行狀態(tài)獲取模塊相連,用以通過所述控制芯片模組判斷 所述運(yùn)行狀態(tài)信息是否為一第一運(yùn)行狀態(tài),若不是,則所述待更新芯片模組切換為第一運(yùn) 行狀態(tài)。
14. 根據(jù)權(quán)利要求13所述固件更新裝置,其特征在于,進(jìn)一步包括: 等待接收模塊,用以通過所述控制芯片模組從所述待更新芯片模組等待接收一運(yùn)行狀 態(tài)息; 更新開始命令重發(fā)模塊,與所述等待接收模塊相連,用以若等待接收的時(shí)間超過一預(yù) 設(shè)的第一時(shí)間閾值時(shí),則所述控制芯片模組重新發(fā)送一更新開始命令至所述待更新芯片模 組,并且記錄重新發(fā)送更新開始命令的次數(shù)。
15. 根據(jù)權(quán)利要求14所述固件更新裝置,其特征在于,進(jìn)一步包括: 重發(fā)次數(shù)判斷模塊,用以通過所述控制芯片模組判斷重新發(fā)送更新開始命令的次數(shù)是 否大于一預(yù)設(shè)的重發(fā)次數(shù)最大值,若是,則停止更新固件的操作。
16. 根據(jù)權(quán)利要求11所述固件更新裝置,其特征在于,進(jìn)一步包括: 完成更新請(qǐng)求模塊,用以通過所述控制芯片模組發(fā)送一完成更新固件的命令至所述待 更新芯片模組; 完成更新響應(yīng)模塊,與所述完成更新請(qǐng)求模塊相連,用以通過所述控制芯片模組從所 述待更新芯片模組獲得一完成更新固件的響應(yīng),所述待更新芯片模組已標(biāo)記為一固件更新 成功狀態(tài)。
【文檔編號(hào)】G06F9/445GK104102519SQ201410356833
【公開日】2014年10月15日 申請(qǐng)日期:2014年7月24日 優(yōu)先權(quán)日:2014年7月24日
【發(fā)明者】楊浩銳 申請(qǐng)人:英業(yè)達(dá)科技有限公司, 英業(yè)達(dá)股份有限公司