亚洲国产欧美一区二区三区丁香婷,无线乱码一二三区免费看,无码人妻精品一区二区三区东京热 ,中文精品视频一区二区在线观看

STM32F4的BootLoader和AP??P程序如何使用

通常在用戶需要實現(xiàn)IAP功能時,即用戶程序運行中作自身的更新操作,需要在設計固件程序時編寫兩個項目代碼,第一個項目程序不執(zhí)行正常的功能操作,而只是通過某種通信管道(如USB、USART)接收程序或數(shù)據(jù),執(zhí)行對第二部分代碼的更新;第二個項目代碼才是真正的功能代碼。2、怎么得到升級軟件數(shù)據(jù)并寫入flash2、怎么得到升級軟件數(shù)據(jù)并寫入flash2、接收編譯好的app的bin文件,寫入flash...

一。概念素養(yǎng)

1.內購

IAP 是 In 的縮寫。IAP是用戶自己的程序,在運行過程中對部分User Flash進行編程。目的是在產品發(fā)布后,通過預留的通訊端口方便地更新產品中的固件程序。更新和升級。

通常,當用戶需要實現(xiàn)IAP功能,即用戶程序進行自己的更新操作時,需要在設計固件程序時編寫兩個工程代碼。第一個項目程序不執(zhí)行正常的功能操作草叢筆刷,而只是通過某種通信管道(例如USB、USART)接收程序或數(shù)據(jù)并對第二部分代碼進行更新;第二項代碼是真正的功能代碼。

2.

在上述IAP概念中,它是它的第一個項目程序。主要功能有:從串口、USB等媒體接收數(shù)據(jù);存儲和傳輸數(shù)據(jù);程序跳轉等功能。

3.應用

IAP 概念中第二項代碼的術語

編寫Stm32和App的注意事項

1、如何分配和app地址空間

2、如何獲取升級軟件數(shù)據(jù)并寫入閃存

3、如何從一個應用跳轉到另一個應用

4、如何設置app的中斷向量

5、如何在App中生成bin文件

6、程序執(zhí)行流程

1、如何分配和app地址空間

天正建筑軟件32位下載_creo軟件32位下載_下載stm32程序的軟件

圖1 STM32 Flash分區(qū)情況

(1)分配地址

我正在使用,它的flash大小是512K,所以我把它拆分成這樣:

--- 分配使用,大小為 64k

---- 分配給第一個APP使用,大小為124k

---- 分配給其他標志并被其他標志使用

(2)在keil中設置ROM的大小

A. 中 ROM 大小的設置

天正建筑軟件32位下載_下載stm32程序的軟件_creo軟件32位下載

B.在App中設置ROM的大小

2、如何獲取升級軟件數(shù)據(jù)并寫入閃存

在我的程序中Photoflare(開源圖像處理工具),它通過串口接收數(shù)據(jù),然后調用(u32,u8*,u32)將接收到的APP程序存儲在FLASH中,也就是應用程序的起始地址,也就是應用程序CODE,即應用程序的大小(字節(jié)),代碼如下:

#define FLASH_APP1_ADDR		0x08010000  	//第一個應用程序起始地址

if(applenth)//串口接收數(shù)據(jù)長度
			{
				printf("開始更新固件...\r\n");	
				LCD_ShowString(30,210,200,16,16,"Copying APP2FLASH...");
 				if(((*(vu32*)(0X20001000+4))&0xFF000000)==0x08000000)//判斷是否為0X08XXXXXX.
				{	 
					iap_write_appbin(FLASH_APP1_ADDR,USART_RX_BUF,applenth);//更新FLASH代碼   
					LCD_ShowString(30,210,200,16,16,"Copy APP Successed!!");
					printf("固件更新完成!\r\n");	
				}else 
				{
					LCD_ShowString(30,210,200,16,16,"Illegal FLASH APP!  ");	   
					printf("非FLASH應用程序!\r\n");
				}
 			}else 
			{
				printf("沒有可以更新的固件!\r\n");
				LCD_ShowString(30,210,200,16,16,"No APP!");
			}
			clearflag=7;//標志更新了顯示,并且設置7*300ms后清除顯示	

void iap_write_appbin(u32 appxaddr,u8 *appbuf,u32 appsize)
{
	u32 t;
	u16 i=0;
	u32 temp;
	u32 fwaddr=appxaddr;//當前寫入的地址
	u8 *dfu=appbuf;
	for(t=0;t

天正建筑軟件32位下載_creo軟件32位下載_下載stm32程序的軟件

3、如何從一個應用跳轉到另一個應用

//跳轉到應用程序段
//appxaddr:用戶代碼起始地址.
void iap_load_app(u32 appxaddr)
{
	if(((*(vu32*)appxaddr)&0x2FFE0000)==0x20000000)	//檢查棧頂?shù)刂肥欠窈戏?
	{ 
		jump2app=(iapfun)*(vu32*)(appxaddr+4);		//用戶代碼區(qū)第二個字為程序開始地址(復位地址)		
		MSR_MSP(*(vu32*)appxaddr);					//初始化APP堆棧指針(用戶代碼區(qū)的第一個字用于存放棧頂?shù)刂?
		jump2app();									//跳轉到APP.
	}
}		

4、如何設置app的中斷向量

SCB->VTOR = | ;/*中斷向量表位于()+*/

因為APP的起始地址是()+

5、如何在App中生成bin文件

我們點擊 MDK 中的 ?User 選項卡下載stm32程序的軟件,在 After Build/ 列中下載stm32程序的軟件,選中 Run #1,然后寫入:D:\tools\mdk5.14\ARM\ARMCC\bin\.exe -- bin -o ..\OBJ\RTC.bin..\OBJ\RTC.axf迅捷Gif制作工具,如圖:

6、程序執(zhí)行流程

下載stm32程序的軟件_天正建筑軟件32位下載_creo軟件32位下載

總結:

里面主要是

1、設置和應用空間

2、接收編譯好的app的bin文件寫入flash

3、實現(xiàn)跳轉

該應用程序的主要變化是:

1、 ROM 起始地址和分配的空間大小

2、 重定向中斷向量

3、 生成bin文件

發(fā)表評論

本站涵蓋的內容、圖片、視頻等數(shù)據(jù)。若涉及版權問題,請聯(lián)系我們-#97510453#-進行刪除!

Copyright 2020-2022.All Rights Reserved 版權所有 蘇州助華幫軟件有限公司? | 網站備案號:蘇ICP備2020061154號-1 |