999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種使用LoRa通信的OTA差分升級方法

2022-06-21 11:27:54洋,王
物聯網技術 2022年6期
關鍵詞:信息

劉 洋,王 劍

(1.中國民用航空飛行學院 航空電子電氣學院,四川 廣漢 618307;2.清華四川能源互聯網研究院,四川 成都 610213)

0 引 言

LoRa(Long Range Radio, LoRa)是一種遠距離無線電,因采用線性調頻擴頻技術,具有長距離和低功耗的特點,工作于非授權頻段,被廣泛部署于智能表計、智慧農業、智能物流等多個物聯網垂直行業,前景廣闊。

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

本文提出了一種用于LoRa通信的OTA差分升級方法,使用開源差分算法Bsdiff和壓縮算法FastLz77對新舊固件做差異提取并壓縮,以減小固件體積。為保證固件傳輸的可靠性,固件數據包使用LoRa跳頻和循環異或加密技術傳輸。文中詳細介紹了OTA系統構成、固件包制作和傳輸過程,最后搭建了OTA測試環境以驗證升級方案的可靠性。

1 OTA升級原理和系統組成

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

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

圖1 差分升級基本原理

本文執行OTA差分升級系統組成如圖2所示。系統由LoRa主、從節點構成,相關定義如下:LoRa服務器為Master節點,由PC上位機和USB轉LoRa設備構成;LoRa待升級終端為Slave節點。每個Slave節點有唯一的ID號,服務器已知各Slave節點ID號。待升級的新固件定義為New,舊固件定義為Old,補丁文件定義為Patch。

圖2 OTA升級系統組成

此外,需按功能劃分Slave節點固件和升級參數的存儲區域,在應用程序執行過程中,將OTA接收的固件包存入相應區域。FLASH分區為BootLoader_Flash、APPA_Flash、APPB_Flash、Patch_Flash、Update_Flash、Other_Flash。其中,BootLoader_Flash用于啟動固件存放空間,負責patch文件的還原,新固件啟動引導。APPA_Flash、APPB_Flash和Patch_Flash分別用于存放新固件、舊固件和補丁固件。Update_Flash用于存放升級固件信息,Other_Flash是其他信息的預留空間。

2 構建patch補丁固件

Slave節點的FLASH存儲器一般按照完整扇區進行擦除后寫入,升級固件需要按扇區大小分包寫入。因此,patch補丁固件按FLASH扇區大小進行分塊做差分,每個FLASH塊的差分結果增加相應塊序號信息和校驗信息,組成patch固件子包patch_pkg_。最后將新固件信息和patch固件子包信息合并成完整的patch補丁固件。子包差分固件生成示意圖如圖3所示。Patch補丁固件包具體生成步驟如下:

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

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

(2)子塊差分。對比具有相同塊號的新、舊固件子塊(New_pkg_, Old_pkg_)內容的一致性,若兩子塊內容相同,則不對該新固件子塊創建補丁內容,否則使用開源差分算法Bsdiff計算兩子塊內容的差分結果bsdiff_out_,若新固件的子塊數大于舊固件子塊數(>),則多出的新固件子塊不計算差分,直接將該新固件子塊內容作為差分結果。

(3)差分塊壓縮。由于差分結果具有高度稀疏特性,采用壓縮算法可進一步減小固件的數據量。調用fastLz77算法對新固件子塊差分結果bsdiff_out_進行壓縮,得到新固件第個子塊的補丁bsdiff_fastLz77_out_。

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

3 LoRa固件傳輸

由于LoRa傳輸容量有限,單次無法發送全部patch補丁固件,需要拆分patch補丁固件進行多次傳輸。Master節點將Patch補丁固件按照單次最大傳輸字節長度(Max_Send_Size)可分為若干(nSend)包,send_pkg_1,send_pkg_2,...,send_pkg_。Master與Slave 每次交互發送一個OTA數據包OTA_pkg_,OTA數據包由OTA_header、OTA_Size、send_pkg_和sum32校驗值構成,發送至Slave節點,采用報文內容加密和跳頻方式傳輸。

3.1 報文加密

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

假設原始報文的明文字節數組=[,, ...,a],密文字節數組為=[,, ...,b],共計字節;Slave節點的ID為ID=[id, id, ..., id]共計字節。

(1)計算MD5。計算Slave節點ID的128位MD5信息摘要值,MD5(ID)=[md5_1, md5_2, ..., md5_16]。

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

3.2 跳頻傳輸

補丁固件使用LoRa傳輸時會極大占用當前通信信道,嚴重干擾其他使用當前信道的設備正常工作。因此,在傳輸補丁固件包時使用跳頻傳輸方式,在多個業務信道隨機傳輸,避免信道擁堵。跳頻傳輸步驟如下:

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

