SD93F115B遠程升級應用方案
01概述
在傳統嵌入式開發中,固件在設備出廠時即被固化,其生命周期的功能也隨之被定格。這導致任何后續的功能迭代、優化都無法有效部署,極大地限制了產品市場的競爭力。遠程對設備的固件進行更新可以持續為用戶提供新功能和體驗,降低運維成本和潛在風險。因此,遠程升級功能是嵌入式設備中的核心基礎功能。
02方案介紹
SD93F115B的Flash一共有120K,將這120K分為3個區域,Bootloader分12K,Flag分1K,APP分107K。Bootloader是固件更新是用到的程序,Flag用于存放固件更新狀態的標志,APP是應用程序。

內存分配框架
一般狀態下,固件更新是由APP區域的代碼發起的,當APP收到固件更新命令后就可以跳轉至Bootloader區進行固件更新。如果固件更新時發生斷電或其他錯誤,再重新上電后Bootloader也會檢查當前固件以及標志位的狀態,檢查到錯誤也會執行固件更新功能。
Bootloader區的代碼用于在收到固件命令或檢查到當前固件錯誤時更新當前的固件。芯片上電后是否進行固件更新由Flag區域的標志位確定。
03方案功能說明
APP功能
APP區域主要用于編寫應用程序,當程序運行在此區域時收到固件更新命令后,其主要功能為:
更新Flag區的標志位,保證后續跳轉至Bootloader區后固件更新命令的順序執行
在收到固件更新命令后跳轉至Bootloader區,以啟動更新流程
Flag功能
Flag區不需要存儲代碼,而是專門用于記錄固件更新的狀態(例如:更新中、更新成功和更新失敗)以及固件的校驗碼等其他信息。
Bootloader功能
在芯片上電時,會先啟動Bootloader,對Flag區域進行檢查以確定當前固件是否需要升級,如果需要就跳到升級功能,等待接收新固件,否則就直接跳轉到APP執行應用程序。
在整個固件更新過程中,Bootloader會動態更新Flag區的標志位,如果因為中途斷電導致更新失敗,再次上電時,Bootloader能通過Flag區的標志位識別到當前狀態不是“更新成功”,從而再次執行固件更新功能,防止設備不能正常使用。
固件更新整體流程如下:

遠程升級流程圖
啟動文件
正常情況下芯片上電會先執行main函數,想要實現以上方案,需要修改啟動文件。將固件更新函數的執行放在main函數之前。改寫內容如下圖。

啟動文件 Startup_xxx.S
在SD93F115B的啟動文件system_SD93F115B.c中添加CPUInit函數和SystemInit函數,并在system_sd93f115b.h中聲明。以上函數需要設置在Bootloader區,以保證上電時芯片能夠正確初始化。函數內容如下圖。

CPUInit函數

SystemInit函數
04方案特點
不需要同時保存兩個版本的固件,最大化利用芯片的Flash空間;
更新失敗后可以重新更新,防止設備更新失敗后無法使用;
可以根據需要選擇固件更新的協議。
-
嵌入式
+關注
關注
5204文章
20561瀏覽量
335941 -
FlaSh
+關注
關注
10文章
1755瀏覽量
155750 -
代碼
+關注
關注
30文章
4974瀏覽量
74226 -
bootloader
+關注
關注
2文章
245瀏覽量
48215 -
遠程升級
+關注
關注
0文章
23瀏覽量
8534
原文標題:技術分享 | SD93F115B遠程升級應用方案
文章出處:【微信號:杭州晶華微,微信公眾號:杭州晶華微】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
帶32位MCU和高精度ADC的SoC產品----SD93F系列開發指南(一)
技術干貨 | 基于晶華微SD8114藍牙營養秤方案
晶華微SD8114藍牙營養秤的詳細說明
帶32位MCU和高精度ADC的SoC產品-SD93F系列開發指南(十)
技術干貨|基于SD9315設計的血壓計方案
士蘭微SD6800B 技術60瓦、1.5A 輸出 提供樣品方案
晶華微SD5820A在誤差±0.8℃數字溫度計的應用
如何去實現STM32F407+ESP8266+SD卡進行遠程固件升級呢
DC115A-B DC115A-B評估板
晶華微SD93F115八電極體脂秤方案的簡介
晶華微推出基于SD82F466芯片的HCT(Hematocrit)血糖儀方案
晶華微SD93F115B遠程升級應用方案
評論