資源簡介
stm32f407IAP升級源碼,先按下按鍵(在PA0)再上電就進入升級固件模式,再按一次按鍵則將SD卡中的IAP.bin拷貝到flash中并運行。上電時不按按鈕會直接運行flash中現有的程序。
代碼片段和文件信息
#include?
#include?“Bootloader.h“
#include?“delay.h“
#include?“LED.h“
#include?“beep.h“??
#include?“exfuns.h“??
#include?“diskio.h“
#include?“ff.h“
#include?“lcd.h“
#include?“stmflash.h“
#include?“iap.h“??
????
typedef??void?(*fun)(void); //定義一個函數類型的參數.???
fun?AppStart;?
u8?Receive_dat_buffer[STM_PAGE_SIZE]; ?? //數據接收緩存數組
/****************************
函數名??:Jump2App
功????能:從Bootloader跳轉到用戶APP程序地址空間
入口參數:Addr,用戶APP的起始執行地址
出口參數:無
返回值??:無
*****************************/
void?Jump2App(u32?Addr)
{
if(((*(vu32*)Addr)&0x2FFE0000)?==?0x20000000) //檢查棧頂地址是否合法.
{?
AppStart?=?(fun)(*(vu32*)(Addr+4)); //用戶代碼區第二個字為程序開始地址(復位地址)
AppStart(); //跳轉到APP.
}
}
/******************************
函數名??:FirmwareUpdate
功????能:固件升級函數
入口參數:無
出口參數:無
返回值??:無
*******************************/
void?FirmwareUpdate(void)
{
????FIL?file_bin;?
????u8?i=0;
????u8?res;
????u16?br;
????u16?readlen;
????u32?addrx;
????u32?Receive_data=0;?//計算接收的總數據數
????u32?file_size=0;????//文件size
????
????u8?percent=0;???????//固件升級的百分比
/*查找是否存在要升級的BIN文件*/
????res?=?f_open(&file_bin?“IAP.bin“?FA_OPEN_EXISTING?|?FA_READ);
????//res?=?f_open(&file_bin?“TEST.bin“?FA_OPEN_EXISTING?|?FA_READ);
????file_size=f_size(&file_bin);????//讀取的文件大小Byte
????printf(“讀取的文件大小為:%dByte\r\n“file_size);
if(res!=FR_OK)?return;
????addrx=FLASH_APP1_ADDR;
????
/*執行主要的IAP功能*/
????printf(“開始更新固件...\r\n“);
????LCD_ShowString(301303102424“Firmware?Updating...“);
while(1)
{
/*每次讀取2K的數據到內存緩沖區buffer*/
????res?=?f_read(&file_bin?Receive_dat_buffer?STM_PAGE_SIZE?(UINT*)&br);
????????i++;
????????readlen=br;
????????Receive_data+=br;???//讀取的總字節數
????????if?(res?||?br?==?0)?
????????{
????????????break;?
????????}
????????
????????iap_write_appbin(addrxReceive_dat_bufferreadlen);//將讀取的數據寫入Flash中
????????addrx+=STM_PAGE_SIZE;//偏移2048??512*4=2048
????????
????}
????delay_ms(1500);
//????BEEP_ON();
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????2198??2019-04-05?17:17??Bootloader?-?副本\BOOTLOADER\Bootloader.c
?????文件????????267??2015-09-29?21:57??Bootloader?-?副本\BOOTLOADER\Bootloader.h
?????文件?????109142??2014-07-17?21:52??Bootloader?-?副本\CORE\core_cm4.h
?????文件??????22735??2014-07-17?21:52??Bootloader?-?副本\CORE\core_cm4_simd.h
?????文件??????17146??2014-07-17?21:52??Bootloader?-?副本\CORE\core_cmFunc.h
?????文件??????20513??2014-07-17?21:52??Bootloader?-?副本\CORE\core_cmInstr.h
?????文件??????29605??2014-08-02?00:12??Bootloader?-?副本\CORE\startup_stm32f40_41xxx.s
?????文件???????3248??2014-01-15?00:31??Bootloader?-?副本\FATFS\doc\css_e.css
?????文件???????3661??2014-01-15?00:31??Bootloader?-?副本\FATFS\doc\css_j.css
?????文件???????1063??2013-09-18?21:47??Bootloader?-?副本\FATFS\doc\img\app1.c
?????文件???????1597??2013-10-18?21:41??Bootloader?-?副本\FATFS\doc\img\app2.c
?????文件???????3811??2014-01-13?20:56??Bootloader?-?副本\FATFS\doc\img\app3.c
?????文件??????10365??2014-01-07?15:10??Bootloader?-?副本\FATFS\doc\img\app4.c
?????文件???????1414??2011-09-02?22:10??Bootloader?-?副本\FATFS\doc\img\f1.png
?????文件???????1458??2007-02-10?03:12??Bootloader?-?副本\FATFS\doc\img\f2.png
?????文件???????1039??2007-02-10?03:12??Bootloader?-?副本\FATFS\doc\img\f3.png
?????文件???????2335??2008-01-05?20:27??Bootloader?-?副本\FATFS\doc\img\f4.png
?????文件???????2479??2008-01-05?20:27??Bootloader?-?副本\FATFS\doc\img\f5.png
?????文件???????1436??2010-08-21?10:13??Bootloader?-?副本\FATFS\doc\img\f6.png
?????文件??????11388??2013-05-12?12:31??Bootloader?-?副本\FATFS\doc\img\f7.png
?????文件??????11421??2014-02-19?22:38??Bootloader?-?副本\FATFS\doc\img\funcs.png
?????文件???????2401??2009-03-20?21:57??Bootloader?-?副本\FATFS\doc\img\la
?????文件???????2379??2009-06-13?21:48??Bootloader?-?副本\FATFS\doc\img\la
?????文件???????7932??2013-12-27?12:20??Bootloader?-?副本\FATFS\doc\img\modules.png
?????文件??????19068??2008-10-18?19:31??Bootloader?-?副本\FATFS\doc\img\rwtest.png
?????文件???????8153??2010-09-13?10:55??Bootloader?-?副本\FATFS\doc\img\rwtest2.png
?????文件???????3011??2009-06-15?00:03??Bootloader?-?副本\FATFS\doc\img\rwtest3.png
?????文件???????5352??2014-01-15?00:31??Bootloader?-?副本\FATFS\doc\updates.txt
?????文件???????3685??2014-05-15?17:20??Bootloader?-?副本\FATFS\exfuns\exfuns.c
?????文件???????1417??2014-05-15?17:20??Bootloader?-?副本\FATFS\exfuns\exfuns.h
............此處省略426個文件信息
評論
共有 條評論