• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      一種使用LoRa通信的OTA差分升級(jí)方法

      2022-06-21 11:27:54洋,王
      物聯(lián)網(wǎng)技術(shù) 2022年6期
      關(guān)鍵詞:子塊固件補(bǔ)丁

      劉 洋,王 劍

      (1.中國(guó)民用航空飛行學(xué)院 航空電子電氣學(xué)院,四川 廣漢 618307;2.清華四川能源互聯(lián)網(wǎng)研究院,四川 成都 610213)

      0 引 言

      LoRa(Long Range Radio, LoRa)是一種遠(yuǎn)距離無(wú)線電,因采用線性調(diào)頻擴(kuò)頻技術(shù),具有長(zhǎng)距離和低功耗的特點(diǎn),工作于非授權(quán)頻段,被廣泛部署于智能表計(jì)、智慧農(nóng)業(yè)、智能物流等多個(gè)物聯(lián)網(wǎng)垂直行業(yè),前景廣闊。

      然而,由于LoRa通信通常采用星形組網(wǎng),且目前較多應(yīng)用使用LoRa“點(diǎn)對(duì)點(diǎn)”通信模式,在大面積工程應(yīng)用時(shí)存在頻點(diǎn)沖突和固件升級(jí)困難的問(wèn)題?,F(xiàn)有的全量升級(jí)方案常用于初始化設(shè)備和恢復(fù)出廠設(shè)置時(shí)的批量升級(jí),固件體積龐大,升級(jí)耗時(shí),不適用于低速率的LoRa通信場(chǎng)景。增量升級(jí),又稱(chēng)差分升級(jí),通過(guò)使用新舊版本的差異文件對(duì)舊固件做還原操作,差分固件體積小,適用于應(yīng)用升級(jí)(In Application Programming, IAP)和空中固件升級(jí)(Over the Air, OTA)。

      本文提出了一種用于LoRa通信的OTA差分升級(jí)方法,使用開(kāi)源差分算法Bsdiff和壓縮算法FastLz77對(duì)新舊固件做差異提取并壓縮,以減小固件體積。為保證固件傳輸?shù)目煽啃?,固件?shù)據(jù)包使用LoRa跳頻和循環(huán)異或加密技術(shù)傳輸。文中詳細(xì)介紹了OTA系統(tǒng)構(gòu)成、固件包制作和傳輸過(guò)程,最后搭建了OTA測(cè)試環(huán)境以驗(yàn)證升級(jí)方案的可靠性。

      1 OTA升級(jí)原理和系統(tǒng)組成

      由于LoRa通信的速率不高,以最高速率(擴(kuò)頻因子SF=7、編碼率CR=4/5、帶寬BW=500 kHz時(shí))傳輸255字節(jié)的理論時(shí)間為135 ms。因此,OTA升級(jí)方案應(yīng)選擇差分固件升級(jí),通過(guò)對(duì)待升級(jí)的固件做差分,減小固件體積。

      差分升級(jí)的基本原理如圖1所示,主要包括差分包制作、差分包傳輸、差分包還原三部分。首先將新固件與舊固件做差分,得到補(bǔ)丁文件;之后將補(bǔ)丁文件通過(guò)LoRa通信下發(fā)至待升級(jí)的終端設(shè)備;最后終端設(shè)備根據(jù)補(bǔ)丁文件和已有舊固件執(zhí)行還原操作得到新固件。將新固件寫(xiě)入FLASH,設(shè)置終端程序跳轉(zhuǎn)到新固件的位置并執(zhí)行,實(shí)現(xiàn)空中升級(jí)。

      圖1 差分升級(jí)基本原理

      本文執(zhí)行OTA差分升級(jí)系統(tǒng)組成如圖2所示。系統(tǒng)由LoRa主、從節(jié)點(diǎn)構(gòu)成,相關(guān)定義如下:LoRa服務(wù)器為Master節(jié)點(diǎn),由PC上位機(jī)和USB轉(zhuǎn)LoRa設(shè)備構(gòu)成;LoRa待升級(jí)終端為Slave節(jié)點(diǎn)。每個(gè)Slave節(jié)點(diǎn)有唯一的ID號(hào),服務(wù)器已知各Slave節(jié)點(diǎn)ID號(hào)。待升級(jí)的新固件定義為New,舊固件定義為Old,補(bǔ)丁文件定義為Patch。

      圖2 OTA升級(jí)系統(tǒng)組成

      此外,需按功能劃分Slave節(jié)點(diǎn)固件和升級(jí)參數(shù)的存儲(chǔ)區(qū)域,在應(yīng)用程序執(zhí)行過(guò)程中,將OTA接收的固件包存入相應(yīng)區(qū)域。FLASH分區(qū)為BootLoader_Flash、APPA_Flash、APPB_Flash、Patch_Flash、Update_Flash、Other_Flash。其中,BootLoader_Flash用于啟動(dòng)固件存放空間,負(fù)責(zé)patch文件的還原,新固件啟動(dòng)引導(dǎo)。APPA_Flash、APPB_Flash和Patch_Flash分別用于存放新固件、舊固件和補(bǔ)丁固件。Update_Flash用于存放升級(jí)固件信息,Other_Flash是其他信息的預(yù)留空間。

      2 構(gòu)建patch補(bǔ)丁固件

      Slave節(jié)點(diǎn)的FLASH存儲(chǔ)器一般按照完整扇區(qū)進(jìn)行擦除后寫(xiě)入,升級(jí)固件需要按扇區(qū)大小分包寫(xiě)入。因此,patch補(bǔ)丁固件按FLASH扇區(qū)大小進(jìn)行分塊做差分,每個(gè)FLASH塊的差分結(jié)果增加相應(yīng)塊序號(hào)信息和校驗(yàn)信息,組成patch固件子包patch_pkg_。最后將新固件信息和patch固件子包信息合并成完整的patch補(bǔ)丁固件。子包差分固件生成示意圖如圖3所示。Patch補(bǔ)丁固件包具體生成步驟如下:

      圖3 子包差分固件生成示意圖

      (1)固件分塊。將新固件和舊固件按Slave節(jié)點(diǎn)的FLASH扇區(qū)大小(Flash_Page_Size=1 024 B,2 048 B等)分成若干個(gè)固件子塊,如式(1)。

      (2)子塊差分。對(duì)比具有相同塊號(hào)的新、舊固件子塊(New_pkg_, Old_pkg_)內(nèi)容的一致性,若兩子塊內(nèi)容相同,則不對(duì)該新固件子塊創(chuàng)建補(bǔ)丁內(nèi)容,否則使用開(kāi)源差分算法Bsdiff計(jì)算兩子塊內(nèi)容的差分結(jié)果bsdiff_out_,若新固件的子塊數(shù)大于舊固件子塊數(shù)(>),則多出的新固件子塊不計(jì)算差分,直接將該新固件子塊內(nèi)容作為差分結(jié)果。

      (3)差分塊壓縮。由于差分結(jié)果具有高度稀疏特性,采用壓縮算法可進(jìn)一步減小固件的數(shù)據(jù)量。調(diào)用fastLz77算法對(duì)新固件子塊差分結(jié)果bsdiff_out_進(jìn)行壓縮,得到新固件第個(gè)子塊的補(bǔ)丁bsdiff_fastLz77_out_。

      (4)合并子塊補(bǔ)丁。將新固件信息和壓縮后的固件子塊補(bǔ)丁組合,創(chuàng)建patch固件。patch固件由頭信息塊patch_header和各子信息塊patch_pkg_依次排列構(gòu)成,其中頭信息patch_header包括總差分包數(shù)patch_pkg_total、新固件的文件大小newFile_size、新固件的md5信息摘要newFile_md5;子信息塊patch_pkg_由當(dāng)前子塊序號(hào)、子塊差分壓縮包大小size_、子塊差分壓縮包bsdiff_fastLz77_out_、子塊差分壓縮包的CRC8校驗(yàn)值組成。

      3 LoRa固件傳輸

      由于LoRa傳輸容量有限,單次無(wú)法發(fā)送全部patch補(bǔ)丁固件,需要拆分patch補(bǔ)丁固件進(jìn)行多次傳輸。Master節(jié)點(diǎn)將Patch補(bǔ)丁固件按照單次最大傳輸字節(jié)長(zhǎng)度(Max_Send_Size)可分為若干(nSend)包,send_pkg_1,send_pkg_2,...,send_pkg_。Master與Slave 每次交互發(fā)送一個(gè)OTA數(shù)據(jù)包OTA_pkg_,OTA數(shù)據(jù)包由OTA_header、OTA_Size、send_pkg_和sum32校驗(yàn)值構(gòu)成,發(fā)送至Slave節(jié)點(diǎn),采用報(bào)文內(nèi)容加密和跳頻方式傳輸。

      3.1 報(bào)文加密

      采用指定密鑰循環(huán)異或(XOR-Cycle)的方式對(duì)報(bào)文加密。首先計(jì)算Slave節(jié)點(diǎn)ID值的128位信息摘要MD5,將明文報(bào)文與計(jì)算的MD5值依次按字節(jié)遍歷做異或處理,生成加密報(bào)文。由于采用異或加密,因此解密與加密的過(guò)程相同。其中,Master對(duì)報(bào)文加密,Slave對(duì)報(bào)文解密。加解密方法描述如下:

      假設(shè)原始報(bào)文的明文字節(jié)數(shù)組=[,, ...,a],密文字節(jié)數(shù)組為=[,, ...,b],共計(jì)字節(jié);Slave節(jié)點(diǎn)的ID為ID=[id, id, ..., id]共計(jì)字節(jié)。

      (1)計(jì)算MD5。計(jì)算Slave節(jié)點(diǎn)ID的128位MD5信息摘要值,MD5(ID)=[md5_1, md5_2, ..., md5_16]。

      (2)循環(huán)異或加密。將明文與計(jì)算的MD5值依次按字節(jié)遍歷做異或加/解密處理:=⊕ md5_1;=⊕md5_2 ;…;=⊕md5_16;=⊕md5_1;=⊕md5_2;…;b=a⊕md5_。完成加解密。

      3.2 跳頻傳輸

      補(bǔ)丁固件使用LoRa傳輸時(shí)會(huì)極大占用當(dāng)前通信信道,嚴(yán)重干擾其他使用當(dāng)前信道的設(shè)備正常工作。因此,在傳輸補(bǔ)丁固件包時(shí)使用跳頻傳輸方式,在多個(gè)業(yè)務(wù)信道隨機(jī)傳輸,避免信道擁堵。跳頻傳輸步驟如下:

      (1)劃分信道。將LoRa通信頻段按照0.2 MHz劃分為若干通信信道CH=[ch_1, ..., ch_, ch_+1, ..., ch_, ..., ch_]。

      (2)Master節(jié)點(diǎn)設(shè)置信道信息。Master節(jié)點(diǎn)發(fā)送(ch_)的報(bào)文中帶有Slave響應(yīng)節(jié)點(diǎn)的跳頻信息ch_,Master節(jié)點(diǎn)發(fā)送結(jié)束后在對(duì)應(yīng)的Slave響應(yīng)頻點(diǎn)(ch_)接收Slave回復(fù)報(bào)文,如果Slave節(jié)點(diǎn)未及時(shí)響應(yīng),則Master節(jié)點(diǎn)使用上次的頻點(diǎn)(ch_)重發(fā)報(bào)文信息,并切換至Slave響應(yīng)頻點(diǎn)(ch_)等待響應(yīng),再次超時(shí)響應(yīng)則結(jié)束當(dāng)前數(shù)據(jù)傳輸。

      (3)頻點(diǎn)選擇。跳頻頻點(diǎn)ch_由Master節(jié)點(diǎn)隨機(jī)在所有備選信道中選取。

      3.3 傳輸流程

      3.3.1 Master固件傳輸

      Master節(jié)點(diǎn)固件傳輸流程如圖4所示。Master節(jié)點(diǎn)首先初始化為默認(rèn)信道(ch_1),在默認(rèn)信道發(fā)送報(bào)文讀取指定ID的Slave節(jié)點(diǎn)運(yùn)行狀態(tài)。

      固件傳輸之前先在默認(rèn)信道下發(fā)OTA升級(jí)信息,同時(shí)設(shè)置Slave節(jié)點(diǎn)應(yīng)答頻點(diǎn)ch_并切換Master的接收頻點(diǎn)為ch_,等待終端應(yīng)答。若終端正常應(yīng)常,Master發(fā)送第個(gè)OTA數(shù)據(jù)包,并指定終端應(yīng)答頻點(diǎn)ch_,切換Mastert的接收頻點(diǎn)為ch_,等待終端應(yīng)答,重復(fù)該過(guò)程直到patch固件發(fā)送完成。

      圖4 Master節(jié)點(diǎn)傳輸流程

      3.3.2 Slave固件接收

      Slave節(jié)點(diǎn)接收patch補(bǔ)丁固件的流程如圖5所示。Slave節(jié)點(diǎn)處于空閑狀態(tài)時(shí),切換LoRa通信模式為接收模式,并設(shè)定接收信道為默認(rèn)信道(ch_1)。接收到報(bào)文信息后,立即進(jìn)行解密處理,如果解密后的報(bào)文滿足patch補(bǔ)丁固件傳輸流程,則根據(jù)報(bào)文進(jìn)行回復(fù)。

      圖5 Slave節(jié)點(diǎn)傳輸流程

      4 Slave節(jié)點(diǎn)固件更新

      Slave節(jié)點(diǎn)接收完OTA升級(jí)包后,將執(zhí)行固件更新操作,還原固件并檢查固件的一致性。運(yùn)行BootLoader引導(dǎo)程序,讀取Patch_Flash區(qū)域的patch補(bǔ)丁固件信息,提取patch_header和patch子信息塊patch_pkg_;從patch子信息塊patch_pkg_提取子塊差分壓縮包bsdiff_fastLz77_out_和子塊差分壓縮包的CRC8校驗(yàn)值。使用fastLz77解壓算法對(duì)子塊差分壓縮包bsdiff_fastLz77_out_解壓,計(jì)算解壓后數(shù)據(jù)包的CRC8校驗(yàn)值,如果計(jì)算的校驗(yàn)值與子信息塊patch_pkg_的校驗(yàn)值相同,則使用bspatch還原算法和APPB_Flash存儲(chǔ)區(qū)第個(gè)扇區(qū)的固件信息還原新固件子包,并將其寫(xiě)入APPA_Flash存儲(chǔ)區(qū)第個(gè)扇區(qū),重復(fù)直到還原所有子信息塊。

      一致性校驗(yàn)根據(jù)OTA升級(jí)信息,從APPA_Flash存儲(chǔ)區(qū)讀取指定長(zhǎng)度為新固件newFile_size字節(jié)數(shù)的數(shù)據(jù),計(jì)算MD5值。如果計(jì)算的MD5值與新固件的MD5信息摘要newFile_md5相同,則OTA升級(jí)成功,將APPA_Flash存儲(chǔ)區(qū)的新固件拷貝至APPB_Flash存儲(chǔ)區(qū);否則OTA升級(jí)失敗。將APPB_Flash存儲(chǔ)區(qū)的舊固件拷貝至APPA_Flash存儲(chǔ)區(qū),清除Patch_Flash存儲(chǔ)區(qū)和相關(guān)OTA升級(jí)信息。

      5 OTA升級(jí)測(cè)試

      為驗(yàn)證基于LoRa通信的OTA升級(jí)的可靠性,搭建包括1個(gè)Master節(jié)點(diǎn)和10個(gè)Slave節(jié)點(diǎn)的測(cè)試環(huán)境,其中 Master節(jié)點(diǎn)由PC端電腦軟件和LoRa透?jìng)髂=M組成。PC端電腦軟件完成對(duì)Slave節(jié)點(diǎn)的OTA升級(jí)流程和協(xié)議控制,此外還制作patch文件;LoRa透?jìng)髂=M接口為USB轉(zhuǎn)LoRa,模組如圖6所示,負(fù)責(zé)將PC端電腦軟件發(fā)出到USB口的數(shù)據(jù)轉(zhuǎn)換成LoRa通信無(wú)線方式發(fā)送。Slave節(jié)點(diǎn)的參數(shù)信息見(jiàn)表1所列。

      圖6 USB轉(zhuǎn)LoRa模組

      表1 Slave節(jié)點(diǎn)參數(shù)

      同步Master節(jié)點(diǎn)和Slave節(jié)點(diǎn)的LoRa跳頻信道劃分,配置默認(rèn)信道為ch_1:472.5 MHz,從472.7~485.1 MHz,間隔0.2 MHz,共計(jì)62個(gè)跳頻信道。其余LoRa通信參數(shù)設(shè)置為帶寬500 kHz、編碼率4/5、擴(kuò)頻因子12。為模擬信道沖突,10個(gè)Slave節(jié)點(diǎn)都在ch_1信道每隔10 s隨機(jī)發(fā)送業(yè)務(wù)數(shù)據(jù)。

      Master節(jié)點(diǎn)選擇測(cè)試用新固件new.bin,大小為31.2 KB;舊固件old.bin,大小為33 KB;依次執(zhí)行固件分包、子包差分、子包壓縮、patch文件拼包操作,生成patch補(bǔ)丁固件源文件。其中,固件按照扇區(qū)1 KB進(jìn)行分包,patch補(bǔ)丁固件源文件(patch.bin)大小為2.3 KB。

      OTA傳輸?shù)挠行atch數(shù)據(jù)包設(shè)置為255字節(jié),Master節(jié)點(diǎn)將patch補(bǔ)丁固件按照255字節(jié)分成10個(gè)數(shù)據(jù)包,每個(gè)數(shù)據(jù)包增加頭文件信息OTA_header、整包數(shù)據(jù)量OTA_Size和sum32校驗(yàn)值,構(gòu)成OTA數(shù)據(jù)包。Master節(jié)點(diǎn)發(fā)送報(bào)文由Slave節(jié)點(diǎn)1的ID計(jì)算MD5值循環(huán)異或加密;默認(rèn)信道472.5 MHz發(fā)送廣播報(bào)文,查詢(xún)?cè)揝lave節(jié)點(diǎn)1的狀態(tài)、固件版本號(hào),發(fā)送OTA固件升級(jí)信息,并設(shè)置隨機(jī)響應(yīng)信道ch_為17,即476.1 MHz,設(shè)置Master節(jié)點(diǎn)在476.1 MHz等待接收Slave節(jié)點(diǎn)1的回復(fù)報(bào)文,等待延時(shí)120 ms后Master報(bào)文接收成功。

      Master節(jié)點(diǎn)在信道476.1 MHz發(fā)送第一幀OTA數(shù)據(jù)報(bào)文,并隨機(jī)指定Slave節(jié)點(diǎn)的響應(yīng)跳頻信道ch_為32,即479.1 MHz,發(fā)送之后設(shè)置Master節(jié)點(diǎn)在479.1 MHz等待接收Slave節(jié)點(diǎn)的回復(fù)報(bào)文,等待延時(shí)260 ms后Master報(bào)文接收成功。

      Master節(jié)點(diǎn)依次發(fā)送至最后一幀OTA數(shù)據(jù)報(bào)文,Slave節(jié)點(diǎn)均正常響應(yīng)。此時(shí),Slave節(jié)點(diǎn)重啟進(jìn)入BootLoader引導(dǎo)程序,執(zhí)行固件還原操作,校驗(yàn)新固件MD5,并將該新固件寫(xiě)入APPB_Flash區(qū)進(jìn)行備份,程序跳轉(zhuǎn)至APPA_Flash區(qū),正確執(zhí)行,OTA升級(jí)完畢。多次測(cè)試結(jié)果見(jiàn)表2所列,成功率為100%。

      表2 OTA升級(jí)結(jié)果

      6 結(jié) 語(yǔ)

      本文提出了用于LoRa通信的OTA差分升級(jí)方案,通過(guò)Bsdiff差分和FastLz77壓縮進(jìn)一步減小了固件的體積以適應(yīng)LoRa低速率傳輸場(chǎng)景。為避免對(duì)現(xiàn)有業(yè)務(wù)信道的傳輸沖突,使用LoRa跳頻和循環(huán)異或加密方式對(duì)固件傳輸信道和固件數(shù)據(jù)包進(jìn)行優(yōu)化,顯著提高了固件升級(jí)的成功率。驗(yàn)證結(jié)果表明,本方案適用于LoRa“點(diǎn)對(duì)點(diǎn)”通信場(chǎng)景下的固件升級(jí)應(yīng)用。

      猜你喜歡
      子塊固件補(bǔ)丁
      基于八叉樹(shù)的地震數(shù)據(jù)多級(jí)緩存方法
      基于八叉樹(shù)的地震數(shù)據(jù)分布式存儲(chǔ)方法研究
      基于特征值算法的圖像Copy-Move篡改的被動(dòng)取證方案
      健胃補(bǔ)丁
      學(xué)與玩(2018年5期)2019-01-21 02:13:06
      基于波浪式矩陣置換的稀疏度均衡分塊壓縮感知算法
      繡朵花兒當(dāng)補(bǔ)丁
      文苑(2018年18期)2018-11-08 11:12:30
      補(bǔ)丁奶奶
      基于固件的遠(yuǎn)程身份認(rèn)證
      提取ROM固件中的APP
      大病醫(yī)保期待政策“補(bǔ)丁”
      会同县| 高唐县| 东辽县| 偏关县| 濉溪县| 通化市| 浮山县| 五原县| 凌海市| 乐清市| 满洲里市| 长治县| 西盟| 醴陵市| 南平市| 封丘县| 铁力市| 武强县| 北川| 尼勒克县| 平安县| 蒙山县| 富裕县| 安西县| 泸溪县| 突泉县| 青岛市| 正宁县| 当阳市| 彩票| 远安县| 铜梁县| 若羌县| 抚州市| 景泰县| 金溪县| 华坪县| 武邑县| 图片| 城口县| 云梦县|