當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]前沿:最近在做STM32的USB Bootlader/IAP功能,也就是通過USB實(shí)現(xiàn)固件升級(jí),本文介紹下實(shí)現(xiàn)的基本思路,希望對(duì)實(shí)現(xiàn)IAP的同學(xué)一個(gè)參考,改方法已經(jīng)在產(chǎn)品中得到實(shí)際應(yīng)用并驗(yàn)證是比較合理,穩(wěn)定可靠的。程序空間劃分:

前沿:
最近在做STM32的USB Bootlader/IAP功能,也就是通過USB實(shí)現(xiàn)固件升級(jí),本文介紹下實(shí)現(xiàn)的基本思路,希望對(duì)實(shí)現(xiàn)IAP的同學(xué)一個(gè)參考,改方法已經(jīng)在產(chǎn)品中得到實(shí)際應(yīng)用并驗(yàn)證是比較合理,穩(wěn)定可靠的。

程序空間劃分:
在單片機(jī)的程序Flash中分兩個(gè)區(qū),分別存儲(chǔ)Bootloader代碼和App代碼,Bootloader放到代碼起始地址,也就是0x08000000,App放到0x8020000地址,中間預(yù)留了很多的地址空間,主要是為了用來存儲(chǔ)一些需要掉電保存的數(shù)據(jù),比如我在0x0800C000地址就存放了App程序運(yùn)行后寫入該地址的標(biāo)志數(shù)據(jù)。

啟動(dòng)流程:
上電后自然是運(yùn)行Bootloader程序,Bootloader運(yùn)行后,做的第一件事情如下所示


01

02

03

if((*((uint32_t*)EXE_FLAG_ADDR))==0x12345678){

JumpToApplication(APP_START_ADDR);

}


也就是判斷App運(yùn)行標(biāo)志是否有效,這個(gè)標(biāo)志是存放到EXE_FLAG_ADDR地址的,若有效就直接跳轉(zhuǎn)到App程序運(yùn)行,這個(gè)時(shí)間很短,所以用戶看不到有Bootloader執(zhí)行的效果,感覺就是直接運(yùn)行的App程序,進(jìn)入App程序后,App程序第一件事情如下


01

02

03

04

05

06

07

if((*((uint32_t*)EXE_FLAG_ADDR))==0xFFFFFFFF){

uint32_tExeFlag = 0x12345678;

__set_PRIMASK(1);//禁止全局中斷

FLASH_Unlock();

ProgramDatatoFlash(EXE_FLAG_ADDR,(uint8_t*)(&ExeFlag),4);

FLASH_Lock();

}


也就是判斷App標(biāo)志是否有效,若有效則直接執(zhí)行后面的程序,若無(wú)效則需要在EXE_FLAG_ADDR地址寫入執(zhí)行標(biāo)志。
Bootloader程序判斷App標(biāo)志若無(wú)效,那么Bootloader就不會(huì)直接跳轉(zhuǎn)到App,因?yàn)檫@個(gè)時(shí)候是需要進(jìn)行升級(jí)App的操作,所以程序就進(jìn)入Bootloader的正常工作流程,也就是等待升級(jí)App的各種命令,比如擦出固件,燒寫固件,校驗(yàn)固件等。當(dāng)固件成功寫入并校驗(yàn)通過之后,PC端就可以發(fā)送一個(gè)程序跳轉(zhuǎn)命令跳轉(zhuǎn)到App執(zhí)行。

PC端操作流程:
PC端和單片機(jī)是通過USB進(jìn)行數(shù)據(jù)交換的,當(dāng)然用其他方式也可以,基本流程都是差不多的。
PC程序首先當(dāng)然是掃描設(shè)備,打開設(shè)備,然后調(diào)用獲取固件信息的函數(shù),調(diào)用該函數(shù)后可以得知當(dāng)前固件的名稱,版本號(hào),固件類型(Bootloader還是App),若發(fā)現(xiàn)當(dāng)前固件不是Bootloader,那么就得通過USB給固件發(fā)送一個(gè)程序跳轉(zhuǎn)命令,也就是跳轉(zhuǎn)到Bootloader代碼執(zhí)行,當(dāng)然App在跳轉(zhuǎn)到Bootloader的時(shí)候必須把EXE_FLAG_ADDR地址的標(biāo)志數(shù)據(jù)擦出掉,這樣Bootloader才能進(jìn)入正常的升級(jí)流程。
控制固件程序進(jìn)入Bootloader之后,PC端程序?qū)⒋蜷_App固件程序文件,然后根據(jù)文件大小,發(fā)送擦出App代碼存儲(chǔ)區(qū)域Flash的數(shù)據(jù),然后再分包將固件發(fā)送給單片機(jī),單片機(jī)端Bootlader程序接收到數(shù)據(jù)后將數(shù)據(jù)寫入App的Flash區(qū)域,數(shù)據(jù)寫完之后再進(jìn)行校驗(yàn),我是通過計(jì)算CRC16的方式進(jìn)行校驗(yàn)的,校驗(yàn)通過之后就可以發(fā)送跳轉(zhuǎn)命令控制程序跳轉(zhuǎn)到App運(yùn)行了,到此升級(jí)流程完畢。


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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