低功耗嵌入式設(shè)備遠(yuǎn)程無(wú)線升級(jí)方法
【專利摘要】本發(fā)明公開(kāi)了一種低功耗嵌入式設(shè)備遠(yuǎn)程無(wú)線升級(jí)方法,包括步驟:(a)接收升級(jí)指令并響應(yīng):接收到升級(jí)指令時(shí),將外部存儲(chǔ)器中的遠(yuǎn)程升級(jí)標(biāo)志位置位,并重啟設(shè)備;(b)升級(jí)前校驗(yàn):檢測(cè)是否滿足升級(jí)條件,是則進(jìn)入步驟c,否則進(jìn)入步驟e;(c)接收升級(jí)包:連接數(shù)據(jù)中心,從數(shù)據(jù)中心接收新應(yīng)用程序升級(jí)包并存入外部存儲(chǔ)器;(d)升級(jí):將外部存儲(chǔ)器內(nèi)的新應(yīng)用程序編程至片內(nèi)應(yīng)用程序區(qū);(e)結(jié)束升級(jí):遠(yuǎn)程升級(jí)標(biāo)志位復(fù)位,結(jié)束升級(jí)。本發(fā)明專門(mén)針對(duì)基于低功耗單片機(jī)的嵌入式設(shè)備,為其提供了一種利用無(wú)線網(wǎng)絡(luò)對(duì)其遠(yuǎn)程升級(jí)的方法,具有升級(jí)容易、控制方便等優(yōu)點(diǎn)。
【專利說(shuō)明】低功耗嵌入式設(shè)備遠(yuǎn)程無(wú)線升級(jí)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種嵌入式設(shè)備遠(yuǎn)程升級(jí)方法,尤其涉及一種低功耗嵌入式設(shè)備遠(yuǎn)程無(wú)線升級(jí)方法。
【背景技術(shù)】
[0002]隨著信息技術(shù)的發(fā)展,遠(yuǎn)程無(wú)人值守設(shè)備廣泛應(yīng)用于電力、通訊等系統(tǒng)中,由于很大一部分電力、通訊設(shè)施工作在高山、野外等人煙稀少、環(huán)境惡劣的地方,因此無(wú)人值守設(shè)備對(duì)這些實(shí)施的監(jiān)控起著非常關(guān)鍵的作用。但是,由于技術(shù)的發(fā)展和更新,無(wú)人職守設(shè)備需要進(jìn)行定期升級(jí),但是由于這些設(shè)備所處位置偏遠(yuǎn)、分布范圍廣,現(xiàn)場(chǎng)升級(jí)工作強(qiáng)度大、難度高,而遠(yuǎn)程自動(dòng)升級(jí)則很好的解決這個(gè)問(wèn)題。
[0003]現(xiàn)有的部分無(wú)人值守設(shè)備采用了基于ARM、DSP的高性能處理器,基于成熟的配套BootLoader程序、并帶有實(shí)時(shí)操作系統(tǒng),功能強(qiáng)大,并且有著較為強(qiáng)大的官方支持。BootLoader程序是在操作系統(tǒng)內(nèi)核運(yùn)行之前運(yùn)行、初始化硬件設(shè)備、建立內(nèi)存空間映射圖、從而將系統(tǒng)的軟硬件環(huán)境帶到一個(gè)合適狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境的引導(dǎo)程序,整個(gè)系統(tǒng)的加載啟動(dòng)任務(wù)由BootLoader程序來(lái)完成。例如在一個(gè)基于ARM7TDMI core的嵌入式系統(tǒng)中,系統(tǒng)在上電或復(fù)位時(shí)通常都從地址0x00000000處開(kāi)始執(zhí)行,而在這個(gè)地址處安排的通常就是系統(tǒng)的BootLoader程序。由于基于ARM、DSP處理器的無(wú)人值守設(shè)備帶有實(shí)時(shí)操作系統(tǒng)、官方BootLoader程序,并且功能強(qiáng)大,其遠(yuǎn)程升級(jí)直接由操作系統(tǒng)的文件傳輸命令來(lái)進(jìn)行程序的升級(jí)和啟動(dòng),可以非常容易地實(shí)現(xiàn)遠(yuǎn)程升級(jí)功能。但這類設(shè)備具有成本高、功耗大的缺點(diǎn);此外,由于這類設(shè)備包含了操作系統(tǒng),因此其升級(jí)程序較大,一般只能通過(guò)有線網(wǎng)絡(luò)進(jìn)行升級(jí)。
[0004]實(shí)際應(yīng)用中,由于遠(yuǎn)程無(wú)人值守設(shè)備以及類似的嵌入式設(shè)備并不需要太高的性能要求,只需具備簡(jiǎn)單的監(jiān)測(cè)、通信功能,完全可采用低功耗單片機(jī)例如MSP430平臺(tái),并利用移動(dòng)通信網(wǎng)絡(luò)實(shí)現(xiàn)通信等。但是,該類低功耗單片機(jī)資源較少、性能較低,其沒(méi)有實(shí)時(shí)操作系統(tǒng)也沒(méi)有官方BootLoader程序,其片內(nèi)一般僅存儲(chǔ)有非常精簡(jiǎn)的應(yīng)用程序,因此其升級(jí)就無(wú)法通過(guò)操作系統(tǒng)的文件傳輸命令來(lái)實(shí)現(xiàn)。
【發(fā)明內(nèi)容】
[0005]本發(fā)明要解決的技術(shù)問(wèn)題就在于:針對(duì)現(xiàn)有技術(shù)存在的上述不足,本發(fā)明提供一種低功耗嵌入式設(shè)備遠(yuǎn)程無(wú)線升級(jí)方法,該方法專門(mén)針對(duì)基于低功耗單片機(jī)的嵌入式設(shè)備,為其提供一種簡(jiǎn)單、方便的利用無(wú)線網(wǎng)絡(luò)遠(yuǎn)程升級(jí)方法。
[0006]為實(shí)現(xiàn)上述目的,本發(fā)明的低功耗嵌入式設(shè)備遠(yuǎn)程無(wú)線升級(jí)方法,包括以下步驟:
(a)接收升級(jí)指令并響應(yīng):接收到升級(jí)指令時(shí),將外部存儲(chǔ)器中的遠(yuǎn)程升級(jí)標(biāo)志位置位,并重啟設(shè)備;
(b)升級(jí)前校驗(yàn):檢測(cè)是否滿足升級(jí)條件,是則進(jìn)入步驟C,否則進(jìn)入步驟e; (C)接收升級(jí)包:連接數(shù)據(jù)中心,從數(shù)據(jù)中心接收新應(yīng)用程序升級(jí)包并存入外部存儲(chǔ)
器;
(d)升級(jí):將外部存儲(chǔ)器內(nèi)的新應(yīng)用程序編程至片內(nèi)應(yīng)用程序區(qū);
Ce)結(jié)束升級(jí):遠(yuǎn)程升級(jí)標(biāo)志位復(fù)位,結(jié)束升級(jí)。
[0007]本方案是專門(mén)針對(duì)基于低功耗單片機(jī)的嵌入式設(shè)備的遠(yuǎn)程無(wú)線升級(jí)方法,該類嵌入式設(shè)備包括單片機(jī)、通信模塊、外部存儲(chǔ)器,其中低功耗單片機(jī)內(nèi)無(wú)操作系統(tǒng),且單片機(jī)片內(nèi)的flash程序存儲(chǔ)區(qū)內(nèi)劃分有用于存儲(chǔ)應(yīng)用程序的應(yīng)用程序區(qū);通訊模塊用于無(wú)線連接發(fā)送升級(jí)指令和升級(jí)程序的數(shù)據(jù)中心,接收升級(jí)包和發(fā)送狀態(tài)報(bào)文;外部存儲(chǔ)器作為遠(yuǎn)程升級(jí)的程序臨時(shí)緩存區(qū),用于暫存從數(shù)據(jù)中心接收的升級(jí)包,并且外部存儲(chǔ)器中配置有數(shù)據(jù)中心IP地址等通訊必要參數(shù),一般情況下,嵌入式設(shè)備運(yùn)行應(yīng)用程序,并定時(shí)連接數(shù)據(jù)中心接收升級(jí)指令,當(dāng)接收到升級(jí)指令時(shí)按照步驟(a)?Ce)執(zhí)行升級(jí),其余時(shí)間嵌入式設(shè)備的連接設(shè)備等可休眠以保證嵌入式設(shè)備的低功耗,采用本方案的遠(yuǎn)程升級(jí)方法,低功耗嵌入式設(shè)備也可以通過(guò)無(wú)線通信網(wǎng)絡(luò)進(jìn)行遠(yuǎn)程升級(jí),并且其升級(jí)方法也非常簡(jiǎn)單、方便和易于控制。本方案中,步驟(e)是結(jié)束升級(jí)和模式切換步驟,當(dāng)升級(jí)條件不滿足、數(shù)據(jù)中心連接不成功、應(yīng)用程序驗(yàn)證或燒寫(xiě)不成功時(shí),直接通過(guò)該步驟結(jié)束升級(jí),并切換到應(yīng)用程序中。
[0008]進(jìn)一步,步驟b中的升級(jí)條件包括:外部存儲(chǔ)器內(nèi)存在遠(yuǎn)程無(wú)線升級(jí)的有效配置信息并且遠(yuǎn)程升級(jí)標(biāo)志位已置位,其中,有效配置信息包括數(shù)據(jù)中心IP地址,該IP地址可以不止一個(gè),本方案中可配置4個(gè)IP地址,支持四個(gè)數(shù)據(jù)中心的升級(jí)控制。
[0009]進(jìn)一步,步驟c中接收升級(jí)包的具體步驟是:
(Cl)根據(jù)外部存儲(chǔ)器中的IP地址連接數(shù)據(jù)中心,若連接成功,向數(shù)據(jù)中心發(fā)送狀態(tài)報(bào)文,進(jìn)入步驟(c2);若連接失敗則重新連接,如果連續(xù)3次連接失敗,則進(jìn)入步驟(e);上述狀態(tài)報(bào)文內(nèi)含當(dāng)前外部存儲(chǔ)器已接收成功的有效升級(jí)包序號(hào);
(c2)數(shù)據(jù)中心根據(jù)接收的最新?tīng)顟B(tài)報(bào)文依次發(fā)送外部存儲(chǔ)器中未接收到的升級(jí)包,每個(gè)升級(jí)包內(nèi)均含有升級(jí)包序號(hào)和校驗(yàn)碼;
(c3)接收數(shù)據(jù)中心發(fā)至的升級(jí)包,并在收到每個(gè)升級(jí)包后向數(shù)據(jù)中心發(fā)送狀態(tài)報(bào)文; (c4)重復(fù)步驟c2和c3,直到所有升級(jí)包接收完成或發(fā)生中斷。
[0010]本方案中,步驟Cl中,設(shè)置3次重新連接的機(jī)會(huì),3次均連接失敗才進(jìn)入應(yīng)用程序,可以有效提高升級(jí)穩(wěn)定性;步驟c2至c3中,通過(guò)向數(shù)據(jù)中心回發(fā)狀態(tài)報(bào)文的機(jī)制,可以保證升級(jí)包接收的完整性,并能保證升級(jí)包發(fā)送和接收不重復(fù),提高升級(jí)效率,還能支持發(fā)生中斷后的斷點(diǎn)續(xù)傳。
[0011]進(jìn)一步,步驟c4中發(fā)生中斷是指當(dāng)設(shè)備掉電或通訊中斷無(wú)法與數(shù)據(jù)中心連接時(shí)發(fā)生的無(wú)法獲取升級(jí)包的情況,當(dāng)中斷發(fā)生時(shí),退出本次升級(jí);中斷結(jié)束后,繼續(xù)執(zhí)行遠(yuǎn)程升級(jí),執(zhí)行步驟(b),支持掉電保持和斷點(diǎn)續(xù)傳工作模式。本步驟中,中斷結(jié)束后,繼續(xù)執(zhí)行遠(yuǎn)程升級(jí)包括兩種情況:設(shè)備掉電中斷結(jié)束后,設(shè)備上電立即進(jìn)入步驟(b),繼續(xù)執(zhí)行遠(yuǎn)程升級(jí);通訊中斷結(jié)束后,通訊恢復(fù),但設(shè)備仍然繼續(xù)運(yùn)行應(yīng)用程序,當(dāng)再次接收到升級(jí)指令時(shí)再進(jìn)入步驟(b)。
[0012]進(jìn)一步,步驟d中還包括有效性校驗(yàn)和匹配性驗(yàn)證流程,具體步驟如下:
(dl)匹配性驗(yàn)證:驗(yàn)證新應(yīng)用程序與設(shè)備是否匹配,匹配則驗(yàn)證通過(guò),否則驗(yàn)證不通過(guò);
(d2)有效性校驗(yàn):檢驗(yàn)外部存儲(chǔ)器中升級(jí)包的有效性,有效則校驗(yàn)通過(guò),否則校驗(yàn)不通
過(guò);
(d3)匹配性驗(yàn)證和有效性校驗(yàn)均通過(guò)后,將外部存儲(chǔ)器內(nèi)的新應(yīng)用程序編程至片內(nèi)應(yīng)用程序區(qū);其中任意一項(xiàng)驗(yàn)證不通過(guò)則擦除外部存儲(chǔ)器內(nèi)的程序。
[0013]本方案中,對(duì)下載的新應(yīng)用程序進(jìn)行了匹配性和有效性的驗(yàn)證,以防止錯(cuò)誤升級(jí)或升級(jí)不完全,保證了升級(jí)的安全性。
[0014]進(jìn)一步,每個(gè)升級(jí)包內(nèi)均含有包序號(hào)和當(dāng)前包CRC校驗(yàn)碼,最后一個(gè)升級(jí)包內(nèi)還含有校驗(yàn)值,步驟d2中有效性的驗(yàn)證方法為:將所有升級(jí)包內(nèi)的數(shù)據(jù)段累加,得到數(shù)據(jù)段累加值;再將所有升級(jí)包內(nèi)的CRC校驗(yàn)碼累加,得到校驗(yàn)碼累加值;將數(shù)據(jù)段累加值和校驗(yàn)碼累加值與最后一個(gè)升級(jí)包內(nèi)的校驗(yàn)值比較,如果相同,則校驗(yàn)通過(guò),不同則校驗(yàn)不通過(guò)。
[0015]進(jìn)一步,步驟d2的有效性驗(yàn)證具體步驟如下:
(d21)從外部存儲(chǔ)器中讀取第I個(gè)升級(jí)包數(shù)據(jù),將其中的數(shù)據(jù)段累加,結(jié)果存入寄存器A,并取該包的CRC校驗(yàn)碼存入寄存器B ;
(d22)判斷當(dāng)前包序號(hào)是否為最后一包,如果不是,進(jìn)入步驟d23;如果是,進(jìn)入步驟
d24 ;
(d23)讀取下一個(gè)升級(jí)包數(shù)據(jù),將其中的數(shù)據(jù)段累加,累加結(jié)果再與寄存器A的數(shù)據(jù)相力口,相加結(jié)果再次存入寄存器A并覆蓋寄存器A中的原有數(shù)據(jù);同時(shí),取該包的CRC校驗(yàn)碼與寄存器B相加,相加結(jié)果再次存入寄存器B并覆蓋寄存器B中的原有數(shù)據(jù);完成前述操作后進(jìn)入步驟d22 ;
(d24)比較寄存器A和寄存器B中的數(shù)據(jù)是否與最后一個(gè)升級(jí)包內(nèi)的校驗(yàn)值相同,相同為校驗(yàn)通過(guò),反之不通過(guò)。
[0016]本方案中,采用了代碼累加和校驗(yàn)、單包CRC校驗(yàn)碼的累加和校驗(yàn)雙重校驗(yàn)方式對(duì)升級(jí)包有效性進(jìn)行了校驗(yàn)。現(xiàn)有技術(shù)中,數(shù)據(jù)校驗(yàn)是為保證數(shù)據(jù)完整性的一種手段,發(fā)送方用一種指定的算法對(duì)原始數(shù)據(jù)計(jì)算出一個(gè)校驗(yàn)值;接收方用同樣的算法計(jì)算一次校驗(yàn)值,如果接收方計(jì)算的校驗(yàn)值和發(fā)送方隨數(shù)據(jù)提供的校驗(yàn)值一樣,說(shuō)明數(shù)據(jù)完整。傳統(tǒng)的校驗(yàn)方式有奇偶校驗(yàn)、異或校驗(yàn)、CRC循環(huán)冗余校驗(yàn)、md5校驗(yàn)等。由于本方案中低功耗單片機(jī)計(jì)算能力弱,在大量數(shù)據(jù)校驗(yàn)情況下不適合采用復(fù)雜的CRC、md5校驗(yàn)等方式,而采用如累加和校驗(yàn)、異或校驗(yàn)等簡(jiǎn)單方式在數(shù)據(jù)安全性方面又不能保證。而本方案中需要校驗(yàn)的數(shù)據(jù)為需要遠(yuǎn)程升級(jí)的代碼,對(duì)校驗(yàn)速度和安全性均有極高的要求,因此發(fā)明人設(shè)計(jì)了上述組合校驗(yàn)方法,同時(shí)滿足了校驗(yàn)速度和安全性的要求。本方案中,有效性校驗(yàn)采用了雙重校驗(yàn)方式,升級(jí)的安全性和速度明顯得到提高。
[0017]進(jìn)一步,步驟d中將外部存儲(chǔ)器內(nèi)的新應(yīng)用程序編程至片內(nèi)應(yīng)用程序區(qū)后,還進(jìn)行了代碼一致性驗(yàn)證:對(duì)比片內(nèi)應(yīng)用程序區(qū)和外部存儲(chǔ)器的2段程序代碼,如果2段程序代碼一致,則進(jìn)入步驟(e);如果不一致,重新將外部存儲(chǔ)器內(nèi)的新應(yīng)用程序編程至片內(nèi)應(yīng)用程序區(qū),再次進(jìn)行代碼一致性驗(yàn)證;如果連續(xù)3次驗(yàn)證失敗,向數(shù)據(jù)中心發(fā)送待檢修的狀態(tài)報(bào)文,進(jìn)入步驟(e)。本方案中設(shè)計(jì)了代碼一致性校驗(yàn)步驟,防止應(yīng)用程序燒寫(xiě)不完全,并還增設(shè)了編程失敗的處理方法,及時(shí)將編程失敗的狀態(tài)上報(bào)數(shù)據(jù)中心。
[0018]相對(duì)于現(xiàn)有技術(shù),本發(fā)明具有如下優(yōu)點(diǎn)和有益效果: 1、本發(fā)明的低功耗嵌入式設(shè)備遠(yuǎn)程無(wú)線升級(jí)方法專門(mén)為低功耗嵌入式設(shè)備設(shè)計(jì),其為采用低功耗單片機(jī)的嵌入式設(shè)備提供了一種遠(yuǎn)程無(wú)線升級(jí)方法,支持類似野外無(wú)人值守設(shè)備的功能簡(jiǎn)單、性能較低而又起著必不可少作用的嵌入式設(shè)備在滿足使用和遠(yuǎn)程升級(jí)的要求下采用低成本、低功耗的單片機(jī);
2、本發(fā)明支持的低功耗嵌入式設(shè)備,其采用的低功耗單片機(jī)不含操作系統(tǒng),代碼量較少,能夠利用GPRS等無(wú)線網(wǎng)絡(luò)遠(yuǎn)程升級(jí);
3、本發(fā)明通過(guò)固定地址的共享內(nèi)存標(biāo)志與匯編跳轉(zhuǎn)指令,來(lái)支持遠(yuǎn)程升級(jí)與應(yīng)用程序公用所有硬件中斷;
4、本發(fā)明的升級(jí)包接收過(guò)程中設(shè)計(jì)了掉電保持和斷電續(xù)傳模式,使得在中斷結(jié)束后可以繼續(xù)延續(xù)上次的升級(jí)進(jìn)度進(jìn)行升級(jí),減少升級(jí)時(shí)間;
5、本發(fā)明在連接過(guò)程中設(shè)計(jì)了模式自動(dòng)切換功能,當(dāng)連續(xù)3次都無(wú)法成功連接數(shù)據(jù)中心時(shí),設(shè)備自切換到應(yīng)用程序中,由應(yīng)用程序收到升級(jí)命令再切換回升級(jí)模式中;
6、本發(fā)明在升級(jí)包接收過(guò)程中還設(shè)計(jì)了校驗(yàn)機(jī)制,確保數(shù)據(jù)中心發(fā)送每個(gè)升級(jí)包都接收成功,保證升級(jí)應(yīng)用程序的完整性;
7、本發(fā)明在接收完升級(jí)包后還具有新應(yīng)用程序的有效性驗(yàn)證和匹配性驗(yàn)證步驟,防止升級(jí)了錯(cuò)誤版本或無(wú)效的應(yīng)用程序,保障設(shè)備安全運(yùn)行;
8、本發(fā)明在燒寫(xiě)完新應(yīng)用程序后還設(shè)置有代碼一致性校驗(yàn)步驟,防止應(yīng)用程序燒寫(xiě)不完全,并還增設(shè)了編程失敗的處理方法,及時(shí)將編程失敗的狀態(tài)上報(bào)數(shù)據(jù)中心。
【專利附圖】
【附圖說(shuō)明】
[0019]圖1為本發(fā)明的流程圖。
【具體實(shí)施方式】
[0020]下面結(jié)合實(shí)施例及附圖,對(duì)本發(fā)明作進(jìn)一步的詳細(xì)說(shuō)明,但本發(fā)明的實(shí)施方式不僅限于此。
[0021]低功耗嵌入式設(shè)備的硬件組成包括:msp430單片機(jī)、內(nèi)置AT命令集的gprs通信模塊,SPI接口 flash存儲(chǔ)芯片(B卩外部存儲(chǔ)器)。其中,msp430單片機(jī)片內(nèi)含有flash程序存儲(chǔ)區(qū),本實(shí)施例中將該存儲(chǔ)區(qū)劃分為2部分代碼空間:一部分為引導(dǎo)程序區(qū)、另一部分為應(yīng)用程序區(qū);SPI接口 flash存儲(chǔ)芯片作為遠(yuǎn)程升級(jí)的程序的臨時(shí)緩存區(qū)。設(shè)備的系統(tǒng)第一次運(yùn)行時(shí),msp430單片機(jī)片內(nèi)沒(méi)有應(yīng)用程序,需要通過(guò)串口將應(yīng)用程序燒寫(xiě)至片內(nèi)應(yīng)用程序區(qū),并且進(jìn)入應(yīng)用程序內(nèi)配置設(shè)備的GPRS通訊必要參數(shù),如IP地址端口號(hào)。如圖1所示,本實(shí)施例的低功耗嵌入式設(shè)備遠(yuǎn)程無(wú)線升級(jí)方法包括以下步驟:
步驟1:通常情況下,設(shè)備運(yùn)行應(yīng)用程序,并且設(shè)備定時(shí)連接GPRS網(wǎng)絡(luò)中心(即數(shù)據(jù)中心)接收遠(yuǎn)程升級(jí)指令,當(dāng)收到GPRS網(wǎng)絡(luò)中心遠(yuǎn)程升級(jí)指令后,將遠(yuǎn)程升級(jí)標(biāo)志位置位、退出當(dāng)前應(yīng)用程序、重啟設(shè)備進(jìn)入步驟2。本步驟中,可在收到遠(yuǎn)程升級(jí)指令后將遠(yuǎn)程升級(jí)標(biāo)志位設(shè)置為I,升級(jí)完成后設(shè)置為O。
[0022]步驟2:設(shè)備重啟后首先進(jìn)行升級(jí)判斷,檢測(cè)flash存儲(chǔ)芯片內(nèi)是否存在進(jìn)行無(wú)線gprs升級(jí)的有效配置信息,如IP地址端口號(hào)、是否存在需要進(jìn)行遠(yuǎn)程升級(jí)的標(biāo)志位等。如果flash存儲(chǔ)芯片內(nèi)存在進(jìn)行無(wú)線gprs升級(jí)的有效配置信息,并且遠(yuǎn)程升級(jí)標(biāo)志位已置位則進(jìn)入步驟3 ;反之,如果缺少任意一項(xiàng)條件,則直接跳轉(zhuǎn)進(jìn)入應(yīng)用程序,結(jié)束升級(jí),將遠(yuǎn)程升級(jí)標(biāo)志位復(fù)位。本步驟中SPI接口 flash存儲(chǔ)芯片內(nèi)可以存儲(chǔ)四個(gè)IP地址端口號(hào),使得設(shè)備可以接收來(lái)個(gè)四個(gè)GPRS網(wǎng)絡(luò)中心的升級(jí)指令并響應(yīng),便于操作人員可以在預(yù)先設(shè)定的任一數(shù)據(jù)中心控制升級(jí)。
[0023]步驟3:設(shè)備根據(jù)IP地址判斷發(fā)送遠(yuǎn)程升級(jí)指令的GPRS網(wǎng)絡(luò)中心并通過(guò)gprs通信模塊與該中心連接,若連接成功,向該GPRS網(wǎng)絡(luò)中心發(fā)送狀態(tài)報(bào)文,進(jìn)入步驟4 ;若連接失敗則重新連接,如果連續(xù)3次連接失敗,則結(jié)束該次升級(jí),將遠(yuǎn)程升級(jí)標(biāo)志位復(fù)位,跳回應(yīng)用程序;本步驟中,上述狀態(tài)報(bào)文內(nèi)含當(dāng)前外部存儲(chǔ)器已接收成功的有效升級(jí)包序號(hào),便于數(shù)據(jù)中心區(qū)分已發(fā)升級(jí)包和未發(fā)升級(jí)包,便于下次升級(jí)時(shí)接繼續(xù)升級(jí),直接發(fā)送未發(fā)升級(jí)包,而不用重新全部發(fā)送、重新升級(jí);第一次升級(jí)時(shí),狀態(tài)報(bào)文內(nèi)的當(dāng)前外部存儲(chǔ)器已接收成功的有效升級(jí)包序號(hào)值為O。
[0024]步驟4 =GPRS網(wǎng)絡(luò)中心根據(jù)接收的最新?tīng)顟B(tài)報(bào)文依次發(fā)送flash存儲(chǔ)芯片中未接收到的升級(jí)包,每個(gè)升級(jí)包內(nèi)均含有升級(jí)包序號(hào)和CRC校驗(yàn)碼,低功耗嵌入式設(shè)備在收到每個(gè)升級(jí)包后將最新接收的升級(jí)包序號(hào)添加到狀態(tài)報(bào)文中并發(fā)送給GPRS網(wǎng)絡(luò)中心,從而通過(guò)校驗(yàn)機(jī)制確認(rèn)每一包均接收成功。若中途中斷則退出本次升級(jí),等待終端結(jié)束后繼續(xù)升級(jí);若完整接收完所有升級(jí)包則進(jìn)入步驟5。本步驟中,退出本次是指設(shè)備停止工作或直接跳轉(zhuǎn)進(jìn)入應(yīng)用程序但是其遠(yuǎn)程設(shè)計(jì)標(biāo)志位保持置位狀態(tài)。中斷可能由設(shè)備掉電、通訊信號(hào)中斷造成,當(dāng)發(fā)生掉電中斷時(shí),設(shè)備上電重啟后,會(huì)按步驟2首先檢測(cè)是否進(jìn)行升級(jí),由于發(fā)生掉電中斷,遠(yuǎn)程升級(jí)標(biāo)志位保持置位狀態(tài),并且外部存儲(chǔ)器中也配置了有效的升級(jí)信息,因此會(huì)直接進(jìn)入升級(jí)流程,從上次升級(jí)中斷處繼續(xù)升級(jí),即進(jìn)行斷電續(xù)傳;當(dāng)發(fā)生通訊中斷時(shí),設(shè)備退出本次升級(jí),直接進(jìn)入應(yīng)用程序,直到數(shù)據(jù)中心重新發(fā)來(lái)升級(jí)指令時(shí)才重啟設(shè)備繼續(xù)進(jìn)行升級(jí),同樣也是從上次升級(jí)中斷處開(kāi)始接收升級(jí)包。
[0025]步驟f:所有程序包全部接收完后,驗(yàn)證新應(yīng)用程序的有效性和匹配性,其中,有效性和匹配性驗(yàn)證可以同時(shí)進(jìn)行也可先后進(jìn)行(順序不限),但必須要兩個(gè)驗(yàn)證都通過(guò)時(shí)才能將外部flash存儲(chǔ)芯片內(nèi)的新應(yīng)用程序程序編程至片內(nèi)應(yīng)用程序區(qū),并重啟啟動(dòng)新應(yīng)用程序;如果任一項(xiàng)校驗(yàn)不通過(guò)則擦除臨時(shí)緩存區(qū)中的程序,將遠(yuǎn)程升級(jí)標(biāo)志位復(fù)位、并跳回應(yīng)用程序結(jié)束該次升級(jí)。本步驟中,編程新應(yīng)用程序可采用傳統(tǒng)的程序燒寫(xiě)方式。
[0026]本步驟中,匹配性驗(yàn)證主要用于驗(yàn)證新應(yīng)用程序與設(shè)備是否匹配,匹配則驗(yàn)證通過(guò),否則驗(yàn)證不通過(guò),其驗(yàn)證方法可以為讀取設(shè)備的硬件地址和新應(yīng)用程序中的硬件地址,如果一致則驗(yàn)證通過(guò),不一致則驗(yàn)證不通過(guò)
有效性校驗(yàn)主要用于檢驗(yàn)外部存儲(chǔ)器中升級(jí)包的有效性,有效則校驗(yàn)通過(guò),否則校驗(yàn)不通過(guò);本實(shí)例中的升級(jí)包為1500個(gè)左右,每包含有包序號(hào)、數(shù)據(jù)段和設(shè)置在每包結(jié)尾的當(dāng)前包CRC校驗(yàn)碼,而最后一包為特殊包,還含有正確校驗(yàn)值X和Y。由于低功耗小型單片機(jī)運(yùn)算能力有限,本實(shí)施例中采用代碼累加和校驗(yàn)、單包CRC校驗(yàn)碼的累加和校驗(yàn)雙重方式,避免傳統(tǒng)的CRC校驗(yàn)方式,提高校驗(yàn)速度,保證安全性。有效性校驗(yàn)的具體步驟如下:
(1)從外部存儲(chǔ)器中讀取第I個(gè)升級(jí)包數(shù)據(jù),將其中的數(shù)據(jù)段累加,結(jié)果存入寄存器A,并取該包的CRC校驗(yàn)碼存入寄存器B ;
(2)判斷當(dāng)前包序號(hào)是否為最后一包,如果不是,進(jìn)入步驟d23;如果是,進(jìn)入步驟(4);
(3)讀取下一個(gè)升級(jí)包數(shù)據(jù),將其中的數(shù)據(jù)段累加,累加結(jié)果再與寄存器A的數(shù)據(jù)相力口,相加結(jié)果再次存入寄存器A并覆蓋寄存器A中的原有數(shù)據(jù);同時(shí),取該包的CRC校驗(yàn)碼與寄存器B相加,相加結(jié)果再次存入寄存器B并覆蓋寄存器B中的原有數(shù)據(jù);完成前述操作后進(jìn)入步驟(2);
(4)判斷寄存器A和寄存器B中的數(shù)據(jù)是否與最后一個(gè)升級(jí)包內(nèi)的校驗(yàn)值比較X、Y,如果寄存器A和寄存器B中的數(shù)據(jù)一個(gè)與X相同、一個(gè)與Y相同,則校驗(yàn)通過(guò),否則校驗(yàn)不通過(guò)。
[0027]實(shí)際應(yīng)用中,也可以采用其他算法校驗(yàn),只需要將所有升級(jí)包內(nèi)的數(shù)據(jù)段累加,得到數(shù)據(jù)段累加值Α,6 ;再將所有升級(jí)包內(nèi)的CRC校驗(yàn)碼累加,得到校驗(yàn)碼累加值Β& ;將“、和B&與X和Y比較,如果AJP B 其中一個(gè)與X相同、一個(gè)與Y相同,則校驗(yàn)通過(guò),否則校驗(yàn)不通過(guò)。此外,最后一個(gè)升級(jí)包可以只含有I個(gè)正確校驗(yàn)值Z (Ζ=Χ+Υ),上述校驗(yàn)步驟還可增設(shè)一步:將“與B,6相加,所得結(jié)果與Z比較,相同則校驗(yàn)通過(guò),否則校驗(yàn)不通過(guò)。
[0028]此外,在將新應(yīng)用程序編程至片內(nèi)應(yīng)用程序區(qū)后還可以進(jìn)一步對(duì)比驗(yàn)證片內(nèi)應(yīng)用程序區(qū)和程序緩存區(qū)的2段代碼的一致性,若代碼不一致,說(shuō)明燒寫(xiě)不完全,重新燒寫(xiě);若嘗試3次燒寫(xiě)均失敗,說(shuō)明芯片損壞,向數(shù)據(jù)中心發(fā)送待檢修的狀態(tài)報(bào)文;若燒寫(xiě)成功,則將遠(yuǎn)程升級(jí)標(biāo)志位復(fù)位,結(jié)束升級(jí),并重啟設(shè)備,由于標(biāo)志位已復(fù)位,不會(huì)進(jìn)入升級(jí)流程,而開(kāi)始運(yùn)行新的應(yīng)用程序。
[0029]以上僅是本發(fā)明的優(yōu)選實(shí)施方式,本發(fā)明的保護(hù)范圍并不僅局限于上述實(shí)施例,凡屬于本發(fā)明思路下的技術(shù)方案均屬于本發(fā)明的保護(hù)范圍。應(yīng)當(dāng)指出,對(duì)于本【技術(shù)領(lǐng)域】的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理前提下的若干改進(jìn)和潤(rùn)飾,應(yīng)視為本發(fā)明的保護(hù)范圍。
【權(quán)利要求】
1.低功耗嵌入式設(shè)備遠(yuǎn)程無(wú)線升級(jí)方法,其特征在于,包括以下步驟: Ca)接收升級(jí)指令并響應(yīng):接收到升級(jí)指令時(shí),將外部存儲(chǔ)器中的遠(yuǎn)程升級(jí)標(biāo)志位置位,并重啟設(shè)備; (b)升級(jí)前校驗(yàn):檢測(cè)是否滿足升級(jí)條件,是則進(jìn)入步驟C,否則進(jìn)入步驟e ; (C)接收升級(jí)包:連接數(shù)據(jù)中心,從數(shù)據(jù)中心接收新應(yīng)用程序升級(jí)包并存入外部存儲(chǔ)器; (d)升級(jí):將外部存儲(chǔ)器內(nèi)的新應(yīng)用程序編程至片內(nèi)應(yīng)用程序區(qū); Ce)結(jié)束升級(jí):遠(yuǎn)程升級(jí)標(biāo)志位復(fù)位,結(jié)束升級(jí)。
2. 根據(jù)權(quán)利要求1所述的低功耗嵌入式設(shè)備遠(yuǎn)程無(wú)線升級(jí)方法,其特征在于,步驟b中的升級(jí)條件包括:外部存儲(chǔ)器內(nèi)存在遠(yuǎn)程無(wú)線升級(jí)的有效配置信息并且遠(yuǎn)程升級(jí)標(biāo)志位已置位,所述有效配置信息包括數(shù)據(jù)中心IP地址。
3.根據(jù)權(quán)利要求2所述的低功耗嵌入式設(shè)備遠(yuǎn)程無(wú)線升級(jí)方法,其特征在于,步驟c中接收升級(jí)包的具體步驟是: (Cl)根據(jù)外部存儲(chǔ)器中的IP地址連接數(shù)據(jù)中心,若連接成功,向數(shù)據(jù)中心發(fā)送狀態(tài)報(bào)文,進(jìn)入步驟(c2);若連接失敗則重新連接,如果連續(xù)3次連接失敗,則進(jìn)入步驟(e);所述狀態(tài)報(bào)文內(nèi)含當(dāng)前外部存儲(chǔ)器已接收成功的有效升級(jí)包序號(hào); (c2)數(shù)據(jù)中心根據(jù)接收的最新?tīng)顟B(tài)報(bào)文依次發(fā)送外部存儲(chǔ)器中未接收到的升級(jí)包,每個(gè)升級(jí)包內(nèi)均含有升級(jí)包序號(hào)和校驗(yàn)碼; (c3)接收數(shù)據(jù)中心發(fā)至的升級(jí)包,并在收到每個(gè)升級(jí)包后向數(shù)據(jù)中心發(fā)送狀態(tài)報(bào)文; (c4)重復(fù)步驟c2和c3,直到所有升級(jí)包接收完成或發(fā)生中斷。
4.根據(jù)權(quán)利要求3所述的低功耗嵌入式設(shè)備遠(yuǎn)程無(wú)線升級(jí)方法,其特征在于,步驟c4中發(fā)生中斷是指當(dāng)設(shè)備掉電或通訊中斷無(wú)法與數(shù)據(jù)中心連接時(shí)發(fā)生的無(wú)法獲取升級(jí)包的情況,當(dāng)中斷發(fā)生時(shí),退出本次升級(jí);中斷結(jié)束后,繼續(xù)執(zhí)行遠(yuǎn)程升級(jí),執(zhí)行步驟(b)。
5.根據(jù)權(quán)利要求1至4任一所述的低功耗嵌入式設(shè)備遠(yuǎn)程無(wú)線升級(jí)方法,其特征在于,步驟d中還包括有效性校驗(yàn)和匹配性驗(yàn)證流程,具體步驟如下: (dl)匹配性驗(yàn)證:驗(yàn)證新應(yīng)用程序與設(shè)備是否匹配,匹配則驗(yàn)證通過(guò),否則驗(yàn)證不通過(guò); (d2)有效性校驗(yàn):檢驗(yàn)外部存儲(chǔ)器中升級(jí)包的有效性,有效則校驗(yàn)通過(guò),否則校驗(yàn)不通過(guò); (d3)匹配性驗(yàn)證和有效性校驗(yàn)均通過(guò)后,將外部存儲(chǔ)器內(nèi)的新應(yīng)用程序編程至片內(nèi)應(yīng)用程序區(qū);其中任意一項(xiàng)驗(yàn)證不通過(guò)則擦除外部存儲(chǔ)器內(nèi)的程序。
6.根據(jù)權(quán)利要求5所述的低功耗嵌入式設(shè)備遠(yuǎn)程無(wú)線升級(jí)方法,其特征在于,每個(gè)升級(jí)包內(nèi)均含有包序號(hào)和當(dāng)前包CRC校驗(yàn)碼,最后一個(gè)升級(jí)包內(nèi)還含有校驗(yàn)值,步驟d2中有效性的驗(yàn)證方法為:將所有升級(jí)包內(nèi)的數(shù)據(jù)段累加,得到數(shù)據(jù)段累加值;再將所有升級(jí)包內(nèi)的CRC校驗(yàn)碼累加,得到校驗(yàn)碼累加值;將數(shù)據(jù)段累加值和校驗(yàn)碼累加值與最后一個(gè)升級(jí)包內(nèi)的校驗(yàn)值比較,如果相同,則校驗(yàn)通過(guò),不同則校驗(yàn)不通過(guò)。
7.根據(jù)權(quán)利要求6所述的低功耗嵌入式設(shè)備遠(yuǎn)程無(wú)線升級(jí)方法,其特征在于,步驟d2的有效性驗(yàn)證具體步驟如下: (d21)從外部存儲(chǔ)器中讀取第I個(gè)升級(jí)包數(shù)據(jù),將其中的數(shù)據(jù)段累加,結(jié)果存入寄存器A,并取該包的CRC校驗(yàn)碼存入寄存器B ; (d22)判斷當(dāng)前包序號(hào)是否為最后一包,如果不是,進(jìn)入步驟d23;如果是,進(jìn)入步驟d24 ; (d23)讀取下一個(gè)升級(jí)包數(shù)據(jù),將其中的數(shù)據(jù)段累加,累加結(jié)果再與寄存器A的數(shù)據(jù)相加,相加結(jié)果再次存入寄存器A并覆蓋寄存器A中的原有數(shù)據(jù);同時(shí),取該包的CRC校驗(yàn)碼與寄存器B相加,相加結(jié)果再次存入寄存器B并覆蓋寄存器B中的原有數(shù)據(jù);完成前述操作后進(jìn)入步驟d22 ; (d24)比較寄存器A和寄存器B中的數(shù)據(jù)是否與最后一個(gè)升級(jí)包內(nèi)的校驗(yàn)值相同,相同為校驗(yàn)通過(guò),反之不通過(guò)。
8.根據(jù)權(quán)利要求7所述的低功耗嵌入式設(shè)備遠(yuǎn)程無(wú)線升級(jí)方法,其特征在于,步驟d中將外部存儲(chǔ)器內(nèi)的新應(yīng)用程序編程至片內(nèi)應(yīng)用程序區(qū)后,還進(jìn)行了代碼一致性驗(yàn)證:對(duì)比片內(nèi)應(yīng)用程序區(qū)和外部存儲(chǔ)器的2段程序代碼,如果2段程序代碼一致,則進(jìn)入步驟(e);如果不一致,重新將外部存儲(chǔ)器內(nèi)的新應(yīng)用程序編程至片內(nèi)應(yīng)用程序區(qū),再次進(jìn)行代碼一致性驗(yàn)證;如果連續(xù)3次 驗(yàn)證失敗,向數(shù)據(jù)中心發(fā)送待檢修的狀態(tài)報(bào)文,進(jìn)入步驟(e)。
【文檔編號(hào)】H04L29/08GK103530146SQ201310420686
【公開(kāi)日】2014年1月22日 申請(qǐng)日期:2013年9月16日 優(yōu)先權(quán)日:2013年9月16日
【發(fā)明者】鄒式論, 陳奇志, 王倩, 鄧發(fā)均 申請(qǐng)人:成都交大光芒科技股份有限公司