專利名稱:一種遠(yuǎn)程軟件升級(jí)技術(shù)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及遠(yuǎn)程軟件升級(jí)技術(shù),尤其涉及一種利用把嵌入式引導(dǎo)區(qū) Bootloader(即引導(dǎo)程序)軟件升級(jí)技術(shù),與通用通訊協(xié)議載體結(jié)合起來的遠(yuǎn)程嵌入式軟 件升級(jí)方法。
背景技術(shù):
隨著電子技術(shù)、計(jì)算機(jī)技術(shù)和通信技術(shù)的迅猛發(fā)展,嵌入式系統(tǒng)已經(jīng)廣泛應(yīng)用于 工業(yè)、軍事、通信、信息家電等領(lǐng)域,得到了相當(dāng)?shù)耐茝V以及應(yīng)用,與此同時(shí),嵌入式系統(tǒng)所 帶來的升級(jí)以及維護(hù)等問題也同樣得到相當(dāng)?shù)闹匾?。但是現(xiàn)在在軟件升級(jí)這方面普遍存在 著以下幾個(gè)問題一、升級(jí)模式與信息系統(tǒng)的通訊協(xié)議并不兼容,或要求使用特定的硬件升級(jí)接口。二、信息系統(tǒng)軟件移植過程中的穩(wěn)定性問題,容易受到干擾,升級(jí)固件EMC電磁兼 容特性差;三、軟件移植的不能實(shí)現(xiàn)多路同時(shí)的遠(yuǎn)程升級(jí)。四、在一個(gè)通訊網(wǎng)絡(luò)內(nèi)不能根據(jù)客戶需求及現(xiàn)場(chǎng)環(huán)境實(shí)際情況的不同,實(shí)現(xiàn)定點(diǎn) 客戶端升級(jí)。
發(fā)明內(nèi)容
本發(fā)明目的在于解決軟件升級(jí)與標(biāo)準(zhǔn)協(xié)議接口的兼容問題,保證軟件升級(jí)的可靠 性,提供一種能合理穩(wěn)定地實(shí)現(xiàn)軟件移植,一對(duì)多或定點(diǎn)的遠(yuǎn)程嵌入式軟件升級(jí)方法。如圖1所示,在設(shè)計(jì)方法實(shí)施中,主要有兩個(gè)部分第一部分是標(biāo)準(zhǔn)協(xié)議通訊實(shí)現(xiàn) 主機(jī)軟件升級(jí)服務(wù)端對(duì)多個(gè)從機(jī)軟件升級(jí)客戶端,或?qū)χ付ǖ刂飞蠋讉€(gè)從機(jī)軟件升級(jí)客戶 端數(shù)據(jù)代碼的穩(wěn)定傳輸部分,第二部分是在從機(jī)軟件升級(jí)客戶端通過引導(dǎo)區(qū)Bootloader 技術(shù)實(shí)現(xiàn)在線升級(jí)部分。以下是關(guān)于怎樣把這兩個(gè)部分結(jié)合起來的詳細(xì)內(nèi)容。本發(fā)明的遠(yuǎn)程軟件升級(jí)技術(shù) 方法,其基本流程如圖2。第一階段為主機(jī)軟件升級(jí)服務(wù)端與從級(jí)機(jī)軟件升級(jí)客戶端的啟動(dòng)、運(yùn)行及檢測(cè)階 段,其包括①主機(jī)軟件升級(jí)服務(wù)端啟動(dòng),檢測(cè)是否需要升級(jí),如果需要升級(jí)則a.對(duì)于遠(yuǎn)程觸發(fā)升級(jí)方式的從機(jī)軟件升級(jí)客戶端,通過UART通信模塊接口向從 機(jī)發(fā)送升級(jí)請(qǐng)求,等待從機(jī)客戶端升級(jí)準(zhǔn)備就緒信號(hào);b.對(duì)于本地觸發(fā)升級(jí)方式的從機(jī)軟件升級(jí)客戶端,直接等待從機(jī)客戶端升級(jí)準(zhǔn)備 就緒信號(hào);如果不需要升級(jí)則執(zhí)行正常的通訊管理應(yīng)用程序;②從機(jī)軟件升級(jí)客戶端啟動(dòng),其嵌入式系統(tǒng)里面的FLASH區(qū)分為兩個(gè)區(qū)域,分 別是程序引導(dǎo)區(qū)與用戶應(yīng)用程序區(qū),而系統(tǒng)每次上電啟動(dòng)之后首先進(jìn)入程序引導(dǎo)區(qū),根據(jù)程序引導(dǎo)區(qū)里面的程序檢測(cè)應(yīng)用程序區(qū)是否已包含應(yīng)用程序,通訊串口是否送來的 Bootloader觸發(fā)信號(hào)、或本地Bootloader觸發(fā)信號(hào)是否觸發(fā)升級(jí)標(biāo)志來判斷是否需要進(jìn) 行在線升級(jí)a.如果收到Bootloader觸發(fā)信號(hào)表明需要進(jìn)行在線升級(jí),則是先把整個(gè)用戶應(yīng) 用程序區(qū)上的代碼擦除,接著使設(shè)備進(jìn)入等待狀態(tài),回復(fù)Bootloader準(zhǔn)備完畢信息,等待 主設(shè)備發(fā)送過來所需要升級(jí)的數(shù)據(jù)代碼;b.如果不需升級(jí)就直接進(jìn)入用戶應(yīng)用程序區(qū),執(zhí)行一般的應(yīng)用程序;在此后 若主機(jī)軟件升級(jí)服務(wù)端發(fā)來升級(jí)指令,則由應(yīng)用程序設(shè)置升級(jí)標(biāo)志,然后通過外部觸發(fā) RST復(fù)位使從機(jī)軟件升級(jí)客戶端重新啟動(dòng)進(jìn)入Bootloader或直接由應(yīng)用程序區(qū)跳轉(zhuǎn)到 Bootloader區(qū)執(zhí)行引導(dǎo)程序,引導(dǎo)程序重新判斷是否需要升級(jí),此后Bootloader執(zhí)行操作 與a相同。第二階段是升級(jí)程序傳輸階段,其包括①主機(jī)軟件升級(jí)服務(wù)端,分割需要下載的升級(jí)程序段為一個(gè)或數(shù)個(gè)短的待傳輸通 訊數(shù)據(jù)片段,通過UART串口異步通信模塊,經(jīng)由通訊接口將打包成標(biāo)準(zhǔn)通訊協(xié)議的數(shù)據(jù)幀 發(fā)送至從機(jī)軟件升級(jí)客戶端;②在從機(jī)軟件升級(jí)客戶端,利用標(biāo)準(zhǔn)通訊協(xié)議規(guī)則對(duì)接收到的數(shù)據(jù)幀進(jìn)行CRC、奇 偶校驗(yàn)等檢測(cè),判斷該升級(jí)數(shù)據(jù)包是否受到損壞;a.如校驗(yàn)正確則執(zhí)行數(shù)據(jù)幀操作,并返回應(yīng)答信號(hào),告示本幀數(shù)據(jù)傳輸成功,等待 下一幀傳送;b.如校驗(yàn)不正確,則按需要返回檢驗(yàn)錯(cuò)誤應(yīng)答信號(hào),從機(jī)軟件升級(jí)客戶端進(jìn)入等 待狀態(tài),等待主機(jī)軟件升級(jí)服務(wù)端再次發(fā)送本幀數(shù)據(jù)。③主機(jī)軟件升級(jí)服務(wù)端檢測(cè)從機(jī)軟件升級(jí)客戶端的應(yīng)答信號(hào),如本次通訊無問題 則準(zhǔn)備下一幀數(shù)據(jù)的傳送,如從機(jī)軟件升級(jí)客戶端回復(fù)有問題則重新發(fā)送本幀數(shù)據(jù),直至 主機(jī)軟件升級(jí)服務(wù)端與從機(jī)軟件升級(jí)客戶端完成整個(gè)升級(jí)/維護(hù)過程的數(shù)據(jù)傳輸工作;第三階段為執(zhí)行應(yīng)用程序階段升級(jí)程序全部通訊傳輸完畢后,主機(jī)軟件升級(jí)服 務(wù)端發(fā)送完成指令并回到正常應(yīng)用操作;從機(jī)軟件升級(jí)客戶端證實(shí)軟件升級(jí)完成后,清除 掉升級(jí)標(biāo)志,然后跳轉(zhuǎn)回Bootloader區(qū),或利用外部RST信號(hào)對(duì)自身進(jìn)行復(fù)位操作后進(jìn)入 Bootloader區(qū),然后通過引導(dǎo)區(qū)Bootloader進(jìn)入應(yīng)用程序區(qū),執(zhí)行升級(jí)后的應(yīng)用程序。本發(fā)明的遠(yuǎn)程軟件升級(jí)技術(shù)方法,優(yōu)點(diǎn)之一是利用通用協(xié)議的安全性保證,及分 割升級(jí)程序?yàn)閿?shù)個(gè)小的數(shù)據(jù)片斷分別傳送,使得升級(jí)過程抗干擾能力強(qiáng),且一幀數(shù)據(jù)受到 破壞可重復(fù)發(fā)送,可提高升級(jí)成功率;優(yōu)點(diǎn)之二是利用通用通訊協(xié)議載體的廣播協(xié)議可以 實(shí)現(xiàn)一個(gè)升級(jí)服務(wù)端對(duì)多個(gè)升級(jí)目標(biāo)客戶端穩(wěn)定的軟件在線升級(jí);優(yōu)點(diǎn)之三是可在通訊信 息中封裝接受升級(jí)的從機(jī)軟件升級(jí)客戶端的指定地址,利用通訊協(xié)議的點(diǎn)對(duì)點(diǎn)技術(shù)僅對(duì)整 個(gè)總線上指定地址的客戶端軟件實(shí)現(xiàn)升級(jí),而其它地址上的從機(jī)軟件升級(jí)客戶端對(duì)非本地 址的升級(jí)信息不做任何處理;優(yōu)點(diǎn)之四是可利用協(xié)議可改寫升級(jí)目標(biāo)的指定寄存器段的功 能完成對(duì)升級(jí)目標(biāo)客戶端局部程序段或參數(shù)的改寫。本發(fā)明的遠(yuǎn)程軟件升級(jí)技術(shù)方法,對(duì)通訊物理接口無限制,可以是有線的或無線 的,對(duì)標(biāo)準(zhǔn)協(xié)議類型無限制,可以是無線的GPRS,也可以是有線的ModBUS,ProfiBUS,工業(yè) 以太網(wǎng)TCP/IP等。通過用引導(dǎo)區(qū)Bootloader技術(shù)與其他通訊協(xié)議的結(jié)合,如GPRS,TCP/IP, PR0FIBAS等協(xié)議,聯(lián)合在一起實(shí)現(xiàn)遠(yuǎn)程軟件移植。通過信息系統(tǒng)的引導(dǎo)區(qū)Bootloader 固件協(xié)議集成,能合理穩(wěn)定地實(shí)現(xiàn)軟件移植、一對(duì)多或定點(diǎn)升級(jí),解決軟件升級(jí)與標(biāo)準(zhǔn)協(xié)議 接口的兼容問題。同時(shí)利用標(biāo)準(zhǔn)通訊協(xié)議自身的校驗(yàn)與重發(fā)功能,保證軟件升級(jí)的可靠性, 提高惡劣環(huán)境下升級(jí)成功率與抗干擾能力。
圖1為本發(fā)明遠(yuǎn)程軟件升級(jí)技術(shù)方法的運(yùn)行結(jié)構(gòu)圖;圖2為本發(fā)明遠(yuǎn)程軟件升級(jí)技術(shù)方法的軟件流程圖;圖3為實(shí)施例使用MODBUS協(xié)議的運(yùn)行結(jié)構(gòu)圖;圖4為升級(jí)軟件程序結(jié)構(gòu)圖。
具體實(shí)施例方式下面根據(jù)附圖對(duì)本發(fā)明的遠(yuǎn)程軟件升級(jí)方法作進(jìn)一步說明。以下為本方法集成使 用MODBUS協(xié)議的示例,協(xié)議的具體內(nèi)容如下首先是主機(jī)部分,它首先由一個(gè)包括固件軟件和待升級(jí)程序代碼的flash模塊 和 UART 模塊(Universal Asynchronous Receiver/Transmitter,通用異步接收 / 發(fā)送裝 置)組成。從機(jī)部分主要包括由一個(gè)包括引導(dǎo)程序區(qū)和用戶應(yīng)用空間組成的FLASH模塊。 主從機(jī)之間以UART異步方式通信,為實(shí)現(xiàn)對(duì)從機(jī)的遠(yuǎn)距離升級(jí)與維護(hù),采用工業(yè)級(jí)標(biāo)準(zhǔn)的 RS485電平標(biāo)準(zhǔn)。通過MODBUS協(xié)議部分實(shí)現(xiàn)一對(duì)多機(jī)的通訊,把需要的數(shù)據(jù)代碼從主機(jī)軟件升級(jí) 服務(wù)端向從機(jī)軟件升級(jí)客戶端進(jìn)行傳輸。本設(shè)計(jì)需要在用MODBUS里面自定義保留的功能 碼,如表格1所示的自定義保留功能碼的詳細(xì)解釋。
權(quán)利要求
1.一種新型的遠(yuǎn)程軟件升級(jí)方法,其包括三個(gè)階段第一階段為啟動(dòng)、運(yùn)行及檢測(cè)階 段,第二階段為升級(jí)程序傳輸階段,第三階段為執(zhí)行應(yīng)用程序階段;其特征在于,所述第二 階段包括①主機(jī)軟件升級(jí)服務(wù)端,分割需要下載的升級(jí)程序段為一個(gè)或數(shù)個(gè)短的待傳輸通訊數(shù) 據(jù)片段,通過UART串口異步通信模塊,經(jīng)由通訊接口將打包成標(biāo)準(zhǔn)通訊協(xié)議的數(shù)據(jù)幀發(fā)送 至從機(jī)軟件升級(jí)客戶端;②在從機(jī)軟件升級(jí)客戶端,利用標(biāo)準(zhǔn)通訊協(xié)議規(guī)則對(duì)接收到的數(shù)據(jù)幀進(jìn)行CRC、奇偶校 驗(yàn)等檢測(cè),判斷該升級(jí)數(shù)據(jù)包是否受到損壞;③主機(jī)軟件升級(jí)服務(wù)端檢測(cè)從機(jī)軟件升級(jí)客戶端的應(yīng)答信號(hào)。
2.根據(jù)權(quán)利要求1所述的遠(yuǎn)程軟件升級(jí)方法,其特征在于,所述的階段一包括①主機(jī)軟件升級(jí)服務(wù)端啟動(dòng),檢測(cè)是否需要升級(jí),如果需要升級(jí)則,對(duì)于遠(yuǎn)程觸發(fā)升級(jí) 方式的從機(jī)軟件升級(jí)客戶端,通過UART串口通信模塊接口向從機(jī)發(fā)送升級(jí)請(qǐng)求,等待從機(jī) 客戶端升級(jí)準(zhǔn)備就緒信號(hào);主機(jī)軟件升級(jí)服務(wù)端啟動(dòng),檢測(cè)是否需要升級(jí),如果需要升級(jí) 則對(duì)于遠(yuǎn)程觸發(fā)升級(jí)方式的從機(jī)軟件升級(jí)客戶端,通過UART通信模塊接口向從機(jī)發(fā)送升 級(jí)請(qǐng)求,等待從機(jī)客戶端升級(jí)準(zhǔn)備就緒信號(hào);對(duì)于本地觸發(fā)升級(jí)方式的從機(jī)軟件升級(jí)客戶 端,直接等待從機(jī)客戶端升級(jí)準(zhǔn)備就緒信號(hào);②從機(jī)軟件升級(jí)客戶端啟動(dòng),其嵌入式系統(tǒng)里面的FLASH區(qū)分為兩個(gè)區(qū)域,分別是程 序引導(dǎo)區(qū)與用戶應(yīng)用程序區(qū),而系統(tǒng)每次上電啟動(dòng)之后首先進(jìn)入程序引導(dǎo)區(qū),根據(jù)程序引 導(dǎo)區(qū)里面的程序檢測(cè)應(yīng)用程序區(qū)是否已包含應(yīng)用程序,通訊串口是否送來的Bootloader 觸發(fā)信號(hào)、或本地Bootloader觸發(fā)信號(hào)是否觸發(fā)升級(jí)標(biāo)志來判斷是否需要進(jìn)行在線升級(jí) a.如果收到Bootloader觸發(fā)信號(hào)表明需要進(jìn)行在線升級(jí),則是先把整個(gè)用戶應(yīng)用程序區(qū) 上的代碼擦除,接著使設(shè)備進(jìn)入等待狀態(tài),回復(fù)Bootloader準(zhǔn)備完畢信息,等待主設(shè)備發(fā) 送過來所需要升級(jí)的數(shù)據(jù)代碼;b.如果不需升級(jí)就直接進(jìn)入用戶應(yīng)用程序區(qū),執(zhí)行一般 的應(yīng)用程序;在此后若主機(jī)軟件升級(jí)服務(wù)端發(fā)來升級(jí)指令,則由應(yīng)用程序設(shè)置升級(jí)標(biāo)志, 然后通過外部觸發(fā)RST復(fù)位使從機(jī)軟件升級(jí)客戶端重新啟動(dòng)進(jìn)入Bootloader或直接由 應(yīng)用程序區(qū)跳轉(zhuǎn)到Bootloader區(qū)執(zhí)行引導(dǎo)程序,引導(dǎo)程序重新判斷是否需要升級(jí),此后 Bootloader執(zhí)行操作與a相同。
3.根據(jù)權(quán)利要求1所述的遠(yuǎn)程軟件升級(jí)方法,其特征在于所述的階段三包括升級(jí)程 序全部通訊傳輸完畢后,主機(jī)軟件升級(jí)服務(wù)端發(fā)送完成指令并回到正常應(yīng)用操作;從機(jī)軟 件升級(jí)客戶端證實(shí)軟件升級(jí)完成后,清除掉升級(jí)標(biāo)志,然后跳轉(zhuǎn)回Bootloader區(qū),或利用 外部RST信號(hào)對(duì)自身進(jìn)行復(fù)位操作后進(jìn)入Bootloader區(qū),然后通過引導(dǎo)區(qū)Bootloader進(jìn) 入應(yīng)用程序區(qū),執(zhí)行升級(jí)后的應(yīng)用程序。
4.根據(jù)權(quán)利要求1-3任一項(xiàng)所述的遠(yuǎn)程軟件升級(jí)方法,其特征在于所述的從機(jī)軟件 升級(jí)客戶端中,升級(jí)嵌入式引導(dǎo)區(qū)集成了支持標(biāo)準(zhǔn)通用協(xié)議的通訊管理模塊,從機(jī)軟件升 級(jí)客戶端支持通過遠(yuǎn)程觸發(fā)方式進(jìn)入升級(jí)準(zhǔn)備狀態(tài)。
5.根據(jù)權(quán)利要求1-3任一項(xiàng)所述的遠(yuǎn)程軟件升級(jí)方法,其特征在于所述的主機(jī)軟件 升級(jí)服務(wù)端中,將待下載的升級(jí)程序段當(dāng)成數(shù)據(jù)段分割成一個(gè)或數(shù)個(gè)較小的數(shù)據(jù)片段,集 成至標(biāo)準(zhǔn)通訊協(xié)議內(nèi),當(dāng)作數(shù)據(jù)傳送至目標(biāo)從機(jī)軟件升級(jí)客戶端,對(duì)標(biāo)準(zhǔn)協(xié)議類型可使用 無線的GPRS,或使用有線的ModBUS,ProfiBUS,工業(yè)以太網(wǎng)TCP/IP。
6.根據(jù)權(quán)利要求1-3任一項(xiàng)所述的遠(yuǎn)程軟件升級(jí)方法,其特征在于所述的客戶服務(wù) 端中,嵌入式引導(dǎo)區(qū)對(duì)應(yīng)用軟件升級(jí)的物理接口使用常規(guī)通訊物理接口,該通訊物理接口 是有線的或無線的。
全文摘要
本發(fā)明公開一種利用把嵌入式引導(dǎo)區(qū)Bootloader軟件升級(jí)技術(shù),與通用通訊協(xié)議載體結(jié)合起來的遠(yuǎn)程嵌入式的軟件升級(jí)方法。其包括三個(gè)階段第一階段為啟動(dòng)、運(yùn)行及檢測(cè)階段,第二階段為升級(jí)程序傳輸階段,第三階段為執(zhí)行應(yīng)用程序階段。通過用引導(dǎo)區(qū)Bootloader技術(shù)與其他通訊協(xié)議的結(jié)合,如GPRS,TCP/IP,PROFIBAS等協(xié)議,聯(lián)合在一起實(shí)現(xiàn)遠(yuǎn)程軟件移植。通過信息系統(tǒng)的引導(dǎo)區(qū)Bootloader固件協(xié)議集成,能合理穩(wěn)定地實(shí)現(xiàn)軟件移植、一對(duì)多或定點(diǎn)升級(jí),解決軟件升級(jí)與標(biāo)準(zhǔn)協(xié)議接口的兼容問題。同時(shí)利用標(biāo)準(zhǔn)通訊協(xié)議自身的校驗(yàn)與重發(fā)功能,保證軟件升級(jí)的可靠性,提高惡劣環(huán)境下升級(jí)成功率與抗干擾能力。
文檔編號(hào)G06F9/445GK102075564SQ20101060316
公開日2011年5月25日 申請(qǐng)日期2010年12月23日 優(yōu)先權(quán)日2010年12月23日
發(fā)明者李華嵩, 李悅榮 申請(qǐng)人:李華嵩