色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

簡述物聯網設備OTA軟件升級之:完全升級和增量升級

安芯教育科技 ? 來源:IOT物聯網小鎮 ? 作者:道哥 ? 2021-09-24 15:08 ? 次閱讀

各位看官好,上一篇文章我們聊了一下關于 OTA 升級過程中,新的軟件包是如何從開發者電腦上,安全的下載嵌入式設備中的。

這個流程似乎很簡單,不就是下載一個文件而已嘛,怎么還值得寫成一篇文章呢?

其實這不僅僅是下載文件這么簡單,這其中涉及到如何對眾多的終端設備進行批量升級的策略問題。

如果你親自在 AWS 的平臺上操刀一次,就知道這其中有很多細節問題是需要考慮的。

一失足成千古恨哪!一旦設備升級策略忽略了一個小細節,也許某一天就是我們的深淵!

包括產品的生產過程也是如此,那些踩過的坑,真是一把鼻涕一把淚,這個問題后面有時間專門寫一篇。

今天,我們繼續 OTA 升級過程中后續的階段。

還記得我們之前的假設嗎?

設備中正在執行的 V1 版本的程序,包括這 3 個文件,它們位于文件系統中的 /root/app 目錄下:

main: 主程序;

config.ini: 配置文件(包括一個配置項:version=V1_0);

mylib.so: 實現了某個算法的動態庫,被 main 程序調用;

現在,新的版本 V2 優化了算法,壓縮包名稱是 app_V2.0.tgz,其中包括文件:

main: 沒有變化;

config.ini: 配置項修改了:version=V2_0;

mylib.so: 優化了算法,主要就是想升級這個動態庫;

upgrade.sh: 一個腳本程序,新增的文件;

升級包 app_V2.0.tgz 已經被下載到設備本地的文件系統中了,假設解壓到目錄 /root/upgrade 中。

現在需要做的事情就是:新版本程序,去替代 /root/app 目錄中的舊版本程序。

upgrade.sh 升級腳本

我們首先要明白一個問題:執行升級指令、下載壓縮包,都是此刻正在執行的 main 程序來執行的。

如果把復制替換的操作也讓 main 程序來執行的話,肯定是會出問題的:它不可能去復制一個新的 main 文件,來把自己替換掉!

寫過單片機程序的小伙伴肯定都知道:當新的固件下載到 flash 之后,一般都是重新啟動設備,然后由 bootloader 來執行具體的文件復制操作。

那么對于帶有文件系統的設備來說,也可以模仿類似的操作方式。

比如:當設備重新啟動后,當執行 /etc/rc.local 時,此時 main 應用程序還沒有啟動。

此時就可以在 rc.local 這個文件中去做升級操作。

但是這樣的方式,相當于是輕微的侵入了操作系統,總感覺這樣做不太好。

此刻, upgrade.sh 升級腳本開始登場了!

這個腳本文件的主要作用就是用來控制升級過程。

這里隱藏這一個很重要的思想:upgrade.sh 是放在升級包中的,它并沒有固化在終端設備中。

這樣的話,每次執行升級任務時,都可以根據本次的升級需要,來靈活的編寫升級腳本。

換句話說:只要能保證升級的通道沒有問題,那么升級的過程就完全由這個腳本文件來控制,你想怎么搞,就怎么搞!

完全升級

所謂的完全升級,就是把舊版本的程序全部丟棄,把升級包中的新程序全部復制過去。

此時,升級腳本文件 upgrade.sh 就完成下面這幾個主要工作:

停止(kill)當前正在執行的 V1.0 版本的程序;

刪除 /root/app 目錄下的所有舊文件;

