專利名稱:一種遠(yuǎn)程在線監(jiān)控系統(tǒng)中設(shè)備自升級(jí)方法
技術(shù)領(lǐng)域:
本發(fā)明屬于電子無(wú)線通信領(lǐng)域,具體涉及一種遠(yuǎn)程在線監(jiān)控系統(tǒng)中設(shè)備自升級(jí)方法。
背景技術(shù):
隨著電子技術(shù)、計(jì)算機(jī)技術(shù)和通信技術(shù)的迅猛發(fā)展,嵌入式系統(tǒng)已經(jīng)廣泛應(yīng)用于工業(yè)、軍事、通信、信息家電等領(lǐng)域,但是面對(duì)新技術(shù)的不斷涌現(xiàn)和對(duì)系統(tǒng)功能、性能以及規(guī)模要求的不斷提高,開(kāi)發(fā)者必須能夠針對(duì)客戶的需求及時(shí)對(duì)系統(tǒng)進(jìn)行升級(jí)或維護(hù),以延長(zhǎng)系統(tǒng)使用周期,改善系統(tǒng)性能,增強(qiáng)系統(tǒng)適應(yīng)性。 傳統(tǒng)的嵌入式系統(tǒng)升級(jí)方式通常由維護(hù)人員到達(dá)設(shè)備現(xiàn)場(chǎng),開(kāi)箱重寫(xiě)或者更換FLASH存儲(chǔ)部件,當(dāng)設(shè)備數(shù)目龐大并且分布范圍廣泛時(shí),這種升級(jí)維護(hù)方式的工作量將非常大,而且耗費(fèi)的時(shí)間長(zhǎng)、成本高,甚至?xí)绊懙接脩舻恼J褂?。近年?lái)通過(guò)以太網(wǎng)的方法,能較好地解決批量升級(jí)的問(wèn)題,但對(duì)于野外偏遠(yuǎn)地區(qū)或海上等有線網(wǎng)絡(luò)無(wú)法到達(dá)的地方,此方法也難以實(shí)現(xiàn)。
發(fā)明內(nèi)容
針對(duì)現(xiàn)有技術(shù)中存在的上述問(wèn)題,本發(fā)明的目的在于設(shè)計(jì)提供一種遠(yuǎn)程在線監(jiān)控系統(tǒng)中設(shè)備自升級(jí)方法的技術(shù)方案,數(shù)據(jù)傳輸準(zhǔn)確、可靠、連續(xù)、穩(wěn)定,很好地解決了數(shù)量龐大且分布較廣的終端設(shè)備的升級(jí)和維護(hù)問(wèn)題。所述的一種遠(yuǎn)程在線監(jiān)控系統(tǒng)中設(shè)備自升級(jí)方法,其特征在于是基于GPRS無(wú)線通信網(wǎng)絡(luò),由終端表具、數(shù)據(jù)采集器及后臺(tái)服務(wù)器組成的遠(yuǎn)程在線監(jiān)控系統(tǒng),終端表具、數(shù)據(jù)采集器自主執(zhí)行程序遠(yuǎn)程在線升級(jí)、維護(hù),包括以下步驟
(A)上傳待升級(jí)的程序和版本信息;
(B)數(shù)據(jù)采集器查詢后臺(tái)服務(wù)器中自身和終端表具的新版本程序信息;
(Bi)當(dāng)數(shù)據(jù)采集器查詢到自身新版本程序時(shí),數(shù)據(jù)采集器進(jìn)入自升級(jí)程序流程; (B2)當(dāng)數(shù)據(jù)采集器查詢到終端表具新版本程序時(shí),數(shù)據(jù)采集器進(jìn)入升級(jí)終端表具程序流程;
(B3)當(dāng)數(shù)據(jù)采集器沒(méi)有查詢到自身和終端表具的新版本程序信息,結(jié)束更新程序操作,進(jìn)入正常工作模式。所述的一種遠(yuǎn)程在線監(jiān)控系統(tǒng)中設(shè)備自升級(jí)方法,其特征在于所述步驟(A)上傳待升級(jí)的程序和版本信息當(dāng)遠(yuǎn)程在線監(jiān)控系統(tǒng)需要升級(jí)終端表具、數(shù)據(jù)采集器內(nèi)的程序時(shí),管理人員把待升級(jí)的程序和版本信息上傳到后臺(tái)服務(wù)器中;
后臺(tái)服務(wù)器把待升級(jí)程序轉(zhuǎn)成下載文件,當(dāng)讀到存儲(chǔ)地址連續(xù)的程序塊時(shí),將此程序塊數(shù)據(jù)打包成256個(gè)字節(jié)以內(nèi)的數(shù)據(jù)包;若程序塊數(shù)據(jù)超過(guò)256個(gè)字節(jié)或讀到下一個(gè)存儲(chǔ)地址連續(xù)的程序塊時(shí),則另起一個(gè)新的數(shù)據(jù)包。所述的一種遠(yuǎn)程在線監(jiān)控系統(tǒng)中設(shè)備自升級(jí)方法,其特征在于所述步驟(B)數(shù)據(jù)采集器查詢后臺(tái)服務(wù)器中自身和終端表具的新版本程序信息數(shù)據(jù)采集器定時(shí)通過(guò)GPRS在線服務(wù),采用FTP傳輸協(xié)議登陸后臺(tái)服務(wù)器,查詢是否有終端表具、數(shù)據(jù)采集器的新版本程序發(fā)布、待更新;
后臺(tái)服務(wù)器管理終端表具和數(shù)據(jù)采集器的新程序文件及版本信息文件,當(dāng)有數(shù)據(jù)采集器主動(dòng)獲取新程序文件或版本信息文件時(shí),后臺(tái)服務(wù)器自動(dòng)應(yīng)答;
在終端表具、數(shù)據(jù)采集器新版本程序需要升級(jí)時(shí),也包括先向后臺(tái)服務(wù)器發(fā)送升級(jí)請(qǐng)求命令,在獲得后臺(tái)服務(wù)器的確認(rèn)應(yīng)答后才可執(zhí)行升級(jí)操作的情況。所述的一種遠(yuǎn)程在線監(jiān)控系統(tǒng)中設(shè)備自升級(jí)方法,其特征在于所述步驟(Bi)當(dāng)數(shù)據(jù)采集器查詢到自身新版本程序時(shí),數(shù)據(jù)采集器進(jìn)入自升級(jí)程序流程下載數(shù)據(jù)采集器新版本程序且校驗(yàn)正確后,寫(xiě)入新開(kāi)存儲(chǔ)區(qū),舊版本程序不破壞;待數(shù)據(jù)采集器新版本程序完整地下載、編程后,更新數(shù)據(jù)采集器程序跳轉(zhuǎn)標(biāo)志,并自動(dòng)復(fù)位重啟;當(dāng)數(shù)據(jù)采集器重啟后, 引導(dǎo)程序讀取程序跳轉(zhuǎn)標(biāo)志,若為新版本標(biāo)識(shí),跳轉(zhuǎn)到新版本程序區(qū)開(kāi)始運(yùn)行,否則,運(yùn)行舊版本程序;
數(shù)據(jù)采集器從后臺(tái)服務(wù)器獲取設(shè)備升級(jí)文件時(shí),采用斷點(diǎn)續(xù)傳的方式,即后臺(tái)服務(wù)器先對(duì)原始的升級(jí)文件進(jìn)行分包、打包成下載文件,數(shù)據(jù)包采用“記錄號(hào)+起始地址+長(zhǎng)度+ 數(shù)據(jù)+校驗(yàn)碼”的幀格式;
記錄號(hào)一個(gè)完整的數(shù)據(jù)包為一個(gè)記錄號(hào),下一個(gè)數(shù)據(jù)包的記錄號(hào)自動(dòng)加1 ;
起始地址數(shù)據(jù)包數(shù)據(jù)編程的FLASH首地址;
長(zhǎng)度數(shù)據(jù)和校驗(yàn)碼的字節(jié)數(shù);
數(shù)據(jù)存儲(chǔ)地址連續(xù)的程序數(shù)據(jù),數(shù)據(jù)內(nèi)容長(zhǎng)度可變,但包總長(zhǎng)不超過(guò)256個(gè)字節(jié);
檢驗(yàn)嗎CRC循環(huán)冗余校驗(yàn)碼;
當(dāng)數(shù)據(jù)采集器在一定的時(shí)間內(nèi)沒(méi)有收到后臺(tái)服務(wù)器的應(yīng)答數(shù)據(jù),則重發(fā);若三次重發(fā)失敗,則將成功接收的數(shù)據(jù)包記錄號(hào)保存到EEPROM中,進(jìn)入斷點(diǎn)續(xù)傳流程。所述的一種遠(yuǎn)程在線監(jiān)控系統(tǒng)中設(shè)備自升級(jí)方法,其特征在于所述步驟(B2)當(dāng)數(shù)據(jù)采集器查詢到終端表具新版本程序時(shí),數(shù)據(jù)采集器進(jìn)入升級(jí)終端表具程序流程數(shù)據(jù)采集器下載完整終端表具程序文件且校驗(yàn)正確后,存入數(shù)據(jù)采集器臨時(shí)存儲(chǔ)區(qū);數(shù)據(jù)采集器給終端表具發(fā)送升級(jí)命令,終端表具收到命令后進(jìn)入自升級(jí)流程;終端表具接收新版本程序且校驗(yàn)正確后,寫(xiě)入新開(kāi)存儲(chǔ)區(qū),舊版本程序不破壞;待終端表具新版本程序完整地下載、編程后,給數(shù)據(jù)采集器應(yīng)答且更新自己的程序跳轉(zhuǎn)標(biāo)志,并自動(dòng)復(fù)位重啟;終端表具重啟后,引導(dǎo)程序讀取程序跳轉(zhuǎn)標(biāo)志,若為新版本標(biāo)識(shí),跳轉(zhuǎn)到新版本程序區(qū)開(kāi)始運(yùn)行,否則, 運(yùn)行舊版本程序;待數(shù)據(jù)采集器收到當(dāng)前終端表具程序成功升級(jí)的應(yīng)答后,按存儲(chǔ)的終端表具地址列表,更換表具地址,直到所有的終端表具升級(jí)完成;
數(shù)據(jù)采集器與終端表具是一對(duì)多關(guān)系,且工作在主從模式下,即數(shù)據(jù)采集器是主設(shè)備, 各個(gè)終端表具是從設(shè)備;終端表具通過(guò)數(shù)據(jù)包中的表具地址,判斷當(dāng)前收到數(shù)據(jù)包是否有效;
終端表具程序升級(jí)采用文件分包、組包機(jī)制、傳輸應(yīng)答機(jī)制,數(shù)據(jù)傳輸鏈路層采用“幀起始符+控制代碼+數(shù)據(jù)長(zhǎng)度+表具地址+功能代碼+數(shù)據(jù)域+校驗(yàn)碼+幀結(jié)束符”的通信協(xié)議包幀格式;
幀起始符表明一包有效的數(shù)據(jù)開(kāi)始接收處理,幀結(jié)束符表明一包有效的數(shù)據(jù)包結(jié)束接收處理;控制碼表明數(shù)據(jù)包含有以下信息主動(dòng)包還是應(yīng)答包,校驗(yàn)功能是否啟用,數(shù)據(jù)體加密功能是否啟用,數(shù)據(jù)傳輸結(jié)果成功還是失敗,多包時(shí)的幀號(hào); 數(shù)據(jù)長(zhǎng)度表明表具地址到幀結(jié)束符的字節(jié)數(shù);
表具地址表明當(dāng)前數(shù)據(jù)包是發(fā)給哪個(gè)終端表具,或當(dāng)前數(shù)據(jù)包是哪個(gè)終端表具發(fā)給數(shù)據(jù)采集器設(shè)備;
功能碼表明數(shù)據(jù)包含有以下信息是否有多包標(biāo)志,該數(shù)據(jù)包實(shí)現(xiàn)的命令功能; 數(shù)據(jù)域表明數(shù)據(jù)包承載的有效數(shù)據(jù),數(shù)據(jù)內(nèi)容長(zhǎng)度可變,但包總長(zhǎng)不超過(guò)256個(gè)字節(jié); 校驗(yàn)碼是計(jì)算“幀起始符”到“校驗(yàn)碼”前所有數(shù)據(jù)的CRC校驗(yàn)值或MD5校驗(yàn)值,校驗(yàn)值錯(cuò)誤,丟棄此包數(shù)據(jù)。所述的一種遠(yuǎn)程在線監(jiān)控系統(tǒng)中設(shè)備自升級(jí)方法,其特征在于所述步驟(B3)當(dāng)數(shù)據(jù)采集器沒(méi)有查詢到自身和終端表具的新版本程序信息,結(jié)束更新程序操作,進(jìn)入正常工作模式數(shù)據(jù)采集器在后臺(tái)服務(wù)器中沒(méi)有查詢到自身和終端表具的新版本程序,數(shù)據(jù)采集器立即結(jié)束當(dāng)前程序更新操作,恢復(fù)正常工作的運(yùn)行環(huán)境,啟動(dòng)工作模式下的各項(xiàng)任務(wù),等待升級(jí)事件的再次發(fā)生。所述的一種遠(yuǎn)程在線監(jiān)控系統(tǒng)中設(shè)備自升級(jí)方法,其特征在于所述步驟(A) (B) (Bi) (B2) (B3)中,出現(xiàn)異常情況,數(shù)據(jù)采集器、終端表具經(jīng)定時(shí)器超時(shí)判斷,結(jié)束升級(jí)操作,恢復(fù)正常工作,等待升級(jí)事件的再次發(fā)生;
在數(shù)據(jù)采集器、終端表具新版本程序升級(jí)過(guò)程中,出現(xiàn)異常錯(cuò)誤,也可通過(guò)后臺(tái)服務(wù)器給數(shù)據(jù)采集器發(fā)送相應(yīng)的命令,讓數(shù)據(jù)采集器、終端表具恢復(fù)運(yùn)行舊版本的程序。所述的一種遠(yuǎn)程在線監(jiān)控系統(tǒng)中設(shè)備自升級(jí)方法,其特征在于數(shù)據(jù)采集器、終端表具都采用雙備份工作應(yīng)用程序,即一個(gè)設(shè)備內(nèi)有新舊兩套程序,一套程序正常工作,另一套程序冗余備用,程序存儲(chǔ)空間劃分方法如下
把數(shù)據(jù)采集器、終端表具內(nèi)控制器的FLASH區(qū)域分成三個(gè)區(qū)塊,分別是引導(dǎo)程序BOOT 區(qū),應(yīng)用程序APPl區(qū),應(yīng)用程序APP2區(qū);三個(gè)存儲(chǔ)空間地址的劃分是從低地址到高地址,或是從高地址到地址。所述的一種遠(yuǎn)程在線監(jiān)控系統(tǒng)中設(shè)備自升級(jí)方法,其特征在于BOOT區(qū)為工作程序引導(dǎo)區(qū),僅用于存放系統(tǒng)初始化和工作程序引導(dǎo)代碼;終端設(shè)備上電啟動(dòng)或復(fù)位時(shí),將控制器固化在FLASH最高地址處的中斷向量表中各中斷跳轉(zhuǎn)地址固定到唯一分配使用的 SRAM最低地址處,工作程序引導(dǎo)代碼讀取、判斷存儲(chǔ)在EEPROM中程序跳轉(zhuǎn)標(biāo)志,將APPl區(qū)或APP2區(qū)的應(yīng)用程序中斷向量表映射到SRAM最低地址處,完成系統(tǒng)初始化,跳轉(zhuǎn)運(yùn)行APPl 區(qū)或APP2區(qū)的應(yīng)用程序。所述的一種遠(yuǎn)程在線監(jiān)控系統(tǒng)中設(shè)備自升級(jí)方法,其特征在于APPl區(qū)和APP2區(qū)是應(yīng)用程序存儲(chǔ)區(qū),大小相同,作為工作程序和備份程序交替使用;若當(dāng)前運(yùn)行的應(yīng)用程序在APPl區(qū),則程序升級(jí)時(shí)把升級(jí)程序保存到APP2區(qū),否則保存到APPl區(qū);當(dāng)設(shè)備接收到整數(shù)頁(yè)的程序數(shù)據(jù)后,通過(guò)IAP的方式對(duì)FLASH進(jìn)行編程;每次新版應(yīng)用程序升級(jí)完成后,必須修改、保存程序跳轉(zhuǎn)標(biāo)志與新版本應(yīng)用程序所處區(qū)間一致。本發(fā)明所述的一種遠(yuǎn)程在線監(jiān)控系統(tǒng)中設(shè)備自升級(jí)方法,能利用GPRS無(wú)線通信網(wǎng)絡(luò)無(wú)需現(xiàn)場(chǎng)布線,快捷登錄,實(shí)時(shí)在線和高速傳輸?shù)奶攸c(diǎn),在移動(dòng)公網(wǎng)覆蓋的范圍內(nèi),數(shù)據(jù)傳輸準(zhǔn)確、可靠、連續(xù)、穩(wěn)定,很好地解決了數(shù)量龐大且分布較廣的終端設(shè)備的升級(jí)和維護(hù)問(wèn)題,推進(jìn)了工業(yè)自動(dòng)化的發(fā)展方向。
圖1為本發(fā)明的結(jié)構(gòu)示意圖2為終端設(shè)備引導(dǎo)程序(Bootloader)工作流程圖; 圖3為數(shù)據(jù)采集器從后臺(tái)服務(wù)器上查詢新程序版本流程圖; 圖4為數(shù)據(jù)采集器從后臺(tái)服務(wù)器上獲取升級(jí)程序流程圖; 圖5為斷點(diǎn)續(xù)傳流程圖; 圖6為終端表具程序更新流程圖。
具體實(shí)施例方式現(xiàn)結(jié)合說(shuō)明書(shū)附圖,詳細(xì)說(shuō)明本發(fā)明的
具體實(shí)施例方式
如圖1所示,該遠(yuǎn)程在線監(jiān)控系統(tǒng)中設(shè)備自升級(jí)方法,是基于GPRS無(wú)線通信網(wǎng)絡(luò),由終端表具1、數(shù)據(jù)采集器2及后臺(tái)服務(wù)器3組成的遠(yuǎn)程在線監(jiān)控系統(tǒng),終端表具1、數(shù)據(jù)采集器 2自主執(zhí)行程序遠(yuǎn)程在線升級(jí)、維護(hù),包括以下步驟
1)當(dāng)遠(yuǎn)程在線監(jiān)控系統(tǒng)需要升級(jí)終端表具1、數(shù)據(jù)采集器2內(nèi)的程序時(shí),管理人員把待升級(jí)的程序和版本信息上傳到后臺(tái)服務(wù)器3中;
2)數(shù)據(jù)采集器2定時(shí)通過(guò)GPRS在線服務(wù),采用FTP傳輸協(xié)議登陸后臺(tái)服務(wù)器3,查詢是否有終端表具1、數(shù)據(jù)采集器2的新版本程序發(fā)布、待更新;
3)當(dāng)數(shù)據(jù)采集器2在后臺(tái)服務(wù)器3中查詢到自身新版本程序,數(shù)據(jù)采集器2進(jìn)入自升級(jí)流程下載數(shù)據(jù)采集器2新版本程序且校驗(yàn)正確后,寫(xiě)入新開(kāi)存儲(chǔ)區(qū),舊版本程序不破壞;待數(shù)據(jù)采集器2新版本程序完整地下載、編程后,更新數(shù)據(jù)采集器2程序跳轉(zhuǎn)標(biāo)志,并自動(dòng)復(fù)位重啟;當(dāng)數(shù)據(jù)采集器2重啟后,引導(dǎo)程序讀取程序跳轉(zhuǎn)標(biāo)志,若為新版本標(biāo)識(shí),跳轉(zhuǎn)到新版本程序區(qū)開(kāi)始運(yùn)行,否則,運(yùn)行舊版本程序;
4)當(dāng)數(shù)據(jù)采集器2在后臺(tái)服務(wù)器3中查詢到終端表具1新版本程序,數(shù)據(jù)采集器2進(jìn)入升級(jí)終端表具1程序流程當(dāng)數(shù)據(jù)采集器2下載完整終端表具1程序文件且校驗(yàn)正確后,存入數(shù)據(jù)采集器2臨時(shí)存儲(chǔ)區(qū);數(shù)據(jù)采集器2給終端表具1發(fā)送升級(jí)命令,終端表具1 收到命令后進(jìn)入自升級(jí)流程;終端表具1接收新版本程序且校驗(yàn)正確后,寫(xiě)入新開(kāi)存儲(chǔ)區(qū), 舊版本程序不破壞;待終端表具1新版本程序完整地下載、編程后,給數(shù)據(jù)采集器2應(yīng)答且更新自己的程序跳轉(zhuǎn)標(biāo)志,并自動(dòng)復(fù)位重啟;終端表具1重啟后,引導(dǎo)程序讀取程序跳轉(zhuǎn)標(biāo)志,若為新版本標(biāo)識(shí),跳轉(zhuǎn)到新版本程序區(qū)開(kāi)始運(yùn)行,否則,運(yùn)行舊版本程序;待數(shù)據(jù)采集器 2收到當(dāng)前終端表具1程序成功升級(jí)的應(yīng)答后,按存儲(chǔ)的終端表具1地址列表,更換表具地址,直到所有的終端表具1升級(jí)完成;
5)當(dāng)數(shù)據(jù)采集器2在后臺(tái)服務(wù)器3中沒(méi)有查詢到數(shù)據(jù)采集器2、終端表具1新版本程序,數(shù)據(jù)采集器2立即結(jié)束當(dāng)前程序更新操作,進(jìn)入正常工作模式;
6)在上述過(guò)程中,出現(xiàn)異常情況,數(shù)據(jù)采集器2、終端表具1經(jīng)定時(shí)器超時(shí)判斷,結(jié)束升級(jí)操作,恢復(fù)正常工作,等待升級(jí)事件的再次發(fā)生;也可通過(guò)后臺(tái)服務(wù)器3給數(shù)據(jù)采集器2 發(fā)送相應(yīng)的命令,讓數(shù)據(jù)采集器2、終端表具1恢復(fù)運(yùn)行舊版本的程序。上面簡(jiǎn)要介紹了本發(fā)明實(shí)現(xiàn)終端設(shè)備自升級(jí)的方法,下面將詳細(xì)介紹應(yīng)用程序的升級(jí)原理及過(guò)程。為避免終端表具1和數(shù)據(jù)采集器2在程序升級(jí)過(guò)程中發(fā)生意外,出現(xiàn)系統(tǒng)崩潰的情況,系統(tǒng)采用程序雙備份工作原理,即一個(gè)設(shè)備內(nèi)有新舊兩套程序,一套程序正常工作, 另一套程序冗余備用;這樣就保證了新程序升級(jí)失敗時(shí),能夠自動(dòng)切換回老版本程序,繼續(xù)正常工作。其原理是把控制器(包括單片機(jī),ARM處理器)的FLASH區(qū)域依次分成三塊,分別是引導(dǎo)程序BOOT區(qū),應(yīng)用程序APPl區(qū),應(yīng)用程序APP2區(qū);三個(gè)存儲(chǔ)空間地址的劃分可以是從低地址到高地址,也可以是從高地址到地址。BOOT區(qū)為工作程序引導(dǎo)區(qū),僅用于存放系統(tǒng)初始化和工作程序引導(dǎo)代碼。終端設(shè)備上電啟動(dòng)或復(fù)位時(shí),必先啟動(dòng)引導(dǎo)程序,圖2是終端設(shè)備引導(dǎo)程序(Bootloader)工作流程圖,如圖2所示。首先進(jìn)入步驟201,將控制器內(nèi)固化在FLASH最高地址處32個(gè)字節(jié)的中斷向量表 (Vector Table)中各中斷跳轉(zhuǎn)地址固定到唯一分配使用的SRAM最低地址32個(gè)字節(jié)處,該 32字節(jié)SRAM空間作為應(yīng)用程序APPl (或APP2)中斷向量表的映射,不允許再次被控制器分配使用;完成初始化設(shè)備后,從EEPROM存儲(chǔ)器中讀取程序跳轉(zhuǎn)標(biāo)志,進(jìn)入步驟202。在步驟202中,判斷程序跳轉(zhuǎn)標(biāo)志值,若值是0x55,進(jìn)入步驟203 ;若值是OxAA,進(jìn)入步驟206 ;若是其他值,進(jìn)入步驟209。在步驟203中,將APPl區(qū)間程序中斷向量表映射至SRAM最低地址處后,進(jìn)入步驟 204。在步驟204中,獲取APPl區(qū)間程序入口地址,進(jìn)入步驟205。在步驟205中,跳轉(zhuǎn)執(zhí)行APPl區(qū)間程序。在步驟206中,將APP2區(qū)間程序中斷向量表映射至SRAM最低地址處后,進(jìn)入步驟 207。在步驟207中,獲取APP2區(qū)間程序入口地址,進(jìn)入步驟208。在步驟208中,跳轉(zhuǎn)執(zhí)行APP2區(qū)間代碼。在步驟209中,由于APPl區(qū)間和APP2區(qū)間都沒(méi)有可執(zhí)行程序,執(zhí)行等待串口下載程序,并進(jìn)入步驟210中,判斷程序是否下載完成。在步驟210中,若程序下載完成,更新程序跳轉(zhuǎn)標(biāo)志后結(jié)束;若程序沒(méi)有下載完成,返回步驟209中繼續(xù)執(zhí)行等待串口下載程序;若有下載異常情況,直接結(jié)束。APPl區(qū)和APP2區(qū)是應(yīng)用程序存儲(chǔ)區(qū),大小相同,作為工作程序和備份程序交替使用;應(yīng)用程序的編程是通過(guò)IAP方式實(shí)現(xiàn),設(shè)備FLASH數(shù)據(jù)編程的最小單位是頁(yè)(512個(gè)字節(jié)/頁(yè)),當(dāng)設(shè)備接收到的升級(jí)數(shù)據(jù)達(dá)到整數(shù)頁(yè)后進(jìn)行編程;例如,若當(dāng)前終端運(yùn)行的程序工作在APPl區(qū)間,則將新版本的程序下載、校驗(yàn)正確的條件下寫(xiě)入APP2區(qū)間,待新程序完整下載、成功編程后,更新程序跳轉(zhuǎn)標(biāo)志為APP2區(qū)中程序有效,最后設(shè)備重啟跳轉(zhuǎn)到APP2 區(qū)間程序運(yùn)行。此時(shí),APP2區(qū)間程序成為工作程序,APPl區(qū)間程序作為備用程序,作為下次升級(jí)程序的存放區(qū)。每次新版應(yīng)用程序升級(jí)完成后,都必須修改、保存程序跳轉(zhuǎn)標(biāo)志與新版本應(yīng)用程序所處區(qū)間一致,確保新版本應(yīng)用程序正常啟用;圖3、圖4、圖5、圖6將詳細(xì)描述終端表具1和數(shù)據(jù)采集器2中的應(yīng)用程序升級(jí)過(guò)程。首先,當(dāng)有終端表具1、數(shù)據(jù)采集器2的新程序需升級(jí)時(shí),管理人員將新程序拷貝到后臺(tái)服務(wù)器3,并按“記錄號(hào)+起始地址+長(zhǎng)度+數(shù)據(jù)+校驗(yàn)碼”的斷點(diǎn)續(xù)傳數(shù)據(jù)包幀格式生成下載文件;
記錄號(hào)一個(gè)完整的數(shù)據(jù)包為一個(gè)記錄號(hào),下一個(gè)數(shù)據(jù)包的記錄號(hào)自動(dòng)加1 ; 起始地址數(shù)據(jù)包數(shù)據(jù)編程的FLASH首地址; 長(zhǎng)度數(shù)據(jù)和校驗(yàn)碼的字節(jié)數(shù);
數(shù)據(jù)存儲(chǔ)地址連續(xù)的程序數(shù)據(jù),數(shù)據(jù)內(nèi)容長(zhǎng)度可變,但包總長(zhǎng)不超過(guò)256個(gè)字節(jié); 檢驗(yàn)碼CRC循環(huán)冗余校驗(yàn)碼。后臺(tái)服務(wù)器3生成下載文件時(shí),當(dāng)讀到存儲(chǔ)地址連續(xù)的程序塊時(shí),將此程序塊數(shù)據(jù)打包成256個(gè)字節(jié)以內(nèi)的數(shù)據(jù)包;若程序塊數(shù)據(jù)超過(guò)256個(gè)字節(jié)或讀到下一個(gè)存儲(chǔ)地址連續(xù)的程序塊時(shí),則另起一個(gè)新的數(shù)據(jù)包。其次,在版本信息日志(VER_L0G. TXT)增加新版本程序文件名和對(duì)應(yīng)的版本信息, 供數(shù)據(jù)采集器2下載,搜索。最后,后臺(tái)服務(wù)器3管理終端表具1和數(shù)據(jù)采集器2的新程序文件及版本信息文件,當(dāng)有數(shù)據(jù)采集器2主動(dòng)獲取新程序文件或版本信息文件時(shí),后臺(tái)服務(wù)器3自動(dòng)應(yīng)答;數(shù)據(jù)采集器2按照固定的周期,利用GPRS無(wú)線上網(wǎng)服務(wù)功能,執(zhí)行終端表具1、數(shù)據(jù)采集器2 新程序版本的搜索、比對(duì)、下載、升級(jí),該過(guò)程也包括先向后臺(tái)服務(wù)器3發(fā)送升級(jí)請(qǐng)求命令, 在獲得后臺(tái)服務(wù)器3的確認(rèn)應(yīng)答后才可執(zhí)行升級(jí)操作的情況。其工作流如圖3所示。在步驟301中,數(shù)據(jù)采集器2定時(shí)開(kāi)啟FTP服務(wù),進(jìn)入步驟302。在步驟302中,數(shù)據(jù)采集器2按照指定地址(事先配置好的存儲(chǔ)在數(shù)據(jù)采集器2中的IP地址、PORT端口號(hào))登錄后臺(tái)服務(wù)器3,下載版本信息日志文件,進(jìn)入步驟303。在步驟303中,在版本信息日志文件中,查詢是否有新程序版本發(fā)布、需更新;若有,進(jìn)入步驟304 ;否則,進(jìn)入步驟307。在步驟304中,數(shù)據(jù)采集器2下載新版本程序后,進(jìn)入步驟305。在步驟305中,數(shù)據(jù)采集器2執(zhí)行設(shè)備程序升級(jí)后,進(jìn)入步驟306。在步驟306中,終端設(shè)備自動(dòng)復(fù)位,系統(tǒng)重啟,結(jié)束。在步驟307中,數(shù)據(jù)采集器2退出登錄,關(guān)閉FTP服務(wù),進(jìn)入308。在步驟308中,數(shù)據(jù)采集器2執(zhí)行應(yīng)用程序,恢復(fù)正常工作,結(jié)束。在上述步驟305中,執(zhí)行程序升級(jí)的設(shè)備分?jǐn)?shù)據(jù)采集器2和終端表具1兩種情況, 所以需要分開(kāi)來(lái)具體描述,下面就數(shù)據(jù)采集器2和終端表具1各自的升級(jí)特點(diǎn)詳細(xì)說(shuō)明。在執(zhí)行數(shù)據(jù)采集器2自升級(jí)操作時(shí),先從片內(nèi)的EEPROM中讀取升級(jí)配置,包括程序跳轉(zhuǎn)標(biāo)志、程序數(shù)據(jù)包記錄號(hào)等。若程序跳轉(zhuǎn)標(biāo)志值等于0x55,表明當(dāng)前應(yīng)用程序APPl 運(yùn)行,應(yīng)升級(jí)APP2區(qū)間程序;若程序跳轉(zhuǎn)標(biāo)志值等于OxAA,表明當(dāng)前應(yīng)用程序APP2運(yùn)行, 應(yīng)升級(jí)APPl區(qū)間程序;其他值時(shí),異常報(bào)警。若當(dāng)前是初次升級(jí),則程序數(shù)據(jù)包記錄號(hào)是默認(rèn)值0 ;若當(dāng)前是續(xù)傳升級(jí),則程序數(shù)據(jù)包記錄號(hào)是上次升級(jí)已獲取到的最后一個(gè)數(shù)據(jù)包記錄號(hào),由此生成升級(jí)命令包。工作流程如圖4所示。在步驟401中,數(shù)據(jù)采集器2發(fā)送APPl (APP2)區(qū)間程序升級(jí)命令,該命令中包含升級(jí)程序文件名稱及程序數(shù)據(jù)包記錄號(hào),開(kāi)啟接收應(yīng)答超時(shí)定時(shí)器,進(jìn)入步驟402。在步驟402中,數(shù)據(jù)采集器2等待后臺(tái)服務(wù)器3應(yīng)答超時(shí),進(jìn)入步驟403,否則,進(jìn)入步驟406。在步驟403中,數(shù)據(jù)采集器2重發(fā)命令包,進(jìn)入步驟404。
在步驟404中,若命令包重發(fā)次數(shù)沒(méi)有超過(guò)3次,數(shù)據(jù)采集器2開(kāi)啟接收應(yīng)答超時(shí)定時(shí)器,繼續(xù)等待后臺(tái)服務(wù)器3應(yīng)答,進(jìn)入步驟402 ;否則,進(jìn)入步驟405。在步驟405中,數(shù)據(jù)采集器2進(jìn)入斷點(diǎn)續(xù)傳流程。在步驟406中,數(shù)據(jù)采集器2接收到APPl (APP2)區(qū)間程序升級(jí)數(shù)據(jù)包,且校驗(yàn)正確后,進(jìn)入步驟407。在步驟407中,判斷數(shù)據(jù)包記錄號(hào)是否是期望接收記錄號(hào)包,若是,進(jìn)入步驟408 ; 否則,進(jìn)入步驟413。在步驟408中,數(shù)據(jù)采集器2保存APPl (APP2)區(qū)升級(jí)程序數(shù)據(jù)包,且更新EEPROM 中程序數(shù)據(jù)包記錄號(hào),進(jìn)入步驟409。在步驟409中,數(shù)據(jù)采集器2判斷是否升級(jí)數(shù)據(jù)接受結(jié)束,程序文件已經(jīng)完整下載、編程,若是,進(jìn)入步驟410 ;否則,進(jìn)入步驟412。在步驟410中,數(shù)據(jù)采集器2更新程序跳轉(zhuǎn)標(biāo)志值,升級(jí)數(shù)據(jù)包記錄號(hào)清零存儲(chǔ)到 EEI3ROM中,進(jìn)入步驟411。在步驟411中,數(shù)據(jù)采集器2自動(dòng)復(fù)位重啟,結(jié)束。在步驟412中,期望接收數(shù)據(jù)包記錄號(hào)自動(dòng)加1后,進(jìn)入步驟413。在步驟413中,獲取期望接收數(shù)據(jù)包記錄號(hào),再次進(jìn)入步驟401。在上述步驟405中,當(dāng)數(shù)據(jù)采集器2在一定時(shí)間內(nèi)沒(méi)有收到后臺(tái)服務(wù)器3的應(yīng)答數(shù)據(jù),則重發(fā)獲取數(shù)據(jù)包命令;若數(shù)據(jù)采集器2連續(xù)3次沒(méi)有成功接收到后臺(tái)服務(wù)器3的應(yīng)答包,則將成功接收的數(shù)據(jù)包記錄號(hào)保存到EEPROM中;數(shù)據(jù)采集器2停止繼續(xù)升級(jí)操作,而進(jìn)入斷點(diǎn)續(xù)傳流程,等待網(wǎng)絡(luò)鏈路恢復(fù)或升級(jí)事件再次發(fā)生。其工作流程如圖5所示。在步驟501中,數(shù)據(jù)采集器2關(guān)閉超時(shí)判斷定時(shí)器,進(jìn)入步驟502。在步驟502中,數(shù)據(jù)采集器2獲取升級(jí)程序存儲(chǔ)區(qū)地址,若獲取成功,進(jìn)入步驟 503 ;否則,進(jìn)入步驟504。在步驟503中,數(shù)據(jù)采集器2獲取上次升級(jí)數(shù)據(jù)包失敗記錄號(hào),若獲取成功,進(jìn)入步驟505 ;否則,進(jìn)入步驟504。在步驟504中,數(shù)據(jù)采集器2初始化升級(jí)配置信息,重新開(kāi)始升級(jí)。在步驟505中,數(shù)據(jù)采集器2發(fā)送獲取該記錄號(hào)數(shù)據(jù)包命令,并開(kāi)啟超時(shí)定時(shí)器。在執(zhí)行終端表具1的升級(jí)操作時(shí),采用類(lèi)似數(shù)據(jù)采集器2自升級(jí)的方式,數(shù)據(jù)采集器2先將終端表具1的升級(jí)文件(APP1和APP2)從后臺(tái)服務(wù)器3完整下載并存儲(chǔ)在數(shù)據(jù)采集器2的臨時(shí)緩存中。數(shù)據(jù)采集器2上掛有多個(gè)終端表具1,工作在主從模式下,即數(shù)據(jù)采集器2是主設(shè)備,各個(gè)終端表具1是從設(shè)備。任何數(shù)據(jù)的交互,都必須由數(shù)據(jù)采集器2發(fā)起, 終端表具1成功接收后應(yīng)答。終端表具1通過(guò)數(shù)據(jù)包中的表具地址,確認(rèn)當(dāng)前數(shù)據(jù)包是否有效,無(wú)效數(shù)據(jù)包立即丟棄,不做任何處理。只有表具地址唯一對(duì)應(yīng)的終端表具1才做升級(jí)操作。數(shù)據(jù)采集器2根據(jù)終端表具1地址列表,逐個(gè)更新終端表具1的程序。由于各個(gè)終端表具1升級(jí)的次數(shù)記錄不同,故在逐個(gè)更新設(shè)備程序時(shí),必須先判斷設(shè)備的升級(jí)程序區(qū)間。 在升級(jí)各終端表具1時(shí),采用文件分包、組包機(jī)制、傳輸應(yīng)答機(jī)制,數(shù)據(jù)傳輸鏈路層采用“幀起始符+控制代碼+數(shù)據(jù)長(zhǎng)度+表具地址+功能代碼+數(shù)據(jù)域+校驗(yàn)碼+幀結(jié)束符”的通信協(xié)議包幀格式,一應(yīng)一答。幀起始符表明一包有效的數(shù)據(jù)開(kāi)始接收處理,幀結(jié)束符表明一包有效的數(shù)據(jù)包結(jié)束接收處理;
控制碼表明數(shù)據(jù)包含有以下信息主動(dòng)包還是應(yīng)答包,校驗(yàn)功能是否啟用,數(shù)據(jù)體加密功能是否啟用,數(shù)據(jù)傳輸結(jié)果成功還是失敗,多包時(shí)的幀號(hào); 數(shù)據(jù)長(zhǎng)度表明表具地址到幀結(jié)束符的字節(jié)數(shù);
表具地址表明當(dāng)前數(shù)據(jù)包是發(fā)給哪個(gè)終端表具1,或當(dāng)前數(shù)據(jù)包是哪個(gè)終端表具1發(fā)給數(shù)據(jù)采集器2設(shè)備;
功能碼表明數(shù)據(jù)包含有以下信息是否有多包標(biāo)志,該數(shù)據(jù)包實(shí)現(xiàn)的命令功能; 數(shù)據(jù)域表明數(shù)據(jù)包承載的有效數(shù)據(jù),數(shù)據(jù)內(nèi)容長(zhǎng)度可變,但包總長(zhǎng)不超過(guò)256個(gè)字節(jié); 校驗(yàn)碼是計(jì)算“幀起始符”到“校驗(yàn)碼”前所有數(shù)據(jù)的CRC校驗(yàn)值或MD5校驗(yàn)值,校驗(yàn)值錯(cuò)誤,丟棄此包數(shù)據(jù)。升級(jí)流程如圖6所示。在步驟601中,數(shù)據(jù)采集器2查詢終端表具1程序版本信息,需要升級(jí)時(shí)進(jìn)入步驟 602。在步驟602中,終端表具1接收到數(shù)據(jù)采集器2的升級(jí)命令,進(jìn)入步驟603,否則, 終端表具1照常工作。在步驟603中,終端表具1判斷當(dāng)前程序跳轉(zhuǎn)標(biāo)志值,若值等于0x55,進(jìn)入步驟 604 ;若值等于OxAA,進(jìn)入步驟605 ;其他值時(shí),異常報(bào)警結(jié)束。在步驟604中,終端表具1生成升級(jí)終端表具1APP2區(qū)間程序文件名后,進(jìn)入步驟 606。在步驟605中,終端表具1生成升級(jí)終端表具IAPPl區(qū)間程序文件名后,進(jìn)入步驟 606。在步驟606中,終端表具1給數(shù)據(jù)采集器2發(fā)送APPl (或APP2)區(qū)間程序升級(jí)確認(rèn)應(yīng)答,進(jìn)入步驟607。在步驟607中,終端表具1執(zhí)行APPl (或APP2)區(qū)間程序升級(jí)操作,若升級(jí)完成進(jìn)入步驟609 ;若升級(jí)異常,結(jié)束;并超時(shí)檢測(cè)進(jìn)入步驟608。在步驟608中,終端表具1執(zhí)行超時(shí)檢測(cè),判斷程序升級(jí)是否超時(shí),若是,立刻結(jié)束;否則,返回步驟607繼續(xù)等待升級(jí)數(shù)據(jù)。在步驟609中,終端表具1校驗(yàn)APPl (或APP2)區(qū)新程序是否正確,若校驗(yàn)失敗, 立即結(jié)束;校驗(yàn)正確,進(jìn)入步驟610。在步驟610中,終端表具1更新程序跳轉(zhuǎn)標(biāo)志值,進(jìn)入步驟611。在步驟611中,終端表具1自動(dòng)復(fù)位重啟,結(jié)束。雖然通過(guò)參照本發(fā)明的某些優(yōu)選實(shí)施例,對(duì)本發(fā)明進(jìn)行了圖示和描述,但本領(lǐng)域的普通技術(shù)人員應(yīng)該明白,可以在形式上和細(xì)節(jié)上對(duì)其作各種改變,而不偏離本發(fā)明的精神和范圍。
權(quán)利要求
1.一種遠(yuǎn)程在線監(jiān)控系統(tǒng)中設(shè)備自升級(jí)方法,其特征在于是基于GPRS無(wú)線通信網(wǎng)絡(luò), 由終端表具(1)、數(shù)據(jù)采集器(2)及后臺(tái)服務(wù)器(3)組成的遠(yuǎn)程在線監(jiān)控系統(tǒng),終端表具 (1)、數(shù)據(jù)采集器(2)自主執(zhí)行程序遠(yuǎn)程在線升級(jí)、維護(hù),包括以下步驟(A)上傳待升級(jí)的程序和版本信息;(B)數(shù)據(jù)采集器(2)查詢后臺(tái)服務(wù)器(3)中自身和終端表具(1)的新版本程序信息; (Bi)當(dāng)數(shù)據(jù)采集器(2)查詢到自身新版本程序時(shí),數(shù)據(jù)采集器(2)進(jìn)入自升級(jí)程序流程;(B2)當(dāng)數(shù)據(jù)采集器(2)查詢到終端表具(1)新版本程序時(shí),數(shù)據(jù)采集器(2)進(jìn)入升級(jí)終端表具(1)程序流程;(B3)當(dāng)數(shù)據(jù)采集器(2)沒(méi)有查詢到自身和終端表具(1)的新版本程序信息,結(jié)束更新程序操作,進(jìn)入正常工作模式。
2.根據(jù)權(quán)利要求1所述的一種遠(yuǎn)程在線監(jiān)控系統(tǒng)中設(shè)備自升級(jí)方法,其特征在于所述步驟(A)上傳待升級(jí)的程序和版本信息當(dāng)遠(yuǎn)程在線監(jiān)控系統(tǒng)需要升級(jí)終端表具(1)、數(shù)據(jù)采集器(2)內(nèi)的程序時(shí),管理人員把待升級(jí)的程序和版本信息上傳到后臺(tái)服務(wù)器(3)中;后臺(tái)服務(wù)器(3)把待升級(jí)程序轉(zhuǎn)成下載文件,當(dāng)讀到存儲(chǔ)地址連續(xù)的程序塊時(shí),將此程序塊數(shù)據(jù)打包成256個(gè)字節(jié)以內(nèi)的數(shù)據(jù)包;若程序塊數(shù)據(jù)超過(guò)256個(gè)字節(jié)或讀到下一個(gè)存儲(chǔ)地址連續(xù)的程序塊時(shí),則另起一個(gè)新的數(shù)據(jù)包。
3.根據(jù)權(quán)利要求1所述的一種遠(yuǎn)程在線監(jiān)控系統(tǒng)中設(shè)備自升級(jí)方法,其特征在于所述步驟(B)數(shù)據(jù)采集器(2)查詢后臺(tái)服務(wù)器(3)中自身和終端表具(1)的新版本程序信息數(shù)據(jù)采集器(2)定時(shí)通過(guò)GPRS在線服務(wù),采用FTP傳輸協(xié)議登陸后臺(tái)服務(wù)器(3),查詢是否有終端表具(1)、數(shù)據(jù)采集器(2)的新版本程序發(fā)布、待更新;后臺(tái)服務(wù)器(3)管理終端表具(1)和數(shù)據(jù)采集器(2)的新程序文件及版本信息文件,當(dāng)有數(shù)據(jù)采集器(2)主動(dòng)獲取新程序文件或版本信息文件時(shí),后臺(tái)服務(wù)器(3)自動(dòng)應(yīng)答;在終端表具(1)、數(shù)據(jù)采集器(2)新版本程序需要升級(jí)時(shí),也包括先向后臺(tái)服務(wù)器(3) 發(fā)送升級(jí)請(qǐng)求命令,在獲得后臺(tái)服務(wù)器(3)的確認(rèn)應(yīng)答后才可執(zhí)行升級(jí)操作的情況。
4.根據(jù)權(quán)利要求1所述的一種遠(yuǎn)程在線監(jiān)控系統(tǒng)中設(shè)備自升級(jí)方法,其特征在于所述步驟(Bi)當(dāng)數(shù)據(jù)采集器(2)查詢到自身新版本程序時(shí),數(shù)據(jù)采集器(2)進(jìn)入自升級(jí)程序流程下載數(shù)據(jù)采集器(2)新版本程序且校驗(yàn)正確后,寫(xiě)入新開(kāi)存儲(chǔ)區(qū),舊版本程序不破壞; 待數(shù)據(jù)采集器(2 )新版本程序完整地下載、編程后,更新數(shù)據(jù)采集器(2 )程序跳轉(zhuǎn)標(biāo)志,并自動(dòng)復(fù)位重啟;當(dāng)數(shù)據(jù)采集器(2)重啟后,引導(dǎo)程序讀取程序跳轉(zhuǎn)標(biāo)志,若為新版本標(biāo)識(shí), 跳轉(zhuǎn)到新版本程序區(qū)開(kāi)始運(yùn)行,否則,運(yùn)行舊版本程序;數(shù)據(jù)采集器(2)從后臺(tái)服務(wù)器(3)獲取設(shè)備升級(jí)文件時(shí),采用斷點(diǎn)續(xù)傳的方式,即后臺(tái)服務(wù)器(3)先對(duì)原始的升級(jí)文件進(jìn)行分包、打包成下載文件,數(shù)據(jù)包采用“記錄號(hào)+起始地址+長(zhǎng)度+數(shù)據(jù)+校驗(yàn)碼”的幀格式;記錄號(hào)一個(gè)完整的數(shù)據(jù)包為一個(gè)記錄號(hào),下一個(gè)數(shù)據(jù)包的記錄號(hào)自動(dòng)加1 ; 起始地址數(shù)據(jù)包數(shù)據(jù)編程的FLASH首地址; 長(zhǎng)度數(shù)據(jù)和校驗(yàn)碼的字節(jié)數(shù);數(shù)據(jù)存儲(chǔ)地址連續(xù)的程序數(shù)據(jù),數(shù)據(jù)內(nèi)容長(zhǎng)度可變,但包總長(zhǎng)不超過(guò)256個(gè)字節(jié); 檢驗(yàn)碼CRC循環(huán)冗余校驗(yàn)碼;當(dāng)數(shù)據(jù)采集器(2)在一定的時(shí)間內(nèi)沒(méi)有收到后臺(tái)服務(wù)器(3)的應(yīng)答數(shù)據(jù),則重發(fā);若三次重發(fā)失敗,則將成功接收的數(shù)據(jù)包記錄號(hào)保存到EEPROM中,進(jìn)入斷點(diǎn)續(xù)傳流程。
5.根據(jù)權(quán)利要求1所述的一種遠(yuǎn)程在線監(jiān)控系統(tǒng)中設(shè)備自升級(jí)方法,其特征在于所述步驟(B2)當(dāng)數(shù)據(jù)采集器(2)查詢到終端表具(1)新版本程序時(shí),數(shù)據(jù)采集器(2)進(jìn)入升級(jí)終端表具(1)程序流程數(shù)據(jù)采集器(2 )下載完整終端表具(1)程序文件且校驗(yàn)正確后,存入數(shù)據(jù)采集器(2 )臨時(shí)存儲(chǔ)區(qū);數(shù)據(jù)采集器(2 )給終端表具(1)發(fā)送升級(jí)命令,終端表具(1) 收到命令后進(jìn)入自升級(jí)流程;終端表具(1)接收新版本程序且校驗(yàn)正確后,寫(xiě)入新開(kāi)存儲(chǔ)區(qū),舊版本程序不破壞;待終端表具(1)新版本程序完整地下載、編程后,給數(shù)據(jù)采集器(2) 應(yīng)答且更新自己的程序跳轉(zhuǎn)標(biāo)志,并自動(dòng)復(fù)位重啟;終端表具(1)重啟后,引導(dǎo)程序讀取程序跳轉(zhuǎn)標(biāo)志,若為新版本標(biāo)識(shí),跳轉(zhuǎn)到新版本程序區(qū)開(kāi)始運(yùn)行,否則,運(yùn)行舊版本程序;待數(shù)據(jù)采集器(2 )收到當(dāng)前終端表具(1)程序成功升級(jí)的應(yīng)答后,按存儲(chǔ)的終端表具(1)地址列表,更換表具地址,直到所有的終端表具(1)升級(jí)完成;數(shù)據(jù)采集器(2)與終端表具(1)是一對(duì)多關(guān)系,且工作在主從模式下,即數(shù)據(jù)采集器 (2 )是主設(shè)備,各個(gè)終端表具(1)是從設(shè)備;終端表具(1)通過(guò)數(shù)據(jù)包中的表具地址,判斷當(dāng)前收到數(shù)據(jù)包是否有效;終端表具(1)程序升級(jí)采用文件分包、組包機(jī)制、傳輸應(yīng)答機(jī)制,數(shù)據(jù)傳輸鏈路層采用 “幀起始符+控制代碼+數(shù)據(jù)長(zhǎng)度+表具地址+功能代碼+數(shù)據(jù)域+校驗(yàn)碼+幀結(jié)束符”的通信協(xié)議包幀格式;幀起始符表明一包有效的數(shù)據(jù)開(kāi)始接收處理,幀結(jié)束符表明一包有效的數(shù)據(jù)包結(jié)束接收處理;控制碼表明數(shù)據(jù)包含有以下信息主動(dòng)包還是應(yīng)答包,校驗(yàn)功能是否啟用,數(shù)據(jù)體加密功能是否啟用,數(shù)據(jù)傳輸結(jié)果成功還是失敗,多包時(shí)的幀號(hào);數(shù)據(jù)長(zhǎng)度表明表具地址到幀結(jié)束符的字節(jié)數(shù);表具地址表明當(dāng)前數(shù)據(jù)包是發(fā)給哪個(gè)終端表具(1),或當(dāng)前數(shù)據(jù)包是哪個(gè)終端表具 (1)發(fā)給數(shù)據(jù)采集器(2)設(shè)備;功能碼表明數(shù)據(jù)包含有以下信息是否有多包標(biāo)志,該數(shù)據(jù)包實(shí)現(xiàn)的命令功能;數(shù)據(jù)域表明數(shù)據(jù)包承載的有效數(shù)據(jù),數(shù)據(jù)內(nèi)容長(zhǎng)度可變,但包總長(zhǎng)不超過(guò)256個(gè)字節(jié);校驗(yàn)碼是計(jì)算“幀起始符”到“校驗(yàn)碼”前所有數(shù)據(jù)的CRC校驗(yàn)值或MD5校驗(yàn)值,校驗(yàn)值錯(cuò)誤,丟棄此包數(shù)據(jù)。
6.根據(jù)權(quán)利要求1所述的一種遠(yuǎn)程在線監(jiān)控系統(tǒng)中設(shè)備自升級(jí)方法,其特征在于所述步驟(B3)當(dāng)數(shù)據(jù)采集器(2)沒(méi)有查詢到自身和終端表具(1)的新版本程序信息,結(jié)束更新程序操作,進(jìn)入正常工作模式數(shù)據(jù)采集器(2)在后臺(tái)服務(wù)器(3)中沒(méi)有查詢到自身和終端表具(1)的新版本程序,數(shù)據(jù)采集器(2)立即結(jié)束當(dāng)前程序更新操作,恢復(fù)正常工作的運(yùn)行環(huán)境,啟動(dòng)工作模式下的各項(xiàng)任務(wù),等待升級(jí)事件的再次發(fā)生。
7.根據(jù)權(quán)利要求1所述的一種遠(yuǎn)程在線監(jiān)控系統(tǒng)中設(shè)備自升級(jí)方法,其特征在于所述步驟(A) (B) (Bi) (B2) (B3)中,出現(xiàn)異常情況,數(shù)據(jù)采集器(2)、終端表具(1)經(jīng)定時(shí)器超時(shí)判斷,結(jié)束升級(jí)操作,恢復(fù)正常工作,等待升級(jí)事件的再次發(fā)生;在數(shù)據(jù)采集器(2)、終端表具(1)新版本程序升級(jí)過(guò)程中,出現(xiàn)異常錯(cuò)誤,也可通過(guò)后臺(tái)服務(wù)器(3 )給數(shù)據(jù)采集器(2 )發(fā)送相應(yīng)的命令,讓數(shù)據(jù)采集器(2 )、終端表具(1)恢復(fù)運(yùn)行舊版本的程序。
8.根據(jù)權(quán)利要求1所述的一種遠(yuǎn)程在線監(jiān)控系統(tǒng)中設(shè)備自升級(jí)方法,其特征在于數(shù)據(jù)采集器(2)、終端表具(1)都采用雙備份工作應(yīng)用程序,即一個(gè)設(shè)備內(nèi)有新舊兩套程序,一套程序正常工作,另一套程序冗余備用,程序存儲(chǔ)空間劃分方法如下把數(shù)據(jù)采集器(2)、終端表具(1)內(nèi)控制器的FLASH區(qū)域分成三個(gè)區(qū)塊,分別是引導(dǎo)程序BOOT區(qū),應(yīng)用程序APPl區(qū),應(yīng)用程序APP2區(qū);三個(gè)存儲(chǔ)空間地址的劃分是從低地址到高地址,或是從高地址到地址。
9.根據(jù)權(quán)利要求8所述的一種遠(yuǎn)程在線監(jiān)控系統(tǒng)中設(shè)備自升級(jí)方法,其特征在于BOOT 區(qū)為工作程序引導(dǎo)區(qū),僅用于存放系統(tǒng)初始化和工作程序引導(dǎo)代碼;終端設(shè)備上電啟動(dòng)或復(fù)位時(shí),將控制器固化在FLASH最高地址處的中斷向量表中各中斷跳轉(zhuǎn)地址固定到唯一分配使用的SRAM最低地址處,工作程序引導(dǎo)代碼讀取、判斷存儲(chǔ)在EEPROM中程序跳轉(zhuǎn)標(biāo)志, 將APPl區(qū)或APP2區(qū)的應(yīng)用程序中斷向量表映射到SRAM最低地址處,完成系統(tǒng)初始化,跳轉(zhuǎn)運(yùn)行APPl區(qū)或APP2區(qū)的應(yīng)用程序。
10.根據(jù)權(quán)利要求8所述的一種遠(yuǎn)程在線監(jiān)控系統(tǒng)中設(shè)備自升級(jí)方法,其特征在于 APPl區(qū)和APP2區(qū)是應(yīng)用程序存儲(chǔ)區(qū),大小相同,作為工作程序和備份程序交替使用;若當(dāng)前運(yùn)行的應(yīng)用程序在APPl區(qū),則程序升級(jí)時(shí)把升級(jí)程序保存到APP2區(qū),否則保存到APPl 區(qū);當(dāng)設(shè)備接收到整數(shù)頁(yè)的程序數(shù)據(jù)后,通過(guò)IAP的方式對(duì)FLASH進(jìn)行編程;每次新版應(yīng)用程序升級(jí)完成后,必須修改、保存程序跳轉(zhuǎn)標(biāo)志與新版本應(yīng)用程序所處區(qū)間一致。
全文摘要
本發(fā)明屬于電子無(wú)線通信領(lǐng)域,具體涉及一種遠(yuǎn)程在線監(jiān)控系統(tǒng)中設(shè)備自升級(jí)方法。其特征在于基于GPRS服務(wù),由終端表具、數(shù)據(jù)采集器及后臺(tái)服務(wù)器組成的遠(yuǎn)程在線監(jiān)控系統(tǒng),各終端設(shè)備執(zhí)行自升級(jí)、自維護(hù),主要步驟后臺(tái)服務(wù)器對(duì)應(yīng)用程序及版本信息管理;數(shù)據(jù)采集器定期查詢版本日志并下載新版本程序;數(shù)據(jù)采集器實(shí)現(xiàn)自升級(jí)及對(duì)終端表具升級(jí);新版本程序更新成功后跳轉(zhuǎn)執(zhí)行,但仍保留舊版本程序備用。本發(fā)明結(jié)合GPRS服務(wù)、存儲(chǔ)空間管理、文件分包機(jī)制、傳輸應(yīng)答機(jī)制、斷點(diǎn)續(xù)傳方式及IAP程序燒寫(xiě)方式,確保數(shù)據(jù)傳輸?shù)臏?zhǔn)確性和可靠性;在不影響用戶正常使用的情況下,快速高效地解決了數(shù)量龐大且分布較廣的設(shè)備升級(jí)和維護(hù)問(wèn)題。
文檔編號(hào)G06F9/445GK102314369SQ201110301049
公開(kāi)日2012年1月11日 申請(qǐng)日期2011年10月9日 優(yōu)先權(quán)日2011年10月9日
發(fā)明者康惠海, 石愛(ài)國(guó), 陳江南 申請(qǐng)人:杭州先鋒電子技術(shù)股份有限公司