1、 背景
因項(xiàng)目原因,需要開(kāi)發(fā)差分FOTA升級(jí)功能,差分升級(jí)優(yōu)點(diǎn)是節(jié)省OTA傳輸數(shù)據(jù)量,非常適合LoRa,Zigbee等小無(wú)線(xiàn)升級(jí)場(chǎng)景,節(jié)省功耗等。
2、 原理
首先設(shè)備開(kāi)機(jī)從boot跳轉(zhuǎn)到app,當(dāng)接收到來(lái)自無(wú)線(xiàn)的升級(jí)請(qǐng)求后,進(jìn)行差分包下載,下載成功把ROM標(biāo)志位置于某個(gè)值。然后設(shè)備重啟進(jìn)入boot。boot啟動(dòng)會(huì)進(jìn)入差分升級(jí)分支,先解壓差分包,然后程序運(yùn)行差分算法,把APP分區(qū)和剛剛解壓的差分包進(jìn)行融合處理還原出新的固件包,并做更新。更新成功再重啟,即可。
3、 操作流程
3.1 差分升級(jí)包制作
確保設(shè)備先運(yùn)行老固件,然后分別打包兩個(gè)bin固件。導(dǎo)入舊版本選擇已經(jīng)運(yùn)行的老固件,導(dǎo)入新版本選擇將要升級(jí)或降級(jí)的固件。然后選擇差分文件打包。
原包:Tl-Z214_CTRL_SCR_1.0.0.406_20230311.bin
原包固件啟動(dòng)正常,編譯于2023-03-11 12:27:22
升級(jí)包:Tl-Z214_CTRL_SCR_1.0.0.406_20230305.bin
升級(jí)包固件啟動(dòng)正常,編譯于2023-03-05 14:39:35
差分包制作
差分升級(jí)包制作成功,并生成pach.bin文件。
3.2 APP下載差分升級(jí)包
使用JFlash工具燒錄patch.bin文件到指定地址0x08011000模擬APP下載。
3.3 重啟進(jìn)入bootloader
發(fā)送shell命令 dbg diffota,程序?qū)裄OM啟動(dòng)標(biāo)志位置為差分升級(jí)標(biāo)志,并重啟進(jìn)入boot。
3.4 解壓差分包并運(yùn)算差分算法還原新固件
3.5 校驗(yàn)新還原固件
校驗(yàn)還原的文件和新固件對(duì)不上,通過(guò)Jlink回讀數(shù)據(jù),用beyond工具比對(duì),發(fā)現(xiàn)步驟3.4的確有微小差異。
串口打印crc校驗(yàn)錯(cuò)誤
Jlink回讀數(shù)據(jù)和原始對(duì)不上
下載到設(shè)備的查分包和原始是一致的
有可能是解壓有問(wèn)題,打印出來(lái)看看解壓的數(shù)據(jù),在排查差分算法的問(wèn)題。
最后一步解壓狀態(tài)可能不對(duì)
對(duì)比差分算法還原的內(nèi)容,顯示是flash寫(xiě)的問(wèn)題。
3.6 拷貝新固件至APP運(yùn)行分區(qū)并置位
不要拷貝新固件分區(qū),直接擦寫(xiě)APP運(yùn)行區(qū),節(jié)省flash。
3.7 重啟檢查差分升級(jí)是否成功
差分升級(jí)成功
差分降級(jí)成功
4、 常見(jiàn)問(wèn)題
FAQ1 差分算法還原的新固件和原始固件有細(xì)微差異,差異是兩個(gè)字節(jié)FFFF?
答:是由于flash每次只能寫(xiě)4個(gè)字節(jié)導(dǎo)致。
FAQ2 差分升級(jí)報(bào)fsl err錯(cuò)?
答:是由于寫(xiě)flash的地址必須是偶數(shù)。
FAQ3 差分升級(jí)還原的新固件和原始固件還是對(duì)不上,有細(xì)微差異,差異是一個(gè)字節(jié)FF?
答:需要記住最后一個(gè)字節(jié)。
-
ZigBee技術(shù)
+關(guān)注
關(guān)注
3文章
115瀏覽量
42500 -
ROM
+關(guān)注
關(guān)注
4文章
575瀏覽量
86032 -
OTA
+關(guān)注
關(guān)注
7文章
588瀏覽量
35405 -
LoRa模塊
+關(guān)注
關(guān)注
5文章
136瀏覽量
14023
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
如何去實(shí)現(xiàn)基于單片機(jī)的差分升級(jí)
怎樣采用開(kāi)源算法BSDIFF實(shí)現(xiàn)數(shù)據(jù)的差分化呢
基于差分演化算法的PID參數(shù)優(yōu)化算法
對(duì)Rijndael的JAVA差分攻擊與防范
(Xilinx)FPGA中LVDS差分高速傳輸?shù)?b class='flag-5'>實(shí)現(xiàn)
基于差分隱私的軌跡模式挖掘算法
![基于<b class='flag-5'>差</b><b class='flag-5'>分</b>隱私的軌跡模式挖掘<b class='flag-5'>算法</b>](https://file.elecfans.com/web2/M00/49/67/poYBAGKhwK6ACdq2AAAdO35S9zI017.jpg)
基于密度差分的自動(dòng)聚類(lèi)算法
基于雙變異策略的骨架差分算法
面向隨機(jī)森林的差分隱私保護(hù)算法
如何使用差分隱私保護(hù)進(jìn)行譜聚類(lèi)算法
![如何使用<b class='flag-5'>差</b><b class='flag-5'>分</b>隱私保護(hù)進(jìn)行譜聚類(lèi)<b class='flag-5'>算法</b>](https://file.elecfans.com/web1/M00/7E/08/o4YBAFwTHvGAWSJHAAA_TR9WZo0537.png)
基于單片機(jī)的差分升級(jí)
![基于單片機(jī)的<b class='flag-5'>差</b>分升級(jí)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
差分探頭在mipi測(cè)試中的應(yīng)用
![<b class='flag-5'>差</b><b class='flag-5'>分</b>探頭<b class='flag-5'>在</b>mipi測(cè)試<b class='flag-5'>中</b>的應(yīng)用](https://file1.elecfans.com//web2/M00/88/E6/wKgZomR2qeWAMp-tAABo2XJq3no64.jpeg)
高頻靈活定制-存儲(chǔ)與計(jì)算 可編程差分振蕩器YSO210PR應(yīng)用于服務(wù)器與大數(shù)據(jù)
![高頻靈活定制-存儲(chǔ)與計(jì)算 可編程<b class='flag-5'>差</b><b class='flag-5'>分</b>振蕩器YSO<b class='flag-5'>210</b>PR應(yīng)用于服務(wù)器與大數(shù)據(jù)](https://file1.elecfans.com/web2/M00/BA/B6/wKgZomWVJYmAchj6AABSsxBNGds815.png)
評(píng)論