把升級包中所有的新版本文件 /root/upgrade/* 復制到 /root/app 目錄下;

這樣的完全升級方式是最無腦、最粗魯的。

當然,還有一些細節問題是需要考慮的。比如:如果復制文件過程中出現錯誤怎么辦?

還有一點,既然剛才提到了配置文件 config.ini,不知您是否會有這樣一個疑問:

如果配置信息被用戶修改了,那么升級之后,所有的配置信息又被恢復為默認值了,用戶的私人配置信息全丟了怎么辦?

關于這個問題,我們就繼續來聊一下增量升級!

增量升級

所謂的增量升級:就是升級時并不會把所有的文件全部進行替換,而只是替換那些需要更新的文件。

對于我們假設的升級場景,只需要做 2 件事情:

替換 mylib.so 庫文件;

把配置文件 config.ini 中的版本字段修改為:version=V2_0;

同樣的,所有的升級過程仍然是寫在 upgrade.sh 這個升級腳本中:

停止(kill)當前正在執行的 V1.0 版本的程序;

把 /root/upgrade/mylib.so 文件復制到 /root/app 目錄下;

使用 sed 命令來修改 config.ini 文件中的 version 字段;

PS:此時升級包中,只需要包含必要的文件就可以了,不需要把其他用不到的文件也放進去了。

從我描述的文字來看,似乎完全升級和增量升級差別不大。

這是因為這里的示例太簡單,如果是一個比較復雜的、有多個模塊相互配合的應用程序,增量升級的優勢就明顯了。

關于 OTA 升級過程,就先說這么多了,主要是以思想為主,畢竟每一個項目的需求場景是不一樣的,從大方向上明白 OTA 的升級過程就可以了。

One more thing

后臺提供一個很多年前項目中的升級腳本文件模板。

作者|道哥

轉自|IOT物聯網小鎮

編輯:jq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • OTA
    OTA
    +關注

    關注

    7

    文章

    586

    瀏覽量

    35331
  • 腳本
    +關注

    關注

    1

    文章

    391

    瀏覽量

    14916
  • AWS
    AWS
    +關注

    關注

    0

    文章

    433

    瀏覽量

    24434

原文標題:技術分享 | 物聯網設備OTA軟件升級之:完全升級和增量升級

文章出處:【微信號:Ithingedu,微信公眾號:安芯教育科技】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    OTA軟件升級管理系統

    OTA(Over-the-Air Technology,空中下載技術)是通過空中下載的方式對車輛中的軟件進行遠程升級。經緯恒潤OTA軟件
    的頭像 發表于 01-13 09:39 ?89次閱讀
    <b class='flag-5'>OTA</b><b class='flag-5'>軟件</b><b class='flag-5'>升級</b>管理系統

    OTA升級】無需數據線,一條命令即可完成固件升級

    OTA無線升級過程視頻演示:OTA介紹OTA(Over-The-Air,空中升級)是一種通過無線通信技術實現遠程更新
    的頭像 發表于 12-11 01:00 ?1058次閱讀
    【<b class='flag-5'>OTA</b><b class='flag-5'>升級</b>】無需數據線,一條命令即可完成固件<b class='flag-5'>升級</b>!

    聯網中的Fota是什么,如何使用HTTP來給設備升級

    一 概述 FOTA(Firmware Over-The-Air)移動終端的空中下載軟件升級,指通過云端升級技術,為具有連網功能的設備提供固件升級
    的頭像 發表于 09-25 14:35 ?850次閱讀
    <b class='flag-5'>物</b><b class='flag-5'>聯網</b>中的Fota是什么,如何使用HTTP來給<b class='flag-5'>設備</b><b class='flag-5'>升級</b>

    S3N8R16工程代碼里面只要調用了wifi、藍牙、mqtt等相關接口,編譯出來的固件拿去ota升級升級不了,為什么?

    碰到個很奇怪的現象,我的工程代碼里面只要調用了wifi、藍牙、mqtt等相關接口,編譯出來的固件拿去ota升級升級不了,沒有調用就能正常升級,一直搞不懂是什么原因,有dalao遇
    發表于 07-19 07:31

    OTA升級后重啟,printf日志錯誤的原因?

    OTA升級后重啟,printf日志錯誤。
    發表于 07-18 06:26

    ESP8266 OTA升級失敗的原因?

    我正在使用自定義服務器來升級 esp8266。我可以從服務器下載圖像,但總是升級失敗。 我將以下.bin文件下載到閃存中(下載前,我擦除整個閃存): ------------ 2 MByte
    發表于 07-11 07:45

    ESP8266 OTA升級不成功的原因?

    我正在使用最新的 RTOS SDK 版本 1.5 ESP8266。我使用自定義服務器進行OTA升級。 有時 OTA 升級成功,有時即使閃爍了正確的圖像,
    發表于 07-10 06:14

    如何在ESP8266上運行OTA升級

    在 ESP8266 (ESP-12F) 上運行 OTA 升級
    發表于 07-10 06:13

    esp-ali-smartliving SDK功能OTA升級失敗的原因?

    ,使用阿里生活物聯網平臺OTA升級失敗,提示:Not digestSign key in json doc of OTA,如下圖 請問如何解決呢?
    發表于 06-28 08:50

    ESP-IDF是否支持基于BLE的OTA升級

    節點需要切換到WiFi才能完成HTTP升級,ESP-IDF是否支持基于BLE的OTA升級
    發表于 06-12 07:49

    ESP-IDF4.4 OTA升級失敗的原因?

    ESP-IDF4.4 OTA 功能,在啟動OTA功能后下載固件過程中出現wifi無Internet訪問,然后很快網絡恢復,需要等待很久后OTA升級失敗。
    發表于 06-06 08:19

    通過RK3568開發板進行OTA本地程序升級

    說起OTA我們應該都不陌生,它是一種可以為設備無損失升級系統的方式,能將新功能遠程部署到產品上。我們不僅可以通過網絡下載OTA升級包,也可以
    發表于 04-20 11:23

    技術帖 | RK3568開發板的OTA升級教程

    說起OTA我們應該都不陌生,它是一種可以為設備無損失升級系統的方式,能將新功能遠程部署到產品上。我們不僅可以通過網絡下載OTA升級包,也可以
    的頭像 發表于 04-20 08:01 ?1701次閱讀
    技術帖 | RK3568開發板的<b class='flag-5'>OTA</b><b class='flag-5'>升級</b>教程

    汽車ota升級有什么用 汽車ota功能有必要嗎

    汽車OTA(Over-The-Air)升級是指通過無線網絡進行汽車軟件系統的遠程更新和升級。傳統上,汽車的軟件系統需要通過專門的
    的頭像 發表于 02-18 14:39 ?1410次閱讀

    ota升級是什么意思 ota升級有什么用

    OTA(Over-the-Air)升級是指通過無線網絡,將軟件、固件或系統的新版本傳輸到支持的設備上進行更新和安裝的過程。這一技術廣泛應用于手機、智能電視、汽車等各類智能
    的頭像 發表于 02-02 10:25 ?5663次閱讀
    主站蜘蛛池模板: 亚瑟天堂久久一区二区影院| 日韩欧美一级| a国产成人免费视频| 亚洲最大在线视频| 亚洲AV 无码AV 中文字幕| 最近韩国HD免费观看国语| 69成人免费视频| 99在线视频免费观看视频| 国产人妻人伦精品熟女麻豆| 国产在线亚洲精品观看不卡| 精品亚洲午夜久久久久| 久久伊人电影| 欧美xxxxx18| 天美麻豆成人AV精品视频| 特级aa 毛片免费观看 | 吃春药后的女教师| 国产av在线播放| 后入到高潮免费观看| 快穿之诱受双性被灌满h| 视频一区国产精戏刘婷30| 亚洲精品天堂无码中文字幕影院| 一区二区三区福利视频| 2017年伦理片免费观看| 被老头下药玩好爽| 好大好爽CAO死我了BL| 入禽太深在线观看免费高清| 亚洲高清视频一区| 中国人泡妞xxxxxxxx19| 憋尿调教绝望之岛| 巨污全肉np一女多男| 亚洲男人在线观看| pkf女尸studiosxnxx| 国产喷水1区2区3区咪咪爱AV| 强奷漂亮女老板在线播放| 神马电影dy888午夜我不卡| 99热这里只有精品6| 麻豆第一区MV免费观看网站| 日本漂亮妈妈7观整有限中| 亚洲人成电影网站色2017| 国产精品国产三级国产an | 伊人影院网|