本發(fā)明涉及軟件升級(jí)領(lǐng)域,尤其涉及一種軟件升級(jí)方法、軟件升級(jí)裝置及計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。
背景技術(shù):
嵌入式芯片由于產(chǎn)品升級(jí)、bug修復(fù)、需求變更等等原因往往需要升級(jí)軟件,每個(gè)廠家由于技術(shù)封鎖,往往都要使用專(zhuān)用的程序燒錄器,當(dāng)出現(xiàn)問(wèn)題時(shí),往往需要拿著專(zhuān)用的燒錄器去現(xiàn)場(chǎng)更新軟件,更新過(guò)程需要專(zhuān)業(yè)的人員操作,包括拆機(jī)、燒錄、重新安裝好、調(diào)試等步驟;市場(chǎng)上的機(jī)器非常分散,一個(gè)個(gè)去更新將面對(duì)巨大人力、財(cái)力以及時(shí)間的浪費(fèi)。
隨著技術(shù)的進(jìn)步,芯片逐漸支持軟件的自升級(jí)功能,通過(guò)某些途徑,包括但不限于使用串口通信、tcp/ip、usb接口、sd卡等方式,將燒錄代碼傳給芯片,芯片自己將燒錄代碼的數(shù)據(jù)寫(xiě)入到芯片的flash中,完成軟件的升級(jí)。這樣對(duì)設(shè)備進(jìn)行軟件升級(jí)將會(huì)變的極為便利,不再依賴(lài)專(zhuān)用的燒錄器,可以通過(guò)互聯(lián)網(wǎng)、無(wú)線wifi或是普通電腦、優(yōu)盤(pán)等工具就可以對(duì)軟件升級(jí),升級(jí)時(shí)也不需要拆開(kāi)設(shè)備,避免對(duì)硬件進(jìn)行破壞。
目前,現(xiàn)有的固件(軟件)升級(jí)方法均需在升級(jí)過(guò)程中,一般系統(tǒng)重啟后,邊下載新版本軟件數(shù)據(jù)邊采用下載的新版本軟件數(shù)據(jù)替換主芯片中的舊版本軟件數(shù)據(jù),在新版本軟件下載出錯(cuò)導(dǎo)致升級(jí)失敗時(shí)不能夠恢復(fù)主芯片中的舊版本軟件數(shù)據(jù)同時(shí)新版本軟件又未升級(jí)成功,導(dǎo)致軟件無(wú)法運(yùn)行,特別是升級(jí)系統(tǒng)軟件時(shí)容易導(dǎo)致系統(tǒng)崩潰。
上述內(nèi)容僅用于輔助理解本發(fā)明的技術(shù)方案,并不代表承認(rèn)上述內(nèi)容是現(xiàn)有技術(shù)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的主要目的在于提供一種軟件升級(jí)方法、軟件升級(jí)裝置及計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),旨在解決現(xiàn)有技術(shù)在軟件升級(jí)時(shí)新版本軟件下載出錯(cuò)導(dǎo)致的軟件無(wú)法運(yùn)行甚至系統(tǒng)崩潰的技術(shù)問(wèn)題。
為解決上述問(wèn)題,本發(fā)明提供一種軟件升級(jí)方法,包括以下步驟:
主芯片在接收到主機(jī)發(fā)送的新版軟件數(shù)據(jù)時(shí),將接收到的所述新版軟件數(shù)據(jù)寫(xiě)入備份程序區(qū);所述備份程序區(qū)所在的存儲(chǔ)器為非易失性存儲(chǔ)器;
在接收到所述新版軟件數(shù)據(jù)的所有數(shù)據(jù)后,所述主芯片重新啟動(dòng);
在重啟后,所述主芯片采用所述備份程序區(qū)的新版軟件數(shù)據(jù)替換應(yīng)用程序區(qū)的舊版本軟件數(shù)據(jù),以對(duì)舊版本軟件升級(jí)。
優(yōu)選地,所述將接收到的所述新版軟件數(shù)據(jù)寫(xiě)入備份程序區(qū)的步驟之后,所述軟件升級(jí)方法還包括:
向主機(jī)反饋與所接收到的新版軟件數(shù)據(jù)相對(duì)應(yīng)的幀號(hào)信息;
其中,所述主機(jī)依次發(fā)送新版本軟件數(shù)據(jù)的每一幀數(shù)據(jù)以及對(duì)應(yīng)的幀號(hào)信息,并在發(fā)送每一幀新版軟件數(shù)據(jù)后接收所述主芯片反饋的幀號(hào)信息;在接收到所述幀號(hào)信息后,所述主機(jī)判斷接收到的幀號(hào)信息與已發(fā)送的最后一幀新版軟件數(shù)據(jù)的幀號(hào)信息是否一致;若是,則向所述主芯片發(fā)送下一幀新版軟件數(shù)據(jù),直至發(fā)送完所述新版本軟件數(shù)據(jù)的所有數(shù)據(jù);若否或所述主芯片無(wú)響應(yīng)時(shí),重新發(fā)送所述新版本軟件數(shù)據(jù),直至達(dá)到重發(fā)極限次數(shù)時(shí)終止升級(jí)。
優(yōu)選地,所述將接收到的所述新版軟件數(shù)據(jù)寫(xiě)入備份程序區(qū)的步驟之后,還包括:
所述主芯片判斷當(dāng)前接收到的新版軟件數(shù)據(jù)的幀號(hào)信息與接收到的前一幀新版軟件數(shù)據(jù)的幀號(hào)信息是否相差1;
若是,則執(zhí)行所述向主機(jī)返回與所獲取的此幀新版軟件數(shù)據(jù)相對(duì)應(yīng)的幀號(hào)信息的步驟;
若否,則向所述主機(jī)發(fā)送升級(jí)異常指令,以供所述主機(jī)在接收到所述升級(jí)異常指令時(shí),重新發(fā)送所述新版軟件數(shù)據(jù)或停止發(fā)送所述新版軟件數(shù)據(jù)。
優(yōu)選地,所述主芯片重新啟動(dòng)之前,所述軟件升級(jí)方法還包括:
在接收到所述新版軟件數(shù)據(jù)的所有數(shù)據(jù)后,所述主芯片獲取所述主機(jī)發(fā)送的升級(jí)結(jié)束指令中包含的第一校驗(yàn)結(jié)果,并對(duì)所述備份程序區(qū)中寫(xiě)入的所述新版軟件數(shù)據(jù)進(jìn)行校驗(yàn),生成第二校驗(yàn)結(jié)果,其中,在接收到所述主機(jī)發(fā)送的升級(jí)結(jié)束指令時(shí),判定接收到所述新版軟件數(shù)據(jù)的所有數(shù)據(jù);
在所述第一校驗(yàn)結(jié)果與第二校驗(yàn)結(jié)果一致時(shí),執(zhí)行所述主芯片進(jìn)行重新啟動(dòng)的步驟。
優(yōu)選地,所述軟件升級(jí)方法還包括:
在接收到主機(jī)發(fā)送的升級(jí)指令時(shí),所述主芯片獲取所述升級(jí)請(qǐng)求信息中的版本信息;
在所述升級(jí)請(qǐng)求信息中的版本信息與主芯片中運(yùn)行的軟件的版本信息不同時(shí),向所述主機(jī)發(fā)送響應(yīng)信息,以供所述主機(jī)根據(jù)接收到的所述響應(yīng)信息向所述主芯片發(fā)送所述新版本軟件數(shù)據(jù)。
優(yōu)選地,所述向所述主機(jī)發(fā)送響應(yīng)信息的步驟之后,所述軟件升級(jí)方法還包括:
所述主芯片在接收到所述主機(jī)發(fā)送的啟動(dòng)升級(jí)指令時(shí),獲取所述啟動(dòng)升級(jí)指令中包含的新版軟件數(shù)據(jù)的占用空間大小信息,其中,所述主機(jī)在接收到所述響應(yīng)信息時(shí),向所述主芯片發(fā)送占用空間大小信息;
所述主芯片在接收所述占用空間大小信息后,擦除所述備份程序區(qū)對(duì)應(yīng)的存儲(chǔ)空間,并向所述主機(jī)反饋升級(jí)應(yīng)答信息,以供所述主機(jī)在接收到所述升級(jí)應(yīng)答信息后,向所述主芯片發(fā)送所述新版本軟件數(shù)據(jù)。
所述主芯片擦除所述備份程序區(qū)中的對(duì)應(yīng)存儲(chǔ)空間的扇區(qū),并向所述主機(jī)反饋升級(jí)應(yīng)答信息,以供所述主機(jī)在接收到所述升級(jí)應(yīng)答信息后,向所述主芯片發(fā)送所述新版本軟件數(shù)據(jù)。
優(yōu)選地,所述升級(jí)方法還包括:
所述主芯片在接收所述主機(jī)發(fā)送的軟件版本信息的查詢(xún)指令時(shí),確認(rèn)所述查詢(xún)請(qǐng)求對(duì)應(yīng)的軟件的版本信息并將所述版本信息發(fā)送至所述主機(jī);
其中,在所述主機(jī)接收到所述舊版本軟件的版本信息后,判斷主機(jī)中軟件的版本信息是否與接收到的版本信息不同;若是,則向所述主芯片發(fā)送所述新版軟件數(shù)據(jù)。
此外,為解決上述問(wèn)題,本發(fā)明還提供一種軟件升級(jí)裝置,所述軟件升級(jí)裝置包括存儲(chǔ)器、網(wǎng)絡(luò)接口、通信總線、主芯片及存儲(chǔ)在所述存儲(chǔ)器上并可在所述主芯片上運(yùn)行的軟件數(shù)據(jù)、傳輸程序和軟件升級(jí)程序,所述軟件升級(jí)程序被所述主芯片執(zhí)行時(shí)實(shí)現(xiàn)如上述所述的軟件升級(jí)方法的步驟。
此外,為解決上述問(wèn)題,本發(fā)明還提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上存儲(chǔ)有軟件升級(jí)程序,所述軟件升級(jí)程序被主芯片執(zhí)行時(shí)實(shí)現(xiàn)如上述所述的軟件升級(jí)方法的步驟。
本發(fā)明提供一種軟件升級(jí)方法,在升級(jí)過(guò)程中,將需要升級(jí)的新版軟件下載到主芯片的程序備份區(qū)內(nèi),下載過(guò)程中如果出錯(cuò)或丟包仍然可以運(yùn)行舊版本軟件數(shù)據(jù),在接收到新版軟件數(shù)據(jù)的所有數(shù)據(jù)后,再將備份程序區(qū)的新版軟件數(shù)據(jù)替換應(yīng)用程序區(qū)的舊版本軟件數(shù)據(jù),該方案就算在下載新版本軟件數(shù)據(jù)的過(guò)程中出現(xiàn)錯(cuò)誤,由于此時(shí)未采用新版本軟件數(shù)據(jù)替換控制芯片終端中的原有軟件數(shù)據(jù),則主芯片仍可運(yùn)行原有軟件數(shù)據(jù),即避免出現(xiàn)軟件升級(jí)時(shí)軟件無(wú)法運(yùn)行或者系統(tǒng)崩潰的情況。
附圖說(shuō)明
圖1是本發(fā)明軟件升級(jí)方法實(shí)施例方案涉及的硬件運(yùn)行環(huán)境的裝置結(jié)構(gòu)示意圖;
圖2為本發(fā)明軟件升級(jí)方法一實(shí)施例的流程示意圖;
圖3為本發(fā)明軟件升級(jí)方法二實(shí)施例的流程示意圖;
圖4為本發(fā)明軟件升級(jí)方法三實(shí)施例的流程示意圖;
圖5為本發(fā)明軟件升級(jí)方法四實(shí)施例的流程示意圖;
圖6為本發(fā)明軟件升級(jí)方法五實(shí)施例的流程示意圖;
圖7為本發(fā)明軟件升級(jí)方法六實(shí)施例的流程示意圖;
圖8為本發(fā)明軟件升級(jí)方法七實(shí)施例的流程示意圖。
本發(fā)明目的的實(shí)現(xiàn)、功能特點(diǎn)及優(yōu)點(diǎn)將結(jié)合實(shí)施例,參照附圖做進(jìn)一步說(shuō)明。
具體實(shí)施方式
應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
本發(fā)明實(shí)施例的主要解決方案是:
主芯片在接收到主機(jī)發(fā)送的新版軟件數(shù)據(jù)時(shí),將接收到的所述新版軟件數(shù)據(jù)寫(xiě)入備份程序區(qū);所述備份程序區(qū)所在的存儲(chǔ)器為非易失性存儲(chǔ)器;
在接收到所述新版軟件數(shù)據(jù)的所有數(shù)據(jù)后,所述主芯片重新啟動(dòng);
在重啟后,所述主芯片采用所述備份程序區(qū)的新版軟件數(shù)據(jù)替換應(yīng)用程序區(qū)的舊版本軟件數(shù)據(jù),以對(duì)舊版本軟件升級(jí)。
由于現(xiàn)有固件升級(jí)方法,在升級(jí)過(guò)程中,邊下載新版本軟件數(shù)據(jù)邊采用下載的新版本軟件數(shù)據(jù)替換主芯片中的舊版本軟件數(shù)據(jù),在升級(jí)出錯(cuò)導(dǎo)致升級(jí)失敗時(shí)不能夠恢復(fù)主芯片中的舊版本軟件數(shù)據(jù)同時(shí)新版本軟件又未升級(jí)成功,軟件無(wú)法運(yùn)行甚至系統(tǒng)崩潰的技術(shù)問(wèn)題。
本發(fā)明提供一種解決方案,在升級(jí)過(guò)程中,在保持舊版本軟件的正常運(yùn)行前提下,將需要升級(jí)的新版軟件寫(xiě)入到主芯片的程序備份區(qū)內(nèi),進(jìn)而使整機(jī)在運(yùn)行過(guò)程中即可實(shí)現(xiàn)升級(jí)數(shù)據(jù)的傳輸和寫(xiě)入,而不需要復(fù)位停機(jī),在對(duì)新版軟件接收結(jié)束后,根據(jù)需要進(jìn)行系統(tǒng)復(fù)位重啟并將備份程序區(qū)的新版軟件替換應(yīng)用程序區(qū)的舊版本軟件,從而保證了升級(jí)過(guò)程的穩(wěn)定可靠,避免了現(xiàn)有的固件升級(jí)方法均需在升級(jí)過(guò)程中必須先進(jìn)行停機(jī),才能進(jìn)行升級(jí),升級(jí)完成后才可以恢復(fù)系統(tǒng)運(yùn)行的問(wèn)題。
如圖1所示,圖1是本發(fā)明實(shí)施例方案涉及的硬件運(yùn)行環(huán)境的終端結(jié)構(gòu)示意圖。
本發(fā)明實(shí)施例終端可以是pc,也可以是智能手機(jī)、平板電腦、電子書(shū)閱讀器、mp3(movingpictureexpertsgroupaudiolayeriii,動(dòng)態(tài)影像專(zhuān)家壓縮標(biāo)準(zhǔn)音頻層面3)播放器、mp4(movingpictureexpertsgroupaudiolayeriv,動(dòng)態(tài)影像專(zhuān)家壓縮標(biāo)準(zhǔn)音頻層面3)播放器、便攜計(jì)算機(jī)等具有顯示功能的可移動(dòng)式終端設(shè)備。
可以理解的是,該終端也可用于家電例如空調(diào)器中實(shí)現(xiàn)空調(diào)器中運(yùn)行的軟件的升級(jí),或者空調(diào)器中的固件的系統(tǒng)軟件的升級(jí)。
如圖1所示,該終端可以包括:
該終端可以包括:該終端可以包括:主芯片1001,例如cpu,網(wǎng)絡(luò)接口1003,存儲(chǔ)器1004,通信總線1002。其中,通信總線1002用于實(shí)現(xiàn)這些組件之間的連接通信。網(wǎng)絡(luò)接口1003可選的可以包括標(biāo)準(zhǔn)的有線接口、無(wú)線接口(如wi-fi接口)。存儲(chǔ)器1004可以是flash,也可以是穩(wěn)定的存儲(chǔ)器(non-volatilememory),例如磁盤(pán)存儲(chǔ)器。存儲(chǔ)器1004可選的還可以是獨(dú)立于前述處理器1001的存儲(chǔ)裝置。
本領(lǐng)域技術(shù)人員可以理解,圖1中示出的終端結(jié)構(gòu)并不構(gòu)成對(duì)終端的限定,可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部件布置。
如圖1所示,作為一種存儲(chǔ)介質(zhì)的存儲(chǔ)器1004中可以包括軟件數(shù)據(jù)、傳輸程序以及軟件升級(jí)程序。
在圖1所示的終端中,網(wǎng)絡(luò)接口1003主要用于連接主機(jī),主芯片1001可以用于調(diào)用存儲(chǔ)器1004中存儲(chǔ)的軟件升級(jí)程序,并執(zhí)行以下操作:
步驟s10,主芯片在接收到主機(jī)發(fā)送的新版軟件數(shù)據(jù)時(shí),將接收到的所述新版軟件數(shù)據(jù)寫(xiě)入備份程序區(qū);所述備份程序區(qū)所在的存儲(chǔ)器為非易失性存儲(chǔ)器;
步驟s20,在接收到所述新版軟件數(shù)據(jù)的所有數(shù)據(jù)后,所述主芯片重新啟動(dòng);
步驟s30,在重啟后,所述主芯片采用所述備份程序區(qū)的新版軟件數(shù)據(jù)替換應(yīng)用程序區(qū)的舊版本軟件數(shù)據(jù),以對(duì)舊版本軟件升級(jí)。
進(jìn)一步地,主芯片1001可以調(diào)用存儲(chǔ)器1004中存儲(chǔ)的軟件升級(jí)程序,還執(zhí)行以下操作:
所述將接收到的所述新版軟件數(shù)據(jù)寫(xiě)入備份程序區(qū)的步驟之后,所述軟件升級(jí)方法還包括:
步驟s40,向主機(jī)反饋與所接收到的新版軟件數(shù)據(jù)相對(duì)應(yīng)的幀號(hào)信息;
其中,所述主機(jī)依次發(fā)送新版本軟件數(shù)據(jù)的每一幀數(shù)據(jù)以及對(duì)應(yīng)的幀號(hào)信息,并在發(fā)送每一幀新版軟件數(shù)據(jù)后接收所述主芯片反饋的幀號(hào)信息;在接收到所述幀號(hào)信息后,所述主機(jī)判斷接收到的幀號(hào)信息與已發(fā)送的最后一幀新版軟件數(shù)據(jù)的幀號(hào)信息是否一致;若是,則向所述主芯片發(fā)送下一幀新版軟件數(shù)據(jù),直至發(fā)送完所述新版本軟件數(shù)據(jù)的所有數(shù)據(jù);若否或所述主芯片無(wú)響應(yīng)時(shí),重新發(fā)送所述新版本軟件數(shù)據(jù),直至達(dá)到重發(fā)極限次數(shù)時(shí)終止升級(jí)。
進(jìn)一步地,主芯片1001可以調(diào)用存儲(chǔ)器1004中存儲(chǔ)的軟件升級(jí)程序,還執(zhí)行以下操作:
所述將接收到的所述新版軟件數(shù)據(jù)寫(xiě)入備份程序區(qū)的步驟之后,還包括:
步驟s50,所述主芯片判斷當(dāng)前接收到的新版軟件數(shù)據(jù)的幀號(hào)信息與接收到的前一幀新版軟件數(shù)據(jù)的幀號(hào)信息是否相差1;
若是,則執(zhí)行所述向主機(jī)返回與所獲取的此幀新版軟件數(shù)據(jù)相對(duì)應(yīng)的幀號(hào)信息的步驟;
步驟s60,若否,則向所述主機(jī)發(fā)送升級(jí)異常指令,以供所述主機(jī)在接收到所述升級(jí)異常指令時(shí),重新發(fā)送所述新版軟件數(shù)據(jù)或停止發(fā)送所述新版軟件數(shù)據(jù)。
進(jìn)一步地,主芯片1001可以調(diào)用存儲(chǔ)器1004中存儲(chǔ)的軟件升級(jí)程序,還執(zhí)行以下操作:
所述主芯片重新啟動(dòng)之前,所述軟件升級(jí)方法還包括:
步驟s70,在接收到所述新版軟件數(shù)據(jù)的所有數(shù)據(jù)后,所述主芯片獲取所述主機(jī)發(fā)送的升級(jí)結(jié)束指令中包含的第一校驗(yàn)結(jié)果,并對(duì)所述備份程序區(qū)中寫(xiě)入的所述新版軟件數(shù)據(jù)進(jìn)行校驗(yàn),生成第二校驗(yàn)結(jié)果,其中,在接收到所述主機(jī)發(fā)送的升級(jí)結(jié)束指令時(shí),判定接收到所述新版軟件數(shù)據(jù)的所有數(shù)據(jù);
步驟s80,在所述第一校驗(yàn)結(jié)果與第二校驗(yàn)結(jié)果一致時(shí),執(zhí)行所述主芯片進(jìn)行重新啟動(dòng)的步驟。
進(jìn)一步地,主芯片1001可以調(diào)用存儲(chǔ)器1004中存儲(chǔ)的軟件升級(jí)程序,還執(zhí)行以下操作:
步驟s90,在接收到主機(jī)發(fā)送的升級(jí)指令時(shí),所述主芯片獲取所述升級(jí)請(qǐng)求信息中的版本信息;
步驟s100,在所述升級(jí)請(qǐng)求信息中的版本信息與主芯片中運(yùn)行的軟件的版本信息不同時(shí),向所述主機(jī)發(fā)送響應(yīng)信息,以供所述主機(jī)根據(jù)接收到的所述響應(yīng)信息向所述主芯片發(fā)送所述新版本軟件數(shù)據(jù)。
進(jìn)一步地,主芯片1001可以調(diào)用存儲(chǔ)器1004中存儲(chǔ)的軟件升級(jí)程序,還執(zhí)行以下操作:
所述向所述主機(jī)發(fā)送響應(yīng)信息的步驟之后,所述軟件升級(jí)方法還包括:
步驟s110,所述主芯片在接收到所述主機(jī)發(fā)送的啟動(dòng)升級(jí)指令時(shí),獲取所述啟動(dòng)升級(jí)指令中包含的新版軟件數(shù)據(jù)的占用空間大小信息,其中,所述主機(jī)在接收到所述響應(yīng)信息時(shí),向所述主芯片發(fā)送占用空間大小信息;
步驟s120,所述主芯片擦除所述備份程序區(qū)中的對(duì)應(yīng)存儲(chǔ)空間的扇區(qū),并向所述主機(jī)反饋升級(jí)應(yīng)答信息,以供所述主機(jī)在接收到所述升級(jí)應(yīng)答信息后,向所述主芯片發(fā)送所述新版本軟件數(shù)據(jù)。
進(jìn)一步地,主芯片1001可以調(diào)用存儲(chǔ)器1004中存儲(chǔ)的軟件升級(jí)程序,還執(zhí)行以下操作:
步驟s130,所述主芯片在接收所述主機(jī)發(fā)送的軟件版本信息的查詢(xún)指令時(shí),確認(rèn)所述查詢(xún)請(qǐng)求對(duì)應(yīng)的軟件的版本信息并將所述版本信息發(fā)送至所述主機(jī);
其中,在所述主機(jī)接收到所述舊版本軟件的版本信息后,判斷主機(jī)中軟件的版本信息是否與接收到的版本信息不同;若是,則向所述主芯片發(fā)送所述新版軟件數(shù)據(jù)。
本發(fā)明提供一種軟件升級(jí)方法。
參照?qǐng)D2,圖2為本發(fā)明軟件升級(jí)方法提供一種軟件升級(jí)方法的一實(shí)施例的流程示意圖。
在一實(shí)施例中,所述軟件升級(jí)方法包括:
步驟s10,主芯片在接收到主機(jī)發(fā)送的新版軟件數(shù)據(jù)時(shí),將接收到的所述新版軟件數(shù)據(jù)寫(xiě)入備份程序區(qū);所述備份程序區(qū)所在的存儲(chǔ)器為非易失性存儲(chǔ)器;
在本發(fā)明中,主芯片支持對(duì)flash的讀寫(xiě)操作,可通過(guò)外部接口獲取主機(jī)(外部設(shè)備)發(fā)送的新版本軟件數(shù)據(jù)進(jìn)行燒錄。主芯片的接口是與主機(jī)進(jìn)行數(shù)據(jù)交換的通道,可以包括但不限于usb、uart、can和以太網(wǎng)等主芯片支持的可進(jìn)行軟件升級(jí)的接口。外部設(shè)備通過(guò)接口與主芯片進(jìn)行通訊連接,可以為進(jìn)行請(qǐng)求升級(jí)的設(shè)備或被動(dòng)升級(jí)的主芯片的下一級(jí)子部件。主芯片內(nèi)部劃分為多個(gè)扇區(qū),用于軟件數(shù)據(jù)的存儲(chǔ),在本實(shí)施例中,主芯片進(jìn)行操作的flash包括備份程序區(qū),用于臨時(shí)存儲(chǔ)所接受到外部設(shè)備發(fā)送的新版軟件。開(kāi)始升級(jí)后,主芯片首先對(duì)外部設(shè)備所發(fā)送的新版軟件進(jìn)行接收,并將所接收到的新版軟件寫(xiě)入flash的備份程序區(qū)。備份程序區(qū)用于接收和下載新版本軟件數(shù)據(jù),與正在運(yùn)行的當(dāng)前版本軟件數(shù)據(jù)的其他區(qū)同時(shí)運(yùn)行,當(dāng)下載新版軟件數(shù)據(jù)的過(guò)程中出現(xiàn)丟包、下載失敗的情況,由于新版軟件數(shù)據(jù)所下載的空間屬于區(qū)別于當(dāng)前版軟件間數(shù)據(jù)的備份程序區(qū),所以不會(huì)對(duì)當(dāng)前版本軟件數(shù)據(jù)的運(yùn)行造成影響。
步驟s20,在接收到所述新版軟件數(shù)據(jù)的所有數(shù)據(jù)后,所述主芯片重新啟動(dòng);
步驟s30,在重啟后,所述主芯片采用所述備份程序區(qū)的新版軟件數(shù)據(jù)替換應(yīng)用程序區(qū)的舊版本軟件數(shù)據(jù),以對(duì)舊版本軟件升級(jí)。
主芯片所控制的flash劃分為多個(gè)區(qū)域,包括應(yīng)用程序區(qū)、備份程序區(qū)和bootloader等,其中應(yīng)用程序區(qū),用于保存原有的舊版本軟件的bin文件,備份程序區(qū)用于保存新收到的新版軟件的bin文件,而bootloader負(fù)責(zé)加載和引導(dǎo),即復(fù)制新版軟件替換舊版本軟件通過(guò)bootloader完成的。在應(yīng)用程序在運(yùn)行過(guò)程中,主芯片接收到升級(jí)命令,會(huì)將新版本軟件數(shù)據(jù),逐條寫(xiě)入到備份程序區(qū)的flash,此時(shí)應(yīng)用程序區(qū)內(nèi)的舊版本軟件保持正常運(yùn)行不需要進(jìn)行停機(jī)操作,加載完成后,主芯片進(jìn)行系統(tǒng)復(fù)位,重啟進(jìn)入bootloader;bootloader校驗(yàn)備份程序區(qū)與應(yīng)用程序區(qū)的新版軟件和舊版本軟件,當(dāng)校驗(yàn)通過(guò)后,此時(shí),由于剛剛結(jié)束對(duì)主芯片的升級(jí)和加載,可獲知備份程序區(qū)的新版軟件是相對(duì)于舊版本軟件的新版,bootloader將備份程序區(qū)的新版軟件復(fù)制到應(yīng)用程序區(qū),替代舊版本軟件,開(kāi)始運(yùn)行新版軟件完成新版本的激活。如果加載過(guò)程中,出現(xiàn)掉電復(fù)位情況,導(dǎo)致加載的數(shù)據(jù)異常,bootloader將應(yīng)用程序復(fù)制至此區(qū)域,保持原有版本軟件數(shù)據(jù)的運(yùn)行。
在本實(shí)施例中,升級(jí)時(shí)將需要升級(jí)的新版軟件下載到主芯片的程序備份區(qū)內(nèi),下載過(guò)程中如果出錯(cuò)或丟包仍然可以運(yùn)行舊版本軟件數(shù)據(jù),在接收到新版軟件數(shù)據(jù)的所有數(shù)據(jù)后,再將備份程序區(qū)的新版軟件數(shù)據(jù)替換應(yīng)用程序區(qū)的舊版本軟件數(shù)據(jù),從而保證了升級(jí)過(guò)程的穩(wěn)定可靠,避免了現(xiàn)有固件升級(jí)方法均需重啟后,邊下載新版本軟件數(shù)據(jù)邊采用下載的新版本軟件數(shù)據(jù)替換主芯片中的舊版本軟件數(shù)據(jù),在升級(jí)出錯(cuò)導(dǎo)致升級(jí)失敗時(shí)不能夠恢復(fù)主芯片中的舊版本軟件數(shù)據(jù)同時(shí)新版本軟件又未升級(jí)成功,導(dǎo)致軟件無(wú)法運(yùn)行,特別是升級(jí)系統(tǒng)軟件時(shí)容易導(dǎo)致系統(tǒng)崩潰的問(wèn)題。
參照?qǐng)D3,圖3為本發(fā)明軟件升級(jí)方法的第二實(shí)施例流程示意圖。
基于上述一實(shí)施例,所述將接收到的所述新版軟件數(shù)據(jù)寫(xiě)入備份程序區(qū)的步驟之后,所述軟件升級(jí)方法還包括:
步驟s40,向主機(jī)反饋與所接收到的新版軟件數(shù)據(jù)相對(duì)應(yīng)的幀號(hào)信息;
其中,所述主機(jī)依次發(fā)送新版本軟件數(shù)據(jù)的每一幀數(shù)據(jù)以及對(duì)應(yīng)的幀號(hào)信息,并在發(fā)送每一幀新版軟件數(shù)據(jù)后接收所述主芯片反饋的幀號(hào)信息;在接收到所述幀號(hào)信息后,所述主機(jī)判斷接收到的幀號(hào)信息與已發(fā)送的最后一幀新版軟件數(shù)據(jù)的幀號(hào)信息是否一致;若是,則向所述主芯片發(fā)送下一幀新版軟件數(shù)據(jù),直至發(fā)送完所述新版本軟件數(shù)據(jù)的所有數(shù)據(jù);若否或所述主芯片無(wú)響應(yīng)時(shí),重新發(fā)送所述新版本軟件數(shù)據(jù),直至達(dá)到重發(fā)極限次數(shù)時(shí)終止升級(jí)。
開(kāi)始升級(jí)后,主機(jī)開(kāi)始向主芯片逐幀發(fā)送新版軟件,在主芯片接收到主機(jī)逐幀發(fā)送的新版軟件時(shí),每獲取一幀新版軟件,即向主機(jī)返回與所獲取的此幀新版軟件相對(duì)應(yīng)的幀號(hào)信息,提示主機(jī)此幀數(shù)據(jù)已經(jīng)收到,以便主機(jī)進(jìn)行對(duì)主芯片獲取到的此幀的新版軟件的幀號(hào)信息進(jìn)行確認(rèn)。在主機(jī)獲取到主芯片發(fā)送的幀號(hào)信息后,將該幀號(hào)信息與向主芯片發(fā)送的新版軟件的幀號(hào)信息進(jìn)行比對(duì),判斷二者是否一致,如果主機(jī)判斷主芯片返回的幀號(hào)信息與主機(jī)發(fā)送的此幀新版軟件的幀號(hào)信息一致,則可繼續(xù)向主芯片發(fā)送下一幀的新版軟件,并將此幀的新版軟件寫(xiě)入備份程序區(qū)。如果主機(jī)判斷二者不一致或未收到主芯片發(fā)送的幀號(hào)信息,則可以啟動(dòng)重發(fā)機(jī)制,重復(fù)進(jìn)行對(duì)主芯片進(jìn)行此幀新版軟件的發(fā)送并對(duì)主芯片返回的幀號(hào)信息的接收,以及對(duì)幀號(hào)信息是否一致的判斷過(guò)程,當(dāng)多次出現(xiàn)無(wú)應(yīng)答的情況以至于重復(fù)發(fā)送達(dá)到一定的預(yù)設(shè)極限次數(shù)仍然無(wú)正常相應(yīng)時(shí),判定升級(jí)異常,終止升級(jí)。
在本實(shí)施例中,通過(guò)主機(jī)對(duì)主芯片返回的幀號(hào)信息與所發(fā)送的新版軟件對(duì)應(yīng)的幀號(hào)信息進(jìn)行對(duì)比,通過(guò)判斷二者是否一致,確認(rèn)主機(jī)端發(fā)送的此幀新版軟件與主芯片端接收到的新版軟件相同,從而確認(rèn)主芯片接收的此幀新版軟件的正確性,當(dāng)判斷二者相同,則向主芯片發(fā)送下一幀數(shù)據(jù),如二者不同則判斷升級(jí)異常,啟動(dòng)重發(fā)機(jī)制或退出升級(jí)。主機(jī)根據(jù)幀號(hào)信息的比對(duì)結(jié)果判斷是否發(fā)送下一幀數(shù)據(jù),提高了數(shù)據(jù)在傳輸過(guò)程中的準(zhǔn)確性。
參照?qǐng)D4,圖4為本發(fā)明軟件升級(jí)方法的第三實(shí)施例的流程示意圖。
基于上述的二實(shí)施例,所述將接收到的所述新版軟件數(shù)據(jù)寫(xiě)入備份程序區(qū)的步驟之后,還包括:
步驟s50,所述主芯片判斷當(dāng)前接收到的新版軟件數(shù)據(jù)的幀號(hào)信息與接收到的前一幀新版軟件數(shù)據(jù)的幀號(hào)信息是否相差1;
在主芯片接收到一幀的主機(jī)發(fā)送的新版軟件后,隨即對(duì)所接收到的此幀的新版軟件的幀號(hào)信息進(jìn)行確認(rèn),將此幀新版軟件的幀號(hào)信息與所接收到的前一幀的新版軟件的幀號(hào)信息進(jìn)行比對(duì),判斷是否與前一幀新版軟件的幀號(hào)信息相差為1,通過(guò)對(duì)幀號(hào)信息的差額的判斷,確認(rèn)主芯片在接收新版軟件的過(guò)程中是否丟包,接收數(shù)據(jù)是否完整。
若是,則執(zhí)行所述向主機(jī)返回與所獲取的此幀新版軟件數(shù)據(jù)相對(duì)應(yīng)的幀號(hào)信息的步驟。
步驟s60,若否,則向所述主機(jī)發(fā)送升級(jí)異常指令,以供所述主機(jī)在接收到所述升級(jí)異常指令時(shí),重新發(fā)送所述新版軟件數(shù)據(jù)或停止發(fā)送所述新版軟件數(shù)據(jù);
幀號(hào)信息為從0開(kāi)始,每一幀的軟件數(shù)據(jù)則在前一幀的幀號(hào)信息基礎(chǔ)上增加1。需要說(shuō)明的是,幀號(hào)信息×幀長(zhǎng)度即為每一幀數(shù)據(jù)應(yīng)該寫(xiě)入的地址。通過(guò)判斷接收到的新版軟件的幀號(hào)信息是否依次加1,確認(rèn)主機(jī)逐幀發(fā)送的新版軟件是否完整,中間有無(wú)丟包現(xiàn)象。主芯片在逐條對(duì)接收到的新版軟件寫(xiě)入備份程序區(qū)時(shí),如果中間某一幀數(shù)據(jù)檢測(cè)到編號(hào)缺失,則主芯片認(rèn)定通信丟幀,進(jìn)而向主機(jī)返回異常數(shù)據(jù),終止升級(jí)。通過(guò)對(duì)幀號(hào)信息的核對(duì),從而確認(rèn)所接收的數(shù)據(jù)的連續(xù)和完整,當(dāng)出現(xiàn)數(shù)據(jù)丟包、接受數(shù)據(jù)異常時(shí),在保持原有的舊版本軟件正常運(yùn)行的基礎(chǔ)上,進(jìn)行中止升級(jí)或進(jìn)行重新獲取,保證了系統(tǒng)在升級(jí)過(guò)程中的穩(wěn)定性。
參照?qǐng)D5,圖5為軟件升級(jí)方法的四實(shí)施例的流程示意圖。
基于上述一實(shí)施例,所述主芯片重新啟動(dòng)之前,所述軟件升級(jí)方法還包括:
步驟s70,在接收到所述新版軟件數(shù)據(jù)的所有數(shù)據(jù)后,所述主芯片獲取所述主機(jī)發(fā)送的升級(jí)結(jié)束指令中包含的第一校驗(yàn)結(jié)果,并對(duì)所述備份程序區(qū)中寫(xiě)入的所述新版軟件數(shù)據(jù)進(jìn)行校驗(yàn),生成第二校驗(yàn)結(jié)果,其中,在接收到所述主機(jī)發(fā)送的升級(jí)結(jié)束指令時(shí),判定接收到所述新版軟件數(shù)據(jù)的所有數(shù)據(jù);
在升級(jí)過(guò)程中,當(dāng)主機(jī)端的新版軟件發(fā)送完成后,主機(jī)向主芯片發(fā)送升級(jí)結(jié)束指令,告知主芯片升級(jí)完成。其中,升級(jí)結(jié)束指令包括主機(jī)對(duì)新版軟件進(jìn)行crc校驗(yàn)的第一校驗(yàn)結(jié)果,將此校驗(yàn)結(jié)果向主芯片發(fā)送,以便于主芯片對(duì)該校驗(yàn)結(jié)果進(jìn)行進(jìn)一步的校驗(yàn)。主芯片接收到升級(jí)結(jié)束指令后,根據(jù)新版軟件的大小對(duì)新版軟件進(jìn)行crc32和crc16校驗(yàn),并將校驗(yàn)結(jié)果寫(xiě)到flash扇區(qū)末尾的程序信息區(qū),從而生成了主芯片端對(duì)所獲取到的新版軟件的第二校驗(yàn)結(jié)果。
步驟s80,在所述第一校驗(yàn)結(jié)果與第二校驗(yàn)結(jié)果一致時(shí),執(zhí)行所述主芯片進(jìn)行重新啟動(dòng)的步驟。
在主機(jī)向主芯片對(duì)新版軟件的發(fā)送完成后,主芯片對(duì)已接收到的新版軟件進(jìn)行的crc校驗(yàn)結(jié)果與主機(jī)對(duì)發(fā)送的新版軟件的crc校驗(yàn)結(jié)果進(jìn)行對(duì)比,通過(guò)校驗(yàn)結(jié)果的比對(duì)判斷主芯片接收數(shù)據(jù)是否異常。通過(guò)比對(duì)主機(jī)和主芯片分別對(duì)新版軟件的校驗(yàn)結(jié)果的異同,從而判斷主芯片所接收到的新版軟件與主機(jī)發(fā)送的新版軟件的一致性,進(jìn)一步保證了主芯片在升級(jí)過(guò)程中的接收數(shù)據(jù)的正確和完整。此外,如果第一校驗(yàn)結(jié)果與第二校驗(yàn)結(jié)果不一致,則可進(jìn)行向所述主機(jī)發(fā)送升級(jí)異常指令,以供主機(jī)向所述主芯片重新發(fā)送所述新版軟件的步驟。
參照?qǐng)D6,圖6軟件升級(jí)方法的五實(shí)施例的流程示意圖。
基于上述的一實(shí)施例,所述軟件升級(jí)方法還包括:
步驟s90,在接收到主機(jī)發(fā)送的升級(jí)指令時(shí),所述主芯片獲取所述升級(jí)請(qǐng)求信息中的版本信息;
步驟s100,在所述升級(jí)請(qǐng)求信息中的版本信息與主芯片中運(yùn)行的軟件的版本信息不同時(shí),向所述主機(jī)發(fā)送響應(yīng)信息,以供所述主機(jī)根據(jù)接收到的所述響應(yīng)信息向所述主芯片發(fā)送所述新版本軟件數(shù)據(jù)。
當(dāng)有升級(jí)需求時(shí),主機(jī)向主芯片發(fā)送升級(jí)請(qǐng)求信息,進(jìn)行升級(jí)請(qǐng)求。其中,升級(jí)請(qǐng)求信息包括新版軟件的程序名稱(chēng)、版本號(hào)等新版軟件版本信息。主芯片在接收到升級(jí)請(qǐng)求信息后,讀取程序信息區(qū)的當(dāng)期前版本軟件數(shù)據(jù)的版本信息(0x0003ffe0ul地址),將所接收到的升級(jí)請(qǐng)求信息中的新版軟件的版本信息與當(dāng)前軟件數(shù)據(jù)的版本信息進(jìn)行對(duì)比,從而判斷主機(jī)的新版軟件的版本是否比當(dāng)前軟件數(shù)據(jù)的版本新。如果主芯片判斷升級(jí)請(qǐng)求信息中的版本信息與當(dāng)前軟件版本信息不同,則判定可以進(jìn)行升級(jí),向主機(jī)發(fā)送啟動(dòng)升級(jí)的應(yīng)答提示主機(jī)可以進(jìn)行進(jìn)一步的升級(jí);如果版本信息相同,則判定主機(jī)端的新版軟件與主芯片的舊版本軟件版本相同,判定不需要進(jìn)行升級(jí),向主機(jī)返回?zé)o需升級(jí)的反饋信息;進(jìn)而主機(jī)根據(jù)接收到的反饋信息進(jìn)行判斷是否進(jìn)行升級(jí),如果接收到啟動(dòng)升級(jí)應(yīng)答,則開(kāi)始進(jìn)行升級(jí),如果接收到無(wú)需升級(jí)的反饋信息,則不進(jìn)行升級(jí)。此外,因?yàn)槌绦虻陌姹拘畔⒈4嬖诔绦蛐畔^(qū),主機(jī)可隨時(shí)向主芯片請(qǐng)求查詢(xún)當(dāng)前版本軟件信息的版本信息,而主芯片讀取flash信息后向主機(jī)回復(fù)反饋信息,隨時(shí)根據(jù)版本信息判斷是否新版軟件的版本是否高于舊版本軟件,如果判定新版軟件的版本高于舊版本軟件的版本,則立即進(jìn)行下一步的升級(jí)過(guò)程。
此外,在主芯片確認(rèn)新版軟件的版本信息與舊版本軟件的版本信息不同后,可通過(guò)主機(jī)向主芯片發(fā)送是否通過(guò)遠(yuǎn)程進(jìn)行升級(jí)的判定。如果使用燒錄器對(duì)主芯片進(jìn)行燒錄,則只能對(duì)應(yīng)用程序區(qū)進(jìn)行燒錄。進(jìn)而在應(yīng)用程序區(qū)和備份程序區(qū)都校驗(yàn)通過(guò)后,此時(shí)若檢測(cè)到是否升級(jí)的提示指令,且地址為0時(shí),則判定應(yīng)用程序區(qū)為新版本軟件數(shù)據(jù),而備份程序區(qū)為舊版本軟件數(shù)據(jù)。如果是通過(guò)遠(yuǎn)程升級(jí)的方式對(duì)主芯片進(jìn)行升級(jí),在升級(jí)完成的時(shí)候會(huì)將遠(yuǎn)程升級(jí)的提示指令寫(xiě)入非零數(shù)據(jù),從而使芯片復(fù)位后進(jìn)入bootloader,當(dāng)應(yīng)用程序區(qū)和備份程序區(qū)都校驗(yàn)通過(guò)后,由于遠(yuǎn)程升級(jí)的提示指令是非零,就會(huì)將備份程序區(qū)復(fù)制到應(yīng)用程序區(qū),并把是否升級(jí)的提示指令這個(gè)地址清零。
在本實(shí)施例中,通過(guò)比較對(duì)新版軟件的版本信息與舊版本軟件的版本信息是否相同,判斷新版軟件的版本是否比舊版本軟件的版本新,進(jìn)而決定是否進(jìn)行升級(jí)。主機(jī)隨時(shí)對(duì)主芯片的版本信息進(jìn)行查詢(xún)和確認(rèn),可使主芯片端的舊版本軟件在主機(jī)的具有版本高于舊版本軟件的新版軟件版時(shí),立即進(jìn)行升級(jí)。保證了主芯片端的舊版本軟件即時(shí)進(jìn)行更新升級(jí),提高升級(jí)效率。
參照?qǐng)D7,圖7為本發(fā)明軟件升級(jí)方法的六實(shí)施例的流程示意圖。
基于上述的五實(shí)施例,所述向所述主機(jī)發(fā)送啟動(dòng)升級(jí)應(yīng)答,以供所述主機(jī)向所述主芯片發(fā)送新版軟件的步驟之后,所述軟件升級(jí)方法還包括:
步驟s110,所述主芯片在接收到所述主機(jī)發(fā)送的啟動(dòng)升級(jí)指令時(shí),獲取所述啟動(dòng)升級(jí)指令中包含的新版軟件數(shù)據(jù)的占用空間大小信息,其中,所述主機(jī)在接收到所述響應(yīng)信息時(shí),向所述主芯片發(fā)送占用空間大小信息;
當(dāng)主機(jī)接收到主芯片可以進(jìn)行升級(jí)的啟動(dòng)升級(jí)應(yīng)答后,主機(jī)隨即向主芯片發(fā)送啟動(dòng)升級(jí)的指令。其中,啟動(dòng)升級(jí)指令包含與新版軟件相對(duì)應(yīng)的新版軟件的數(shù)據(jù)包的占用空間大小信息、以及其他通訊協(xié)定等所有與新版軟件相關(guān)的特征信息。
步驟s120,所述主芯片擦除所述備份程序區(qū)中的對(duì)應(yīng)存儲(chǔ)空間的扇區(qū),并向所述主機(jī)反饋升級(jí)應(yīng)答信息,以供所述主機(jī)在接收到所述升級(jí)應(yīng)答信息后,向所述主芯片發(fā)送所述新版本軟件數(shù)據(jù)。
主芯片在接收到啟動(dòng)升級(jí)指令后,確認(rèn)其中與新版軟件相對(duì)應(yīng)的占用空間大小信息,即確認(rèn)即將升級(jí)所需要的新版軟件的數(shù)據(jù)包的大小,以及其他通訊協(xié)議等特征信息,對(duì)以上信息進(jìn)行確認(rèn)后,根據(jù)與新版軟件相對(duì)應(yīng)的占用空間大小信息進(jìn)行進(jìn)一步的crc校驗(yàn);主芯片擦除備份程序區(qū)相應(yīng)的存儲(chǔ)區(qū)域的扇區(qū)。主芯片內(nèi)部分為多個(gè)扇區(qū),芯片本身的庫(kù)文件會(huì)提供扇區(qū)擦除api(應(yīng)用程序接口)和全芯片參數(shù)。在對(duì)扇區(qū)的擦除過(guò)程中,主芯片將備份程序區(qū)擦除,flash變?yōu)榭?,之后即可逐條按地址寫(xiě)入新程序。此外,獲取新版本程序大小的目的主要是用于對(duì)新版本程序進(jìn)行crc校驗(yàn),crc校驗(yàn)的傳入?yún)?shù)為程序的起始地址和大小兩個(gè)參數(shù),據(jù)此可以算出crc校驗(yàn)結(jié)果。例如當(dāng)主芯片接收到啟動(dòng)升級(jí)指令后,確認(rèn)需要進(jìn)行升級(jí)的新版軟件的特征信息,進(jìn)而確認(rèn)新版軟件所需要占用的空間為150k,而備份程序區(qū)的大小為256k,則可進(jìn)行升級(jí),進(jìn)而擦除備份程序區(qū),以便預(yù)留出備份程序區(qū)內(nèi)的足夠空間進(jìn)行升級(jí)。
在本實(shí)施例中,通過(guò)主芯片對(duì)于將要進(jìn)行升級(jí)的新版軟件的占用空間大小信息等特征信息進(jìn)行確認(rèn),進(jìn)而根據(jù)占用空間大小信息判斷待寫(xiě)入新版軟件的備份程序區(qū)空間是否滿足升級(jí)的需求,進(jìn)一步的根據(jù)特征信息擦除備份程序區(qū),從而為升級(jí)預(yù)留寫(xiě)入空間。升級(jí)前進(jìn)行寫(xiě)入備份程序區(qū)空間大小的確認(rèn),為主芯片進(jìn)一步進(jìn)行升級(jí)的穩(wěn)定提供了保障,避免了升級(jí)過(guò)程中由于備份程序區(qū)空間不足導(dǎo)致的升級(jí)失敗或系統(tǒng)崩潰。
參照?qǐng)D8,圖8為本發(fā)明軟件升級(jí)方法的七實(shí)施例的流程示意圖。
基于上述的一實(shí)施例,所述升級(jí)方法還包括:
步驟s130,所述主芯片在接收所述主機(jī)發(fā)送的軟件版本信息的查詢(xún)指令時(shí),確認(rèn)所述查詢(xún)請(qǐng)求對(duì)應(yīng)的軟件的版本信息并將所述版本信息發(fā)送至所述主機(jī);
其中,在所述主機(jī)接收到所述舊版本軟件的版本信息后,判斷主機(jī)中軟件的版本信息是否與接收到的版本信息不同;若是,則向所述主芯片發(fā)送所述新版軟件數(shù)據(jù)。
在主機(jī)向主芯片發(fā)送升級(jí)請(qǐng)求信息之前,主機(jī)需要對(duì)主芯片的軟件版本進(jìn)行查詢(xún),通過(guò)確認(rèn)主芯片的當(dāng)前軟件版本信息,從而判斷主芯片是否需要進(jìn)行進(jìn)一步的升級(jí)。主芯片接收到主機(jī)發(fā)送的查詢(xún)請(qǐng)求信息后,根據(jù)查詢(xún)請(qǐng)求信息,對(duì)程序信息區(qū)內(nèi)保存的當(dāng)前軟件版本信息進(jìn)行獲取,并將獲取到的當(dāng)前軟件版本信息向主機(jī)發(fā)送,主機(jī)在接收到主芯片所發(fā)送的與舊版本軟件相對(duì)應(yīng)的當(dāng)前軟件版本信息后,對(duì)當(dāng)前軟件版本信息進(jìn)行確認(rèn),在新版軟件信息的版本與當(dāng)前軟件版本不同時(shí),則判斷可進(jìn)行升級(jí),即可向主芯片發(fā)送升級(jí)請(qǐng)求信息。此外,主機(jī)對(duì)主芯片的當(dāng)前軟件版本信息的查詢(xún),可在升級(jí)前后任意時(shí)刻隨時(shí)進(jìn)行查詢(xún)請(qǐng)求,例如,每間隔一段時(shí)間即進(jìn)行一次對(duì)當(dāng)前軟件版本信息的查詢(xún),如果確認(rèn)新版軟件的版本與當(dāng)前軟件版本信息不同,則即可進(jìn)行升級(jí)并向主芯片發(fā)送升級(jí)請(qǐng)求信息。通過(guò)主機(jī)對(duì)主芯片隨時(shí)進(jìn)行版本信息的查詢(xún),可使主芯片隨時(shí)進(jìn)行即時(shí)升級(jí)過(guò)程,即只要出現(xiàn)版本不同的情況,主機(jī)在查詢(xún)后立即可進(jìn)行升級(jí),提高了升級(jí)的效率和時(shí)效性。
此外,本發(fā)明還提供一種軟件升級(jí)裝置,所述軟件升級(jí)裝置包括存儲(chǔ)器、網(wǎng)絡(luò)接口、通信總線、主芯片及存儲(chǔ)在所述存儲(chǔ)器上并可在所述主芯片1001上運(yùn)行的軟件數(shù)據(jù)、傳輸程序和軟件升級(jí)程序,所述軟件升級(jí)程序被所述主芯片執(zhí)行時(shí)實(shí)現(xiàn)如下操作:
主芯片在接收到主機(jī)發(fā)送的新版軟件數(shù)據(jù)時(shí),將接收到的所述新版軟件數(shù)據(jù)寫(xiě)入備份程序區(qū);所述備份程序區(qū)所在的存儲(chǔ)器為非易失性存儲(chǔ)器;
在接收到所述新版軟件數(shù)據(jù)的所有數(shù)據(jù)后,所述主芯片重新啟動(dòng);
在重啟后,所述主芯片采用所述備份程序區(qū)的新版軟件數(shù)據(jù)替換應(yīng)用程序區(qū)的舊版本軟件數(shù)據(jù),以對(duì)舊版本軟件升級(jí)。
進(jìn)一步地,所述軟件升級(jí)程序被主芯片執(zhí)行時(shí)還實(shí)現(xiàn)如下操作:
優(yōu)選地,所述將接收到的所述新版軟件數(shù)據(jù)寫(xiě)入備份程序區(qū)的步驟之后,所述軟件升級(jí)方法還包括:
向主機(jī)反饋與所接收到的新版軟件數(shù)據(jù)相對(duì)應(yīng)的幀號(hào)信息;
其中,所述主機(jī)依次發(fā)送新版本軟件數(shù)據(jù)的每一幀數(shù)據(jù)以及對(duì)應(yīng)的幀號(hào)信息,并在發(fā)送每一幀新版軟件數(shù)據(jù)后接收所述主芯片反饋的幀號(hào)信息;在接收到所述幀號(hào)信息后,所述主機(jī)判斷接收到的幀號(hào)信息與已發(fā)送的最后一幀新版軟件數(shù)據(jù)的幀號(hào)信息是否一致;若是,則向所述主芯片發(fā)送下一幀新版軟件數(shù)據(jù),直至發(fā)送完所述新版本軟件數(shù)據(jù)的所有數(shù)據(jù);若否或所述主芯片無(wú)響應(yīng)時(shí),重新發(fā)送所述新版本軟件數(shù)據(jù),直至達(dá)到重發(fā)極限次數(shù)時(shí)終止升級(jí)。
優(yōu)選地,所述將接收到的所述新版軟件數(shù)據(jù)寫(xiě)入備份程序區(qū)的步驟之后,還包括:
所述主芯片判斷當(dāng)前接收到的新版軟件數(shù)據(jù)的幀號(hào)信息與接收到的前一幀新版軟件數(shù)據(jù)的幀號(hào)信息是否相差1;
若是,則執(zhí)行所述向主機(jī)返回與所獲取的此幀新版軟件數(shù)據(jù)相對(duì)應(yīng)的幀號(hào)信息的步驟;
若否,則向所述主機(jī)發(fā)送升級(jí)異常指令,以供所述主機(jī)在接收到所述升級(jí)異常指令時(shí),重新發(fā)送所述新版軟件數(shù)據(jù)或停止發(fā)送所述新版軟件數(shù)據(jù)。
優(yōu)選地,所述主芯片重新啟動(dòng)之前,所述軟件升級(jí)方法還包括:
在接收到所述新版軟件數(shù)據(jù)的所有數(shù)據(jù)后,所述主芯片獲取所述主機(jī)發(fā)送的升級(jí)結(jié)束指令中包含的第一校驗(yàn)結(jié)果,并對(duì)所述備份程序區(qū)中寫(xiě)入的所述新版軟件數(shù)據(jù)進(jìn)行校驗(yàn),生成第二校驗(yàn)結(jié)果,其中,在接收到所述主機(jī)發(fā)送的升級(jí)結(jié)束指令時(shí),判定接收到所述新版軟件數(shù)據(jù)的所有數(shù)據(jù);
在所述第一校驗(yàn)結(jié)果與第二校驗(yàn)結(jié)果一致時(shí),執(zhí)行所述主芯片進(jìn)行重新啟動(dòng)的步驟。
優(yōu)選地,所述軟件升級(jí)方法還包括:
在接收到主機(jī)發(fā)送的升級(jí)指令時(shí),所述主芯片獲取所述升級(jí)請(qǐng)求信息中的版本信息;
在所述升級(jí)請(qǐng)求信息中的版本信息與主芯片中運(yùn)行的軟件的版本信息不同時(shí),向所述主機(jī)發(fā)送響應(yīng)信息,以供所述主機(jī)根據(jù)接收到的所述響應(yīng)信息向所述主芯片發(fā)送所述新版本軟件數(shù)據(jù)。
優(yōu)選地,所述向所述主機(jī)發(fā)送響應(yīng)信息的步驟之后,所述軟件升級(jí)方法還包括:
所述主芯片在接收到所述主機(jī)發(fā)送的啟動(dòng)升級(jí)指令時(shí),獲取所述啟動(dòng)升級(jí)指令中包含的新版軟件數(shù)據(jù)的占用空間大小信息,其中,所述主機(jī)在接收到所述響應(yīng)信息時(shí),向所述主芯片發(fā)送占用空間大小信息;
所述主芯片擦除所述備份程序區(qū)中的對(duì)應(yīng)存儲(chǔ)空間的扇區(qū),并向所述主機(jī)反饋升級(jí)應(yīng)答信息,以供所述主機(jī)在接收到所述升級(jí)應(yīng)答信息后,向所述主芯片發(fā)送所述新版本軟件數(shù)據(jù)。
優(yōu)選地,所述升級(jí)管理方法還包括:
所述主芯片在接收所述主機(jī)發(fā)送的軟件版本信息的查詢(xún)指令時(shí),確認(rèn)所述查詢(xún)請(qǐng)求對(duì)應(yīng)的軟件的版本信息并將所述版本信息發(fā)送至所述主機(jī);
其中,在所述主機(jī)接收到所述舊版本軟件的版本信息后,判斷主機(jī)中軟件的版本信息是否與接收到的版本信息不同;若是,則向所述主芯片發(fā)送所述新版軟件數(shù)據(jù)。
此外,本發(fā)明實(shí)施例還提出一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上存儲(chǔ)有軟件升級(jí)程序,所述軟件升級(jí)程序被主芯片執(zhí)行時(shí)實(shí)現(xiàn)如下操作:
主芯片在接收到主機(jī)發(fā)送的新版軟件數(shù)據(jù)時(shí),將接收到的所述新版軟件數(shù)據(jù)寫(xiě)入備份程序區(qū);所述備份程序區(qū)所在的存儲(chǔ)器為非易失性存儲(chǔ)器;
在接收到所述新版軟件數(shù)據(jù)的所有數(shù)據(jù)后,所述主芯片重新啟動(dòng);
在重啟后,所述主芯片采用所述備份程序區(qū)的新版軟件數(shù)據(jù)替換應(yīng)用程序區(qū)的舊版本軟件數(shù)據(jù),以對(duì)舊版本軟件升級(jí)。
進(jìn)一步地,所述軟件升級(jí)程序被主芯片執(zhí)行時(shí)還實(shí)現(xiàn)如下操作:
優(yōu)選地,所述將接收到的所述新版軟件數(shù)據(jù)寫(xiě)入備份程序區(qū)的步驟之后,所述軟件升級(jí)方法還包括:
向主機(jī)反饋與所接收到的新版軟件數(shù)據(jù)相對(duì)應(yīng)的幀號(hào)信息;
其中,所述主機(jī)依次發(fā)送新版本軟件數(shù)據(jù)的每一幀數(shù)據(jù)以及對(duì)應(yīng)的幀號(hào)信息,并在發(fā)送每一幀新版軟件數(shù)據(jù)后接收所述主芯片反饋的幀號(hào)信息;在接收到所述幀號(hào)信息后,所述主機(jī)判斷接收到的幀號(hào)信息與已發(fā)送的最后一幀新版軟件數(shù)據(jù)的幀號(hào)信息是否一致;若是,則向所述主芯片發(fā)送下一幀新版軟件數(shù)據(jù),直至發(fā)送完所述新版本軟件數(shù)據(jù)的所有數(shù)據(jù);若否或所述主芯片無(wú)響應(yīng)時(shí),重新發(fā)送所述新版本軟件數(shù)據(jù),直至達(dá)到重發(fā)極限次數(shù)時(shí)終止升級(jí)。
優(yōu)選地,所述將接收到的所述新版軟件數(shù)據(jù)寫(xiě)入備份程序區(qū)的步驟之后,還包括:
所述主芯片判斷當(dāng)前接收到的新版軟件數(shù)據(jù)的幀號(hào)信息與接收到的前一幀新版軟件數(shù)據(jù)的幀號(hào)信息是否相差1;
若是,則執(zhí)行所述向主機(jī)返回與所獲取的此幀新版軟件數(shù)據(jù)相對(duì)應(yīng)的幀號(hào)信息的步驟;
若否,則向所述主機(jī)發(fā)送升級(jí)異常指令,以供所述主機(jī)在接收到所述升級(jí)異常指令時(shí),重新發(fā)送所述新版軟件數(shù)據(jù)或停止發(fā)送所述新版軟件數(shù)據(jù)。
優(yōu)選地,所述主芯片重新啟動(dòng)之前,所述軟件升級(jí)方法還包括:
在接收到所述新版軟件數(shù)據(jù)的所有數(shù)據(jù)后,所述主芯片獲取所述主機(jī)發(fā)送的升級(jí)結(jié)束指令中包含的第一校驗(yàn)結(jié)果,并對(duì)所述備份程序區(qū)中寫(xiě)入的所述新版軟件數(shù)據(jù)進(jìn)行校驗(yàn),生成第二校驗(yàn)結(jié)果,其中,在接收到所述主機(jī)發(fā)送的升級(jí)結(jié)束指令時(shí),判定接收到所述新版軟件數(shù)據(jù)的所有數(shù)據(jù);
在所述第一校驗(yàn)結(jié)果與第二校驗(yàn)結(jié)果一致時(shí),執(zhí)行所述主芯片進(jìn)行重新啟動(dòng)的步驟。
優(yōu)選地,所述軟件升級(jí)方法還包括:
在接收到主機(jī)發(fā)送的升級(jí)指令時(shí),所述主芯片獲取所述升級(jí)請(qǐng)求信息中的版本信息;
在所述升級(jí)請(qǐng)求信息中的版本信息與主芯片中運(yùn)行的軟件的版本信息不同時(shí),向所述主機(jī)發(fā)送響應(yīng)信息,以供所述主機(jī)根據(jù)接收到的所述響應(yīng)信息向所述主芯片發(fā)送所述新版本軟件數(shù)據(jù)。
優(yōu)選地,所述向所述主機(jī)發(fā)送響應(yīng)信息的步驟之后,所述軟件升級(jí)方法還包括:
所述主芯片在接收到所述主機(jī)發(fā)送的啟動(dòng)升級(jí)指令時(shí),獲取所述啟動(dòng)升級(jí)指令中包含的新版軟件數(shù)據(jù)的占用空間大小信息,其中,所述主機(jī)在接收到所述響應(yīng)信息時(shí),向所述主芯片發(fā)送占用空間大小信息;
所述主芯片擦除所述備份程序區(qū)中的對(duì)應(yīng)存儲(chǔ)空間的扇區(qū),并向所述主機(jī)反饋升級(jí)應(yīng)答信息,以供所述主機(jī)在接收到所述升級(jí)應(yīng)答信息后,向所述主芯片發(fā)送所述新版本軟件數(shù)據(jù)。
優(yōu)選地,所述升級(jí)管理方法還包括:
所述主芯片在接收所述主機(jī)發(fā)送的軟件版本信息的查詢(xún)指令時(shí),確認(rèn)所述查詢(xún)請(qǐng)求對(duì)應(yīng)的軟件的版本信息并將所述版本信息發(fā)送至所述主機(jī);
其中,在所述主機(jī)接收到所述舊版本軟件的版本信息后,判斷主機(jī)中軟件的版本信息是否與接收到的版本信息不同;若是,則向所述主芯片發(fā)送所述新版軟件數(shù)據(jù)。
需要說(shuō)明的是,在本文中,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者系統(tǒng)不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品或者系統(tǒng)所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括該要素的過(guò)程、方法、物品或者系統(tǒng)中還存在另外的相同要素。
上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
通過(guò)以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到上述實(shí)施例方法可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過(guò)硬件,但很多情況下前者是更佳的實(shí)施方式。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在如上所述的一個(gè)存儲(chǔ)介質(zhì)(如rom/ram、磁碟、光盤(pán))中,包括若干指令用以使得一臺(tái)終端設(shè)備(可以是手機(jī),計(jì)算機(jī),服務(wù)器,空調(diào)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。
以上僅為本發(fā)明的優(yōu)選實(shí)施例,并非因此限制本發(fā)明的專(zhuān)利范圍,凡是利用本發(fā)明說(shuō)明書(shū)及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專(zhuān)利保護(hù)范圍內(nèi)。