(2)Master節點設置信道信息。Master節點發送(ch_)的報文中帶有Slave響應節點的跳頻信息ch_,Master節點發送結束后在對應的Slave響應頻點(ch_)接收Slave回復報文,如果Slave節點未及時響應,則Master節點使用上次的頻點(ch_)重發報文信息,并切換至Slave響應頻點(ch_)等待響應,再次超時響應則結束當前數據傳輸。

(3)頻點選擇。跳頻頻點ch_由Master節點隨機在所有備選信道中選取。

3.3 傳輸流程

3.3.1 Master固件傳輸

Master節點固件傳輸流程如圖4所示。Master節點首先初始化為默認信道(ch_1),在默認信道發送報文讀取指定ID的Slave節點運行狀態。

固件傳輸之前先在默認信道下發OTA升級信息,同時設置Slave節點應答頻點ch_并切換Master的接收頻點為ch_,等待終端應答。若終端正常應常,Master發送第個OTA數據包,并指定終端應答頻點ch_,切換Mastert的接收頻點為ch_,等待終端應答,重復該過程直到patch固件發送完成。

圖4 Master節點傳輸流程

3.3.2 Slave固件接收

Slave節點接收patch補丁固件的流程如圖5所示。Slave節點處于空閑狀態時,切換LoRa通信模式為接收模式,并設定接收信道為默認信道(ch_1)。接收到報文信息后,立即進行解密處理,如果解密后的報文滿足patch補丁固件傳輸流程,則根據報文進行回復。

圖5 Slave節點傳輸流程

4 Slave節點固件更新

Slave節點接收完OTA升級包后,將執行固件更新操作,還原固件并檢查固件的一致性。運行BootLoader引導程序,讀取Patch_Flash區域的patch補丁固件信息,提取patch_header和patch子信息塊patch_pkg_;從patch子信息塊patch_pkg_提取子塊差分壓縮包bsdiff_fastLz77_out_和子塊差分壓縮包的CRC8校驗值。使用fastLz77解壓算法對子塊差分壓縮包bsdiff_fastLz77_out_解壓,計算解壓后數據包的CRC8校驗值,如果計算的校驗值與子信息塊patch_pkg_的校驗值相同,則使用bspatch還原算法和APPB_Flash存儲區第個扇區的固件信息還原新固件子包,并將其寫入APPA_Flash存儲區第個扇區,重復直到還原所有子信息塊。

一致性校驗根據OTA升級信息,從APPA_Flash存儲區讀取指定長度為新固件newFile_size字節數的數據,計算MD5值。如果計算的MD5值與新固件的MD5信息摘要newFile_md5相同,則OTA升級成功,將APPA_Flash存儲區的新固件拷貝至APPB_Flash存儲區;否則OTA升級失敗。將APPB_Flash存儲區的舊固件拷貝至APPA_Flash存儲區,清除Patch_Flash存儲區和相關OTA升級信息。

5 OTA升級測試

為驗證基于LoRa通信的OTA升級的可靠性,搭建包括1個Master節點和10個Slave節點的測試環境,其中 Master節點由PC端電腦軟件和LoRa透傳模組組成。PC端電腦軟件完成對Slave節點的OTA升級流程和協議控制,此外還制作patch文件;LoRa透傳模組接口為USB轉LoRa,模組如圖6所示,負責將PC端電腦軟件發出到USB口的數據轉換成LoRa通信無線方式發送。Slave節點的參數信息見表1所列。

圖6 USB轉LoRa模組

表1 Slave節點參數

同步Master節點和Slave節點的LoRa跳頻信道劃分,配置默認信道為ch_1:472.5 MHz,從472.7~485.1 MHz,間隔0.2 MHz,共計62個跳頻信道。其余LoRa通信參數設置為帶寬500 kHz、編碼率4/5、擴頻因子12。為模擬信道沖突,10個Slave節點都在ch_1信道每隔10 s隨機發送業務數據。

Master節點選擇測試用新固件new.bin,大小為31.2 KB;舊固件old.bin,大小為33 KB;依次執行固件分包、子包差分、子包壓縮、patch文件拼包操作,生成patch補丁固件源文件。其中,固件按照扇區1 KB進行分包,patch補丁固件源文件(patch.bin)大小為2.3 KB。

