0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于BSDIFF差分算法在TLZ210中控屏的實(shí)現(xiàn)

冬至子 ? 來(lái)源:Tianlair工作室 ? 作者:落霞天 ? 2023-05-19 17:11 ? 次閱讀

1、 背景

因項(xiàng)目原因,需要開(kāi)發(fā)差分FOTA升級(jí)功能,差分升級(jí)優(yōu)點(diǎn)是節(jié)省OTA傳輸數(shù)據(jù)量,非常適合LoRa,Zigbee等小無(wú)線升級(jí)場(chǎng)景,節(jié)省功耗等。

2、 原理

首先設(shè)備開(kāi)機(jī)從boot跳轉(zhuǎn)到app,當(dāng)接收到來(lái)自無(wú)線的升級(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é)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • ZigBee技術(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    115

    瀏覽量

    42344
  • ROM
    ROM
    +關(guān)注

    關(guān)注

    4

    文章

    549

    瀏覽量

    85580
  • OTA
    OTA
    +關(guān)注

    關(guān)注

    7

    文章

    560

    瀏覽量

    35066
  • LoRa模塊
    +關(guān)注

    關(guān)注

    5

    文章

    115

    瀏覽量

    13834
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何去實(shí)現(xiàn)基于單片機(jī)的分升級(jí)

    算法有開(kāi)源的bsdiff,壓縮算法也有開(kāi)源的單片機(jī)就能用的,把這兩個(gè)結(jié)合起來(lái)放單片機(jī)里就可以實(shí)現(xiàn)
    發(fā)表于 11-19 06:14

    怎樣采用開(kāi)源算法BSDIFF實(shí)現(xiàn)數(shù)據(jù)的分化呢

    怎樣采用開(kāi)源算法BSDIFF實(shí)現(xiàn)數(shù)據(jù)的分化呢?如何去實(shí)現(xiàn)呢?
    發(fā)表于 02-10 06:14

    基于演化算法的PID參數(shù)優(yōu)化算法

    PID 參數(shù)優(yōu)化是自動(dòng)控制領(lǐng)域研究的一個(gè)重要問(wèn)題. 提出了一種演化算法的PID參數(shù)優(yōu)化算法, 同時(shí), 為了增強(qiáng)算法的易用性, 對(duì)
    發(fā)表于 06-20 10:19 ?25次下載

    對(duì)Rijndael的JAVA攻擊與防范

    本文探討了對(duì)Rijndael算法的各種攻擊,介紹了一種對(duì)Rijndael算法攻擊的JAVA實(shí)現(xiàn),提出了幾種防范對(duì)Rijndael
    發(fā)表于 08-22 10:06 ?14次下載

    基于遺傳加算法的云計(jì)算任務(wù)調(diào)度

    基于遺傳加算法的云計(jì)算任務(wù)調(diào)度
    發(fā)表于 01-07 21:28 ?0次下載

    (Xilinx)FPGALVDS高速傳輸?shù)?b class='flag-5'>實(shí)現(xiàn)

    (Xilinx)FPGALVDS高速傳輸?shù)?b class='flag-5'>實(shí)現(xiàn)
    發(fā)表于 03-01 13:12 ?66次下載

    基于隱私的軌跡模式挖掘算法

    針對(duì)現(xiàn)有基于隱私的頻繁軌跡模式挖掘算法全局敏感度過(guò)高、挖掘結(jié)果可用性較低的問(wèn)題,提出一種基于前綴序列格和軌跡截?cái)嗟?b class='flag-5'>差隱私下頻繁軌跡模式
    發(fā)表于 11-25 11:38 ?0次下載
    基于<b class='flag-5'>差</b><b class='flag-5'>分</b>隱私的軌跡模式挖掘<b class='flag-5'>算法</b>

    基于密度的自動(dòng)聚類(lèi)算法

    聚類(lèi)作為無(wú)監(jiān)督學(xué)習(xí)技術(shù),已在實(shí)際得到了廣泛的應(yīng)用,但是對(duì)于帶有噪聲的數(shù)據(jù)集,一些主流算法仍然存在著噪聲去除不徹底和聚類(lèi)結(jié)果不準(zhǔn)確等問(wèn)題.本文提出了一種基于密度的自動(dòng)聚類(lèi)
    發(fā)表于 12-18 11:16 ?0次下載

    基于雙變異策略的骨架算法

    骨架分進(jìn)化算法能夠較好規(guī)避分進(jìn)化算法控制參數(shù)和變異策略選擇問(wèn)題。針對(duì)基于雙變異策略的經(jīng)典骨架
    發(fā)表于 01-16 16:08 ?0次下載

    面向隨機(jī)森林的隱私保護(hù)算法

    提出一種基于隨機(jī)森林的隱私保護(hù)算法DiffPRFs,每一棵決策樹(shù)的構(gòu)建過(guò)程采用指數(shù)機(jī)制選擇分裂點(diǎn)和分裂屬性,并根據(jù)拉普拉斯機(jī)制添加噪
    發(fā)表于 02-08 17:10 ?3次下載

    如何使用隱私保護(hù)進(jìn)行譜聚類(lèi)算法

    ,干擾樣本個(gè)體之間的權(quán)重值,實(shí)現(xiàn)樣本個(gè)體間的信息隱藏以達(dá)到隱私保護(hù)的目的。通過(guò)UCI數(shù)據(jù)集上的仿真實(shí)驗(yàn),表明該算法能夠一定的信息損失度范圍內(nèi)實(shí)現(xiàn)
    發(fā)表于 12-14 10:54 ?11次下載
    如何使用<b class='flag-5'>差</b><b class='flag-5'>分</b>隱私保護(hù)進(jìn)行譜聚類(lèi)<b class='flag-5'>算法</b>

    基于單片機(jī)的分升級(jí)

    算法有開(kāi)源的bsdiff,壓縮算法也有開(kāi)源的單片機(jī)就能用的,把這兩個(gè)結(jié)合起來(lái)放單片機(jī)里就可以實(shí)現(xiàn)
    發(fā)表于 11-12 21:06 ?11次下載
    基于單片機(jī)的<b class='flag-5'>差</b>分升級(jí)

    探頭mipi測(cè)試的應(yīng)用

    探頭是一種廣泛應(yīng)用于電子測(cè)試領(lǐng)域的測(cè)試工具。MIPI(Mobile Industry Processor Interface)是由一組移動(dòng)行業(yè)領(lǐng)先公司聯(lián)合開(kāi)發(fā)的一種高效的串行總線協(xié)議。移動(dòng)設(shè)備的生產(chǎn)和測(cè)試
    的頭像 發(fā)表于 05-31 09:59 ?888次閱讀
    <b class='flag-5'>差</b><b class='flag-5'>分</b>探頭<b class='flag-5'>在</b>mipi測(cè)試<b class='flag-5'>中</b>的應(yīng)用

    高頻靈活定制-存儲(chǔ)與計(jì)算 可編程振蕩器YSO210PR應(yīng)用于服務(wù)器與大數(shù)據(jù)

    可編程振蕩器 YSO210PR機(jī)器人的智能視覺(jué)控制、工業(yè)、望遠(yuǎn)鏡等領(lǐng)域具有顯著優(yōu)勢(shì)。其高精度、穩(wěn)定性和靈活的定制特性使得YSO
    的頭像 發(fā)表于 01-03 17:14 ?382次閱讀
    高頻靈活定制-存儲(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ù)

    可編程晶振YSO210PR滿足電子通信行業(yè)多種應(yīng)用解決方案

    到線路轉(zhuǎn)換)領(lǐng)域是現(xiàn)代通信系統(tǒng)必不可少的一環(huán),而可編程振蕩器則是該領(lǐng)域中的重要組成部分。它能夠提供穩(wěn)定可靠的時(shí)鐘信號(hào),確保數(shù)據(jù)的準(zhǔn)確傳輸和同步。高速通信的背景下,YSO
    發(fā)表于 08-05 10:45 ?0次下載