成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

設備OTA空中升級原理

開發 前端
沒有完美的軟件,因為設計缺陷、業務需求更新,軟件始終都在不斷升級完善。新軟件如何替換正在運行的舊軟件就是本文關注的重點,尤其是針對電子產品,設備空中升級OTA,受限于硬件資源,需要選擇不同的方案進行軟件升級。

[[395408]]

1. 背景

沒有完美的軟件,因為設計缺陷、業務需求更新,軟件始終都在不斷升級完善。新軟件如何替換正在運行的舊軟件就是本文關注的重點,尤其是針對電子產品,設備空中升級OTA,受限于硬件資源,需要選擇不同的方案進行軟件升級。

2. 空中升級流程

在線升級流程,簡化就是設備運行舊軟件的同時,獲取新軟件包,再執行特殊操作使用新軟件覆蓋舊軟件,最后運行新軟件。圖片根據硬件資源和系統整體框架,選擇不同的升級方案,方案需要結合實際選擇最佳的,技術層面是次要的。

3. 空中升級的方案

3.1. 整包升級

以STM8單片機升級為例,單片機最小系統運行流程如下:圖片要加入在線升級功能,就需要將主應用程序拆分,類似有2套程序在設備內運行,標準稱呼是bootload+app,其中bootload始終不變,它接收新軟件包并覆蓋app區域。

硬件限制 解決方案
單片機自身沒有網絡連接功能,只能基于外掛的網絡模塊從遠端服務器下載新軟件包,再通過串口傳輸給單片機 由外掛主機下載新軟件包,并通知單片機進入升級模式
單片機內部RAM小,不能進行復制運算或者緩存大量數據;單片EEPROM小,不能保存完整的新軟件包 只能在Bootload期間分段接收新軟件并立刻寫入flash

整體方案如下圖:

難點與風險

單片機在app收到升級請求,需要重啟進入bootload,對于以單片機為主控的設備,需要保證單片機重啟期間網絡模塊不斷電,所以因升級進入bootload要立刻恢復網絡模塊主機供電,必要時需要硬件支持。

單片機ram和rom有限,采用分段接收新軟件包,直接寫入flash,因此在應用層協議上需要確保數據包不會錯誤或遺漏或重發,目前采用Ymodem協議居多。升級包需要轉成bin文件,單片機接收后寫到app的起始地址。

單片機分段接收后寫入flash,整個過程需要10秒以上,期間如果斷電,單片機軟件的app處于損壞狀態,需要單片機有超時機制重啟,再次開啟升級并主動要求網絡模塊重傳新軟件包。

一般PC軟件無需考慮內存和存儲空間,也是采用整包升級,兩個文件同時保存。例如app.exe運行時下載新的app_new.exe,下載校驗后,app.exe自毀刪除自身,然后將app_new.exe重命名為app.exe并啟動。

3.2. 差分升級

差分升級軟件框架同整包升級一樣,區別在于新軟件包的提供方式不同。

單片機軟件一般不超過50KB,復雜微處理器的軟件一般都比較大,但其RAM也大,下載完整的新軟件包耗時長且浪費流量,因此可以基于新舊兩版軟件的差異,將差異文件傳給設備,由設備運算還原出新軟件包升級。

難點與風險

差分包的制作與還原算法驗證,在bootload還原出新軟件包時考慮到RAM,差分包是按塊生成,還原也是按塊執行,每塊新軟件寫入前,需要先備份舊塊,防止異常斷電無法還原。圖片萬一出現異常,重啟還是進入bootlaod,查詢上次已經還原到第幾塊,繼續后面操作。有些為了再次減小差分包大小,還會對文件進行壓縮,還原前先解壓。

升級時,必須保證生成的差分包是基于當前設備內運行的版本,如設備運行V01,但是提供的差分包卻是基于V02到V03的,則會導致異常。或者在文件中預設特殊版字符,版本匹配才進行差分還原升級。而整包沒有該缺點,只要bootlaod正常,任意app軟件版本可以互相升級。

3.3. 動態加載

動態加載在PC軟件中很常見,多個exe可執行文件共用dll庫文件,這樣exe文件很小,缺點是要保證exe正常運行,需要在指定的路徑下存放dll文件。圖片對嵌入式平臺,動態加載的可以理解為始終保持底層基礎框架不變,修改或替換不同的上層業務邏輯,實現不同的效果。為保證底層和上層之間調用關系,必須固定部分接口地址,也就是兩者中間的接口映射,主要通過鏈接實現。圖片嵌入式軟件從源碼到可下載到設備的映像文件,需要經過的步驟:圖片動態加載就是在鏈接階段,將上層代碼obj編譯成axf可動態加載的文件,而不是直接與其他obj合并成可執行文件。主要是使用armlink配置-entry指定映像文件的初始入口點或者在代碼中使用#pragma arm section code關鍵字,保證動態的上層有固定的入口地址。凡是上層調用的底層接口,在編譯階段函數體指針都賦為空指令保證編譯,后續再指向底層的真實地址。圖片

