www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]IAP下載流程一。APP程序的生成步驟APP程序生成一個(gè)bin文件,BootLoader程序通過(guò)某一種方式進(jìn)行接收,然后把bin文件放置在Flash應(yīng)用程序的存儲(chǔ)區(qū)域中。Flash并不是全部放APP程序,而是Flash空間一部分放置BootLoader程

IAP下載流程



一。APP程序的生成步驟


APP程序生成一個(gè)bin文件,BootLoader程序通過(guò)某一種方式進(jìn)行接收,然后把bin文件放置在Flash應(yīng)用程序的存儲(chǔ)區(qū)域中。

Flash并不是全部放APP程序,而是Flash空間一部分放置BootLoader程序,另一部分放置APP,所以對(duì)APP要設(shè)置起始地址和空間大小。在MDK中配置。

新的APP中有一個(gè)新的中斷向量表,只不過(guò)比原來(lái)的中斷向量表有一個(gè)偏移。


二。BootLoader程序講解

BootLoader程序的作用:

1. 通過(guò)某種方式接受APP的bin文件。本實(shí)驗(yàn)通過(guò)串口接收,串口中斷程序接收到數(shù)據(jù)后存儲(chǔ)到一個(gè)緩存中

2. 把數(shù)據(jù)寫(xiě)到Flash的某個(gè)區(qū)域。

void iap_write_appbin(u32 appxaddr,u8 *appbuf,u32 applen);//在指定地址appxaddr開(kāi)始,寫(xiě)入bin

3. 實(shí)現(xiàn)跳轉(zhuǎn)。

void iap_load_app(u32 appxaddr);//執(zhí)行flash里面以appxaddr為起始地址的的app程序

(1)串口接收數(shù)據(jù)程序(串口中斷)

//串口1中斷服務(wù)程序
//注意,讀取USARTx->SR能避免莫名其妙的錯(cuò)誤
u8 USART_RX_BUF[USART_REC_LEN] __attribute__ ((at(0X20001000)));//接收緩沖,最大USART_REC_LEN個(gè)字節(jié),起始地址為SRAM中的0X20001000.注意:不能隨意寫(xiě),要給BootLoader程序和APP留有足夠的空間。
//接收狀態(tài)
//bit15,接收完成標(biāo)志
//bit14,接收到0x0d
//bit13~0,接收到的有效字節(jié)數(shù)目
u16 USART_RX_STA=0;//接收狀態(tài)標(biāo)記
u16 USART_RX_CNT=0;//接收的字節(jié)數(shù)
void USART1_IRQHandler(void)
{
u8 res;
#ifdef OS_CRITICAL_METHOD //如果OS_CRITICAL_METHOD定義了,說(shuō)明使用ucosII了.
OSIntEnter();
#endif
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)//接收到數(shù)據(jù)
{
res=USART_ReceiveData(USART1);
if(USART_RX_CNT
{
USART_RX_BUF[USART_RX_CNT]=res;
USART_RX_CNT++;
}
}
#ifdef OS_CRITICAL_METHOD //如果OS_CRITICAL_METHOD定義了,說(shuō)明使用ucosII了.
OSIntExit();
#endif
}

數(shù)據(jù)接收在USART_RX_BUF中,長(zhǎng)度為:

#define USART_REC_LEN55*1024 //定義最大接收字節(jié)數(shù) 55K

因此要求APP程序不能超過(guò)55k!

(2)把接收到的數(shù)據(jù)寫(xiě)到Flash的某個(gè)區(qū)域

由于需要進(jìn)行Flash的操作,所以要引入stm32f10x_flash.c

iap.h

#ifndef __IAP_H__
#define __IAP_H__
#include "sys.h"

typedefvoid (*iapfun)(void);//定義一個(gè)函數(shù)類型的參數(shù).

#define FLASH_APP1_ADDR0x08010000//第一個(gè)應(yīng)用程序起始地址(存放在FLASH)
//保留0X08000000~0X0800FFFF的空間為IAP使用

注:0x8010000不能隨意定義,與BootLoader程序的大小有關(guān)。

void iap_load_app(u32 appxaddr);//執(zhí)行flash里面以appxaddr為起始地址的的app程序
void iap_load_appsram(u32 appxaddr);//執(zhí)行sram里面的app程序
void iap_write_appbin(u32 appxaddr,u8 *appbuf,u32 applen);//在指定地址appxaddr開(kāi)始,寫(xiě)入bin
#endif

