當(dāng)前位置:首頁 > 公眾號精選 > 嵌入式云IOT技術(shù)圈
[導(dǎo)讀]大家好,我是bug菌!最近一些朋友在玩在線升級,所以這里bug菌挑選了一篇原理與實(shí)踐結(jié)合的技術(shù)文章,在stm32上實(shí)現(xiàn)還是比較詳細(xì)的,以前bug也跟大家介紹過這一塊的設(shè)計方案:【重磅】剖析MCU的IAP升級軟件設(shè)計(設(shè)計思路篇)【MCU】一種"靈活且省資源"的IAP升級方案當(dāng)然目...

大家好,我是bug菌!

最近一些朋友在玩在線升級,所以這里bug菌挑選了一篇原理與實(shí)踐結(jié)合的技術(shù)文章,在stm32上實(shí)現(xiàn)還是比較詳細(xì)的,以前bug也跟大家介紹過這一塊的設(shè)計方案:

【重磅】剖析MCU的IAP升級軟件設(shè)計(設(shè)計思路篇)

【MCU】一種"靈活且省資源"的IAP升級方案

當(dāng)然目前比較火熱的OTA升級,為了保證升級過程的權(quán)限、完整性、穩(wěn)定性等等,還需要做很多工作包括加密、壓縮等等,可能會更加復(fù)雜一點(diǎn),特別是差分升級,通過版本之間的差異來生成升級包進(jìn)行升級,一方面可以節(jié)省空間,另一方面也能夠加快升級速度,這一塊bug菌后續(xù)整理一下~

好了,下面這篇文章,大家好好學(xué)習(xí)一下:

簡介

本文主要講解在線升級IAP的基礎(chǔ)知識, 主要是針對IAP?原理分析,?分區(qū)劃分, 到代碼編寫實(shí)驗(yàn)驗(yàn)證等過程闡述這一過程. 幫助大家加深對在線升級的認(rèn)識.

1. 在線升級知識

什么是BootLoader?

BootLoader可以理解成是引導(dǎo)程序, 它的作用是啟動正式的App應(yīng)用程序. 換言之,?BootLoader是一個程序, App也是一個程序, ?BootLoader程序是用于啟動App程序的.

STM32中的程序在哪兒?

正常情況下, 我們寫的程序都是放在STM32片內(nèi)Flash中(暫不考慮外擴(kuò)Flash). 我們寫的代碼最終會變成二進(jìn)制文件, 放進(jìn)Flash中 感興趣的話可以在Keil>>>Debug>>>Memory中查看, 右邊Memory窗口存儲的就是代碼

接下來就可以進(jìn)入正題了.

進(jìn)行分區(qū)

既然我們寫的程序都會變成二進(jìn)制文件存放到Flash中, 那么我們就可以進(jìn)一步對我們程序進(jìn)行分區(qū). 我使用的是F103RB-NUCLEO開發(fā)板,他的Flash一共128頁, 每頁1K.見下圖:

以它為例, 我將它分為三個區(qū).BootLoader區(qū)、?App1區(qū)、?App2區(qū)(備份區(qū))具體劃分如下圖:

  • BootLoader區(qū)存放啟動代碼
  • App1區(qū)存放應(yīng)用代碼
  • App2區(qū)存放暫存的升級代碼

總體流程圖

  • 先執(zhí)行BootLoader程序, 先去檢查APP2區(qū)有沒有程序, 如果有就將App2區(qū)(備份區(qū))的程序拷貝到App1區(qū), 然后再跳轉(zhuǎn)去執(zhí)行App1的程序.
  • 然后執(zhí)行App1程序, 因?yàn)?code style="outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">BootLoader和App1這兩個程序的向量表不一樣, 所以跳轉(zhuǎn)到App1之后第一步是先去更改程序的向量表. 然后再去執(zhí)行其他的應(yīng)用程序.
  • 在應(yīng)用程序里面會加入程序升級的部分, 這部分主要工作是拿到升級程序, 然后將他們放到App2區(qū)(備份區(qū)), 以便下次啟動的時候通過BootLoader更新App1的程序. 流程圖如下圖所示:

2. BootLoader的編寫

本節(jié)主要講解在線升級(OTA)的BooLoader的編寫,我將以我例程的BootLoader為例, 講解BootLoader(文末會提供免費(fèi)的代碼下載鏈接),其他的大體上原理都差不多。

流程圖分析

以我例程的BootLoader為例:

我將App2區(qū)的最后一個字節(jié)(0x0801FFFC)用來表示App2區(qū)是否有升級程序, STM32在擦除之后Flash的數(shù)據(jù)存放的都是0xFFFFFFFF, 如果有, 我們將這個地址存放0xAAAAAAAA. 具體的流程圖見下圖所示

程序編寫和分析

所需STM32的資源有:

  • 發(fā)送USART數(shù)據(jù)和printf重定向
  • Flash的讀寫
  • 程序跳轉(zhuǎn)指令,可以參考如下代碼:
1/*?采用匯編設(shè)置棧的值?*/
2__asm?void?MSR_MSP?(uint32_t?ulAddr)
3{
4????MSR?MSP,?r0???//設(shè)置Main?Stack的值
5????BX?r14
6}
7
8
9/*?程序跳轉(zhuǎn)函數(shù)?*/
10typedef?void?(*Jump_Fun)(void);
11void?IAP_ExecuteApp?(uint32_t?App_Addr)
12{
13??Jump_Fun?JumpToApp;
14
15??if?(?(?(?*?(?__IO?uint32_t?*?)?App_Addr?)?
本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