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

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

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

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

CPUInit函數(shù)

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