注:0x8010000不能隨意定義,與BootLoader程序的大小有關(guān)。



編譯BootLoader程序后,可以看到BootLoader程序占用了多少Flash空間:Code + RO-data,約36k

這里偏移0x10000,為64k的空間。

APP存放在Flash中的地址不能與BootLoader程序存儲(chǔ)的空間有沖突,會(huì)出現(xiàn)死機(jī)的情況。

(3)主程序

通過(guò)串口接收數(shù)據(jù),接收完成后顯示“用戶程序接收完成!”

掃描按鍵

KEY_UP:更新固件,執(zhí)行

iap_write_appbin(FLASH_APP1_ADDR,USART_RX_BUF,applenth);//更新FLASH代碼

KEY_DOWN:清除固件,設(shè)置固件長(zhǎng)度為0

KEY_LEFT:執(zhí)行Flash中的APP代碼

三。配置APP程序

1. APP所占空間的大小:BootLoader程序?yàn)?4k空間,對(duì)于戰(zhàn)艦版剩余512k-64k=448k,為0x70000,因?yàn)?x80000的數(shù)據(jù)為512k,0x80000-0x10000=0x70000

2. 偏移量:正常情況下程序從0x80000開(kāi)始,APP在Flash中起始地址為0x08010000

以RTC實(shí)驗(yàn)為例進(jìn)行配置:

如果用ICP下載,這個(gè)程序會(huì)下載到起始地址為0x08000000的Flash空間中并執(zhí)行

現(xiàn)在用IAP下載,把這個(gè)程序下載到起始地址為0x08010000的Flash空間中,然后BootLoader跳轉(zhuǎn)到這個(gè)程序執(zhí)行

(1)配置APP的起始地址和空間大小



Start為起始地址0x8010000,Size為程序大小0x70000

點(diǎn)擊“OK”完成

(2)配置中斷向量表的偏移

在程序的起始的地方設(shè)置


int main(void)
{
u8 t=0;

//SCB->VTOR = 0x08000000 | 0x10000;

SCB->VTOR = FLASH_BASE | 0x10000;

delay_init();//延時(shí)函數(shù)初始化
NVIC_Configuration(); //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級(jí),2位響應(yīng)優(yōu)先級(jí)
uart_init(9600);//串口初始化為9600
LED_Init();//LED端口初始化
LCD_Init();
usmart_dev.init(SystemCoreClock/1000000);//初始化USMART
RTC_Init();//RTC初始化


FLASH_BASE是系統(tǒng)中已經(jīng)定義了的起始地址,也就是0x08000000


(3)執(zhí)行fromelf.exe,生成bin文件

點(diǎn)擊魔術(shù)棒



點(diǎn)擊文件夾,找到fromelf.exe文件



找到一個(gè)模板,然后把這里的內(nèi)容復(fù)制到一個(gè)新建的txt文件中





把剛才自己找到的fromelf.exe文件路徑替換記事本中.exe文件的路徑

然后再改后面兩個(gè)地方: RTC.bin 和RTC.axf

查看自己的程序中執(zhí)行什么程序



在記事本中改好后,復(fù)制回來(lái)放在user下面:


重新編譯。



如果沒(méi)有提示錯(cuò)誤,表示已經(jīng)生成了bin文件,如果有錯(cuò)誤可能是剛才fromelf.exe的路徑配置錯(cuò)了。

在實(shí)驗(yàn)程序的obj文件夾下找到bin文件



(4)先把BootLoader程序用ICP下載到Flash中

下載完成后



通過(guò)串口把bin文件寫(xiě)到Flash中

打開(kāi)串口調(diào)試助手

先要設(shè)置好波特率,跟BootLoader程序中的波特率一致,為115200。

選擇打開(kāi)文件,選擇剛才生成好的bin文件,然后點(diǎn)擊發(fā)送文件



發(fā)送完畢后,表示數(shù)據(jù)已經(jīng)保存到了數(shù)據(jù)緩存中。

按KEY_UP,把數(shù)據(jù)保存到Flash中

然后按KEY2運(yùn)行保存的RTC程序

在系統(tǒng)中BootLoader程序一般都不大,接收文件,寫(xiě)到Flash的某個(gè)區(qū)域,然后再跳轉(zhuǎn)。真正的功能都在APP程序中實(shí)現(xiàn)。


本站聲明: 本文章由作者或相關(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日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

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

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

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

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(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ì)開(kāi)幕式在貴陽(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)閉