其作用發生在系統啟動階段,從flash加載到內存,整個文件內的接口相對地址不變,整體偏移。這樣,軟件還是可以計算獲取動態映像文件的入口地址。加載到內存區域,需確保該區域不會被占用,否則內存覆蓋肯定會導致異常。

底層啟動后,只能查到動態加載文件的入口函數,但實際底層與上層交互的接口肯定不止一個,而且上層也必然會調用底層接口,這就需要在第一個明確地址的函數體內實現上下層地址映射。這里有2種方案,一種是函數指針賦值,一種是根據字符串查找。底層需要給上層調用的接口,底層映射接口函數指針表,按固定順序賦值給上層函數指針;或者底層只提供上層一個函數,但是改函數體內查字符串獲取函數指針。這樣實現上層調用事先固定的底層接口。

上層給底層提供的接口,也是提前固定的函數指針,也用上面的方法對接。接口映射的核心是動態加載塊有一個函數的地址是鏈接時指定的,在這個函數內實現上下層函數映射。除函數外,全局變量也是同樣的使用指針傳遞。

難點與風險

前面2種使用bootload+app的方案,屬于比較常規的方案,其本質是一塊芯片運行2套互不干擾的軟件,而動態加載的上下層之間有固定的接口,不能使用接口以外的交互。

動態加載對鏈接和arm底層要求高,在升級方向應用較少,因為對軟件開發接口使用存在限制,但動態加載實現了上下層隔離,避免代碼調用混亂,也為跨平臺、多語言開發提供了基礎。

4. 結論

 

在線升級為了產品在不召回的情況下,以較低的成本解決售后問題;升級是為了解決問題,但是一旦失敗則可能導致設備變磚。前期測試應選擇不同設備模擬升級異常,如強制斷電或軟件包異常,設備必須有自我恢復的機制。

本文轉載自微信公眾號「嵌入式系統」,可以通過以下二維碼關注。轉載本文請聯系嵌入式系統公眾號。

 

責任編輯:武曉燕 來源: 嵌入式系統
相關推薦

2021-06-02 07:58:58

物聯網設備OTA

2022-04-08 11:39:26

OTA操作說明鴻蒙

2021-05-31 07:49:58

物聯網OTA軟件

2022-02-07 16:18:03

智能汽車技術

2023-04-27 16:09:33

iOS蘋果

2022-01-17 11:22:35

ADAS通用汽車

2021-09-07 15:04:02

小鵬汽車語音助手人工智能

2020-05-18 10:27:06

框架EB級系統

2019-11-20 18:47:26

物聯網OTA軟件

2019-08-01 12:29:05

空中固件更新物聯網IOT

2019-01-24 08:16:42

空中固件物聯網IOT

2022-10-24 16:03:13

2022-08-24 14:21:52

OTA物聯網工業物聯網

2011-12-17 22:32:57

Android 4.0

2018-06-12 19:23:25

偉仕佳杰

2021-06-07 07:57:16

ESP32 開發AWS 平臺OTA 升級

2014-09-10 17:26:26

LTE空中接口

2015-07-03 17:31:19

Windows 10微軟

2022-09-20 09:33:51

無線空中下載技術OTA
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 伊人精品视频 | 欧美黄色片 | 嫩草视频在线免费观看 | 精品国产一级 | 亚洲人成人一区二区在线观看 | 久久大陆| 日韩第一页 | 午夜码电影 | 999热精品视频 | 伊人久久综合 | 最新中文字幕久久 | 欧美操操操 | 日本午夜一区 | 特黄视频 | 亚洲人免费视频 | 一级片子| 成人午夜在线观看 | 中文字幕在线精品 | 国产一区二区视频在线 | 九九热精品在线 | 亚洲欧美视频 | 精品成人一区二区 | 精品久久久久久久久久久久久久 | 日韩小视频在线 | 在线观看黄免费 | 亚洲毛片在线观看 | 91精品国产手机 | 久久久久久91 | 毛片一级电影 | 亚洲一区二区免费电影 | 精品三级在线观看 | 一区免费观看 | 中国大陆高清aⅴ毛片 | 粉嫩国产精品一区二区在线观看 | 黄色福利 | 国产精品一区在线观看 | 99热精品在线观看 | 日韩在线观看视频一区 | 成人免费一区二区三区视频网站 | 亚洲国产欧美一区 | 天天拍天天插 |