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

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

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

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

CPUInit函數(shù)

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

晶華微SD93F115B遠(yuǎn)程升級(jí)應(yīng)用方案
評(píng)論