一種遠(yuǎn)程更新方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)網(wǎng)絡(luò)領(lǐng)域,尤其涉及一種遠(yuǎn)程更新方法。
【背景技術(shù)】
[0002]ZigBee技術(shù)是一種近距離、低復(fù)雜度、低功耗、低速率、低成本的雙向無(wú)線通訊技術(shù)。ZigBee是一種高可靠的無(wú)線數(shù)傳網(wǎng)絡(luò),類似于CDMA和GSM網(wǎng)絡(luò)。ZigBee數(shù)傳模塊類似于移動(dòng)網(wǎng)絡(luò)基站。通訊距離從標(biāo)準(zhǔn)的75m到幾百米、幾公里,并且支持無(wú)限擴(kuò)展。ZigBee是一個(gè)由可多到65535個(gè)無(wú)線數(shù)傳模塊組成的一個(gè)無(wú)線數(shù)傳網(wǎng)絡(luò)平臺(tái),在整個(gè)網(wǎng)絡(luò)范圍內(nèi),每一個(gè)ZigBee網(wǎng)絡(luò)數(shù)傳模塊之間可以相互通信,每個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)間的距離可以從標(biāo)準(zhǔn)的75m無(wú)限擴(kuò)展。
[0003]ZigBee是基于IEEE802.15.4標(biāo)準(zhǔn)的低功耗局域網(wǎng)協(xié)議。根據(jù)國(guó)際標(biāo)準(zhǔn)規(guī)定,ZigBee技術(shù)是一種短距離、低功耗的無(wú)線通信技術(shù)。其特點(diǎn)是近距離、低復(fù)雜度、自組織、低功耗、低數(shù)據(jù)速率。主要適合用于自動(dòng)控制和遠(yuǎn)程控制領(lǐng)域,可以嵌入各種設(shè)備。ZigBee依據(jù)802.15.4標(biāo)準(zhǔn),在數(shù)千個(gè)微小的傳感器之間相互協(xié)調(diào)實(shí)現(xiàn)通信。這些傳感器只需要很少的能量,以接力的方式通過無(wú)線電波將數(shù)據(jù)從一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)傳到另一個(gè)節(jié)點(diǎn),所以它們的通信效率非常高。
[0004]當(dāng)前,嵌入式產(chǎn)品在投入使用階段由于各種原因需要對(duì)產(chǎn)品進(jìn)行維護(hù)或者軟件更新,若使用傳統(tǒng)的本地程序更新方式,需要對(duì)產(chǎn)品進(jìn)行召回處理,增加了企業(yè)成本。如果嵌入式產(chǎn)品放置在極端惡劣的環(huán)境下,傳統(tǒng)的升級(jí)方式無(wú)法進(jìn)行。因此,目前基于zigbee的嵌入式系統(tǒng)的固件更新的穩(wěn)定性及更新效率都較低。
[0005]中國(guó)專利(CN103631629A)公開了一種獲取遠(yuǎn)程更新文件自動(dòng)更新方法,其通過遠(yuǎn)程網(wǎng)站獲取文件更新列表,比對(duì)本地版本號(hào)和遠(yuǎn)程版本號(hào)是否相同,根據(jù)版本號(hào)不同的文件更新列表更新用戶指定的文件。該專利雖然能夠遠(yuǎn)程更新文件,但是沒有設(shè)置更新數(shù)據(jù)穩(wěn)定傳輸?shù)拇胧?,因而更新?shù)據(jù)傳輸不穩(wěn)定,更新失敗率高。而且,該專利是一對(duì)一更新,不能夠同時(shí)更新多個(gè)設(shè)備,不完全適用固件的遠(yuǎn)程更新。尤其是涉及多個(gè)設(shè)備節(jié)點(diǎn)的網(wǎng)絡(luò)設(shè)備更新,工作量大且更新時(shí)間長(zhǎng)。因此,市場(chǎng)上迫切需要一種能夠快速且穩(wěn)定的遠(yuǎn)程更新方法來(lái)更新網(wǎng)絡(luò)設(shè)備,。
【發(fā)明內(nèi)容】
[0006]針對(duì)現(xiàn)有技術(shù)之不足,本發(fā)明提供一種遠(yuǎn)程更新方法,包括至少一個(gè)設(shè)備節(jié)點(diǎn),該遠(yuǎn)程更新方法的步驟包括:
[0007]第一設(shè)備節(jié)點(diǎn)基于至少一個(gè)第二設(shè)備節(jié)點(diǎn)廣播的固件參數(shù)篩選待更新的更新數(shù)據(jù);
[0008]接收所述第二設(shè)備節(jié)點(diǎn)基于響應(yīng)更新請(qǐng)求發(fā)送的以幀為單位的更新數(shù)據(jù);
[0009]基于所述更新數(shù)據(jù)同步更新固件后轉(zhuǎn)換為第二設(shè)備節(jié)點(diǎn);
[0010]響應(yīng)兩個(gè)第一設(shè)備節(jié)點(diǎn)的更新請(qǐng)求并發(fā)送更新數(shù)據(jù),從而使設(shè)備節(jié)點(diǎn)網(wǎng)絡(luò)以二的指數(shù)倍速度更新固件。
[0011]根據(jù)一個(gè)優(yōu)選實(shí)施方式,所述第一設(shè)備節(jié)點(diǎn)發(fā)送更新請(qǐng)求后逐幀接收所述第二設(shè)備節(jié)點(diǎn)發(fā)送的以幀為單位的更新數(shù)據(jù)。
[0012]根據(jù)一個(gè)優(yōu)選實(shí)施方式,所述第一設(shè)備節(jié)點(diǎn)發(fā)送的一個(gè)更新請(qǐng)求對(duì)應(yīng)接收的一個(gè)以幀為單位的更新數(shù)據(jù)。
[0013]根據(jù)一個(gè)優(yōu)選實(shí)施方式,所述第一設(shè)備節(jié)點(diǎn)基于至少一個(gè)第二設(shè)備節(jié)點(diǎn)廣播的固件參數(shù)篩選待更新的更新數(shù)據(jù)的步驟包括:
[0014]所述第一設(shè)備節(jié)點(diǎn)接收至少一個(gè)第二設(shè)備節(jié)點(diǎn)廣播的包含固件參數(shù)的更新通知;
[0015]比較所述固件參數(shù)從而篩選較新的更新數(shù)據(jù);
[0016]基于所述固件參數(shù)計(jì)算所述更新數(shù)據(jù)的總幀數(shù)。
[0017]根據(jù)一個(gè)優(yōu)選實(shí)施方式,所述接收所述第二設(shè)備節(jié)點(diǎn)基于響應(yīng)更新請(qǐng)求發(fā)送的以幀為單位的更新數(shù)據(jù)的步驟還包括:
[0018]所述第一設(shè)備節(jié)點(diǎn)逐幀接收所述更新數(shù)據(jù)并采集每一幀更新數(shù)據(jù)中的校驗(yàn)值;
[0019]比較采集的校驗(yàn)值與更新通知中的校驗(yàn)值的一致性以校驗(yàn)所述更新數(shù)據(jù)的有效性;
[0020]保存校驗(yàn)成功的更新數(shù)據(jù)。
[0021]根據(jù)一個(gè)優(yōu)選實(shí)施方式,所訴基于所述更新數(shù)據(jù)同步更新固件后轉(zhuǎn)換為第二設(shè)備節(jié)點(diǎn)的步驟還包括:
[0022]所述第一設(shè)備節(jié)點(diǎn)在更新固件且轉(zhuǎn)換為第二設(shè)備節(jié)點(diǎn)后,
[0023]向至少一個(gè)所述第一設(shè)備節(jié)點(diǎn)廣播更新通知;
[0024]響應(yīng)更新請(qǐng)求并同時(shí)向至少一個(gè)所述第一設(shè)備節(jié)點(diǎn)發(fā)送更新數(shù)據(jù)。
[0025]根據(jù)一個(gè)優(yōu)選實(shí)施方式,所述第一設(shè)備節(jié)點(diǎn)基于完整的更新數(shù)據(jù)在后臺(tái)更新固件。
[0026]根據(jù)一個(gè)優(yōu)選實(shí)施方式,所述第一設(shè)備節(jié)點(diǎn)處于用于接收更新數(shù)據(jù)且更新固件的第一工作模式,所述第二設(shè)備節(jié)點(diǎn)處于用于廣播更新通知或/和為所述設(shè)備節(jié)點(diǎn)發(fā)送所述更新數(shù)據(jù)的第二工作模式。
[0027]根據(jù)一個(gè)優(yōu)選實(shí)施方式,所述第二設(shè)備節(jié)點(diǎn)在限定時(shí)間內(nèi)未收到更新請(qǐng)求會(huì)自動(dòng)轉(zhuǎn)換為第一設(shè)備節(jié)點(diǎn)。
[0028]根據(jù)一個(gè)優(yōu)選實(shí)施方式,所述固件參數(shù)至少包括固件類型參數(shù)、固件長(zhǎng)度參數(shù)、固件版本參數(shù)、信號(hào)強(qiáng)度參數(shù)和信道質(zhì)量參數(shù)中的一種。
[0029]本發(fā)明的有益技術(shù)效果:
[0030](1)本發(fā)明通過斷點(diǎn)續(xù)傳的方式續(xù)傳以幀為單位的更新數(shù)據(jù),從而使數(shù)據(jù)傳輸穩(wěn)定且不易丟失。
[0031](2)本發(fā)明的固件更新在后臺(tái)進(jìn)行,設(shè)備節(jié)點(diǎn)在更新的過程中不會(huì)影響正常工作,且每個(gè)設(shè)備節(jié)點(diǎn)都是相互獨(dú)立的,避免了節(jié)點(diǎn)之間相互影響,提高了更新效率。
[0032](3)本發(fā)明的每一個(gè)設(shè)備節(jié)點(diǎn)同時(shí)更新兩個(gè)設(shè)備,從而使網(wǎng)絡(luò)設(shè)備節(jié)點(diǎn)以二的指數(shù)倍的速度更新,提高了設(shè)備更新的速度。
【附圖說明】
[0033]圖1是本發(fā)明的方法流程圖;和
[0034]圖2是本發(fā)明的一種優(yōu)選實(shí)施例的示意圖。
【具體實(shí)施方式】
[0035]下面結(jié)合附圖進(jìn)行詳細(xì)說明。
[0036]如圖1所示,本發(fā)明提供一種遠(yuǎn)程更新方法。本發(fā)明包括至少一個(gè)設(shè)備節(jié)點(diǎn)。多個(gè)設(shè)備節(jié)點(diǎn)之間無(wú)線連接。
[0037]本發(fā)明的方法步驟包括:第一設(shè)備節(jié)點(diǎn)基于至少一個(gè)第二設(shè)備節(jié)點(diǎn)廣播的固件參數(shù)篩選待更新的更新數(shù)據(jù);接收第二設(shè)備節(jié)點(diǎn)基于響應(yīng)更新請(qǐng)求發(fā)送的以幀為單位的更新數(shù)據(jù);基于更新數(shù)據(jù)同步更新固件后轉(zhuǎn)換為第二設(shè)備節(jié)點(diǎn);響應(yīng)兩個(gè)第一設(shè)備節(jié)點(diǎn)的更新請(qǐng)求并發(fā)送更新數(shù)據(jù),從而使設(shè)備節(jié)點(diǎn)網(wǎng)絡(luò)以二的指數(shù)倍速度更新固件。
[0038]實(shí)施例一
[0039]ZigBee網(wǎng)絡(luò)中包含了網(wǎng)關(guān)、協(xié)調(diào)器和多個(gè)設(shè)備節(jié)點(diǎn)。協(xié)調(diào)器與網(wǎng)關(guān)之間通過串口連接并通信,網(wǎng)關(guān)與智能設(shè)備之間通過zigbee網(wǎng)絡(luò)連接并通信。協(xié)調(diào)器和設(shè)備節(jié)點(diǎn)會(huì)在網(wǎng)關(guān)端注冊(cè)自己的設(shè)備信息,包括當(dāng)前版本信息。
[0040]在需要進(jìn)行更新時(shí),網(wǎng)關(guān)廣播更新通知,在更新通知中包含了固件類型、固件版本號(hào)、固件長(zhǎng)度等信息。
[0041]協(xié)調(diào)器接收到更新通知之后,協(xié)調(diào)器會(huì)判定自身的固件版本號(hào)是否低于更新通知中的固件版本號(hào),若是協(xié)調(diào)器自身的固件版本號(hào)低于更新通知中的額固件版本號(hào)時(shí),協(xié)調(diào)器生成更新請(qǐng)求,并將更新請(qǐng)求發(fā)送至網(wǎng)關(guān);若是協(xié)調(diào)器自身的固件版本號(hào)與更新通知中的固件版本號(hào)相同時(shí),則保持當(dāng)前的固件版本。
[0042]網(wǎng)關(guān)在接收到協(xié)調(diào)器發(fā)送的更新請(qǐng)求時(shí),網(wǎng)關(guān)向協(xié)調(diào)器下發(fā)更新數(shù)據(jù)包,協(xié)調(diào)器在后臺(tái)進(jìn)行固件更新。
[0043]協(xié)調(diào)器連接了至少一個(gè)設(shè)備節(jié)點(diǎn)。設(shè)備節(jié)點(diǎn)包括智能設(shè)備。協(xié)調(diào)器向設(shè)備節(jié)點(diǎn)發(fā)送更新通知。更新通知包括固件參數(shù)。固件參數(shù)至少包括固件類型參數(shù)、固件長(zhǎng)度參數(shù)、固件版本參數(shù)、信號(hào)強(qiáng)度參數(shù)和信道質(zhì)量參數(shù)中的一種。設(shè)備節(jié)點(diǎn)將固件參數(shù)與自身的固件參數(shù)進(jìn)行比較。若解析的固件版本參數(shù)高于自身的固件版本參數(shù),則選擇固件更新。若解析的固件版本參數(shù)低于自身的固件版本參數(shù),則選擇忽略更新通知,維持當(dāng)前的固件版本。
[0044]在接收到協(xié)調(diào)器的更新通知后,設(shè)備節(jié)點(diǎn)解析固件參數(shù)。設(shè)備節(jié)點(diǎn)對(duì)各個(gè)固件參數(shù)進(jìn)行比較和排序,篩選出固件版本最新的更新通知。在固件版本參數(shù)相同的情況下,篩選信號(hào)強(qiáng)度參數(shù)最大的更新通知。設(shè)備節(jié)點(diǎn)根據(jù)固件長(zhǎng)度參數(shù)計(jì)算出需要接收的更新數(shù)據(jù)的總幀數(shù)。設(shè)備節(jié)點(diǎn)向與篩選的更新通知對(duì)應(yīng)的協(xié)調(diào)器發(fā)送更新請(qǐng)求。更新請(qǐng)求用于請(qǐng)求發(fā)送更新數(shù)據(jù)。
[0045]根據(jù)一種優(yōu)選實(shí)施方式,設(shè)備節(jié)點(diǎn)發(fā)送更新請(qǐng)求后逐幀接收協(xié)調(diào)器發(fā)送的以幀為單位的更新數(shù)據(jù)。協(xié)調(diào)器在接收到設(shè)備節(jié)點(diǎn)的更新請(qǐng)求后,發(fā)送以幀為單位更新數(shù)據(jù)。協(xié)調(diào)器逐幀發(fā)送更新數(shù)據(jù),直至全部的更新數(shù)據(jù)發(fā)送完畢。每一幀更新數(shù)據(jù)中都帶有一個(gè)標(biāo)識(shí)參數(shù),該標(biāo)識(shí)可以指示更新數(shù)據(jù)的順序。例如第一幀更新數(shù)據(jù)包含一個(gè)標(biāo)識(shí),第二幀更新數(shù)據(jù)也包含一個(gè)標(biāo)識(shí),依次標(biāo)識(shí)。若是最后缺少第二幀更新數(shù)據(jù)的標(biāo)識(shí),則設(shè)備節(jié)點(diǎn)再次向協(xié)調(diào)器發(fā)送請(qǐng)求第二幀更新數(shù)據(jù)的更新請(qǐng)求。若是有多幀更新數(shù)據(jù)損壞或丟失,則設(shè)備節(jié)點(diǎn)重新向協(xié)調(diào)器請(qǐng)求丟失的幀。協(xié)調(diào)器在接收到更新請(qǐng)求后,重新發(fā)送損壞或丟失的更新數(shù)據(jù)。
[0046]根據(jù)一種優(yōu)選實(shí)施方式,設(shè)備節(jié)點(diǎn)發(fā)送的一個(gè)更新請(qǐng)求對(duì)應(yīng)接收的一個(gè)以幀為單位的更新數(shù)據(jù)。設(shè)備節(jié)點(diǎn)在發(fā)送第一個(gè)更新請(qǐng)求后,接收第一幀更新數(shù)據(jù)。設(shè)備節(jié)點(diǎn)對(duì)第一幀更新數(shù)據(jù)進(jìn)行校驗(yàn),計(jì)算第一幀更新數(shù)據(jù)的CRC值。若是計(jì)算得到的更新數(shù)據(jù)中的CRC值與更新通知中的CRC值一致,則校驗(yàn)成功,則設(shè)備存儲(chǔ)該幀更新數(shù)據(jù),并且向協(xié)調(diào)器請(qǐng)求下一幀更新數(shù)據(jù)。然后設(shè)備節(jié)點(diǎn)按照此循環(huán)繼續(xù)發(fā)更新送請(qǐng)求和接收更新數(shù)據(jù)。若是某一幀更新數(shù)據(jù)校驗(yàn)失敗,則重新請(qǐng)求校驗(yàn)失敗這一幀的更新數(shù)據(jù)。從而設(shè)備節(jié)點(diǎn)接收全部的更新數(shù)據(jù)。設(shè)備節(jié)點(diǎn)基于更新數(shù)據(jù)在后臺(tái)完成固件更新。
[0047]設(shè)備節(jié)點(diǎn)在更新完畢后向其他設(shè)備節(jié)點(diǎn)發(fā)送更新通知。接收到更新通知的設(shè)備節(jié)點(diǎn)重復(fù)遠(yuǎn)程更新方法,接收更新數(shù)據(jù)并在后臺(tái)完成固件更新。
[0048]實(shí)施例二
[0049]本實(shí)施例是在實(shí)施例一的基礎(chǔ)上改進(jìn)的優(yōu)選實(shí)施方式,包括但不限于實(shí)施例一的實(shí)施方式。
[0050]設(shè)備節(jié)點(diǎn)包括兩種工作模式。第一工作模式用于接收更新數(shù)據(jù)和更新固件。第二工作模式用于廣播更新通知或/和為待更新的設(shè)備節(jié)點(diǎn)發(fā)送更新數(shù)據(jù)。處于第一工作模式的設(shè)備節(jié)點(diǎn)為第一設(shè)備節(jié)點(diǎn)。處于第二工作模式的設(shè)備節(jié)點(diǎn)為第二設(shè)備節(jié)點(diǎn)。
[0051]在協(xié)調(diào)器更新程序完成后,協(xié)調(diào)器向至少一個(gè)設(shè)備節(jié)點(diǎn)發(fā)送更新通知。更新通知包括固件參數(shù)。設(shè)備節(jié)點(diǎn)解析固件參數(shù)。固件參數(shù)至少包括固件類型參數(shù)、固件長(zhǎng)度參數(shù)、固件版本參數(shù)、信號(hào)強(qiáng)度參數(shù)和信道質(zhì)量參數(shù)中的一種。設(shè)備節(jié)點(diǎn)將固件參數(shù)與自身的固件參數(shù)進(jìn)行比較。若解析的固件版本參數(shù)高于自身的固件版本參數(shù),則選擇固件更新。若解析的固件版本參數(shù)低于自身的固件版本參數(shù),則選擇忽略更新通知,維持當(dāng)前的固件版本。
[0052]當(dāng)設(shè)備節(jié)點(diǎn)同時(shí)接收到多個(gè)更新通知的時(shí)候,設(shè)備節(jié)點(diǎn)分別解析固件參數(shù)。設(shè)備節(jié)點(diǎn)將高于自身版本參數(shù)的固件版本參數(shù)進(jìn)行排