OTA傳輸的有效patch數據包設置為255字節,Master節點將patch補丁固件按照255字節分成10個數據包,每個數據包增加頭文件信息OTA_header、整包數據量OTA_Size和sum32校驗值,構成OTA數據包。Master節點發送報文由Slave節點1的ID計算MD5值循環異或加密;默認信道472.5 MHz發送廣播報文,查詢該Slave節點1的狀態、固件版本號,發送OTA固件升級信息,并設置隨機響應信道ch_為17,即476.1 MHz,設置Master節點在476.1 MHz等待接收Slave節點1的回復報文,等待延時120 ms后Master報文接收成功。

Master節點在信道476.1 MHz發送第一幀OTA數據報文,并隨機指定Slave節點的響應跳頻信道ch_為32,即479.1 MHz,發送之后設置Master節點在479.1 MHz等待接收Slave節點的回復報文,等待延時260 ms后Master報文接收成功。

Master節點依次發送至最后一幀OTA數據報文,Slave節點均正常響應。此時,Slave節點重啟進入BootLoader引導程序,執行固件還原操作,校驗新固件MD5,并將該新固件寫入APPB_Flash區進行備份,程序跳轉至APPA_Flash區,正確執行,OTA升級完畢。多次測試結果見表2所列,成功率為100%。

表2 OTA升級結果

6 結 語

本文提出了用于LoRa通信的OTA差分升級方案,通過Bsdiff差分和FastLz77壓縮進一步減小了固件的體積以適應LoRa低速率傳輸場景。為避免對現有業務信道的傳輸沖突,使用LoRa跳頻和循環異或加密方式對固件傳輸信道和固件數據包進行優化,顯著提高了固件升級的成功率。驗證結果表明,本方案適用于LoRa“點對點”通信場景下的固件升級應用。

猜你喜歡
信息
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
信息超市
大眾創業(2009年10期)2009-10-08 04:52:00
展會信息
展會信息
展會信息
展會信息
展會信息
信息
建筑創作(2001年3期)2001-08-22 18:48:14
健康信息
祝您健康(1987年3期)1987-12-30 09:52:32
主站蜘蛛池模板: 成人毛片免费在线观看| 久久综合一个色综合网| 制服无码网站| 亚洲精品成人福利在线电影| 狠狠ⅴ日韩v欧美v天堂| 久久99国产精品成人欧美| 99久久亚洲精品影院| 国产一区二区三区免费| 一区二区三区精品视频在线观看| 亚洲人成网址| 国产精品亚欧美一区二区| 亚洲午夜久久久精品电影院| 国产黄视频网站| 99九九成人免费视频精品| 欧美成人午夜在线全部免费| 国产一级裸网站| 91午夜福利在线观看精品| 国产玖玖玖精品视频| 亚洲熟妇AV日韩熟妇在线| 人人91人人澡人人妻人人爽| 美女潮喷出白浆在线观看视频| 黄色污网站在线观看| 91无码国产视频| 久久综合色播五月男人的天堂| 亚洲综合香蕉| 久久亚洲日本不卡一区二区| 亚洲日产2021三区在线| 久久中文电影| 日韩精品中文字幕一区三区| 国产在线视频福利资源站| 在线精品自拍| 欧美精品成人一区二区在线观看| 国模视频一区二区| 国产第一色| 456亚洲人成高清在线| 欧美在线观看不卡| 国产精品美女网站| 日本一区中文字幕最新在线| 国产精品久久久精品三级| AV不卡无码免费一区二区三区| 国产黑丝视频在线观看| 亚洲性日韩精品一区二区| 亚洲区第一页| 亚洲成网站| 在线观看精品自拍视频| 国产在线无码av完整版在线观看| 高清不卡毛片| 色偷偷男人的天堂亚洲av| 国产精品污视频| 久久久久人妻一区精品| 91综合色区亚洲熟妇p| 国产一级无码不卡视频| 色偷偷一区| 婷婷综合色| 久996视频精品免费观看| 亚洲一区波多野结衣二区三区| 四虎永久免费在线| 欧美成人精品在线| 激情五月婷婷综合网| 亚洲区欧美区| 波多野结衣一二三| 99久久精品国产麻豆婷婷| 色综合久久88色综合天天提莫| 人人91人人澡人人妻人人爽| 欧美国产日韩在线| 第一页亚洲| 国产杨幂丝袜av在线播放| 国产亚洲精品自在久久不卡| 久久一本日韩精品中文字幕屁孩| 国产精品亚洲va在线观看| 动漫精品啪啪一区二区三区| 亚洲欧美日韩中文字幕一区二区三区| 国产成人1024精品下载| 日韩不卡高清视频| 日本免费新一区视频| 亚洲欧美综合精品久久成人网| 国产乱子伦精品视频| 国产色婷婷| 亚洲综合婷婷激情| 无码一区中文字幕| 久久这里只有精品国产99| 亚洲天堂日韩av电影|