STM32F103 通過SD卡IAP升級程序,帶MD5校驗,(帶源碼)可在實際項目中使用

一、將APP程序從SD卡搬運到MCU中
首先從sd卡通過FAFTS文件操作系統打開程序文件,然後記錄下複製開始地址和程序文件大小

fileOperionResult = f_open(&updateProgFile,buf,FA_READ); //只讀類型打開文件
myfree(buf);											//釋放緩存
if(fileOperionResult!=FR_OK)							//文件打開失敗
	goto ERROR;
i=updateProgFile.fsize;
progWriteAddr=SAVE_PROGRAM_ADDR;

然後複製程序文件到MCU中,每次搬運2K字節

while(1)
{
	if(i<2048)
	{
		fileOperionResult =	f_read (&updateProgFile, &readBuf,i, &br); //讀取文件
		if(fileOperionResult!=FR_OK)									//文件打開失敗
			goto ERROR;	
		iap_write_appbin(progWriteAddr,readBuf,i);          //更新FLASH代碼 
		break;
	}
	else
	{
		fileOperionResult =	f_read (&updateProgFile, &readBuf,2048, &br); //讀取文件
		if(fileOperionResult!=FR_OK)									//文件打開失敗
			goto ERROR;	
		iap_write_appbin(progWriteAddr,readBuf,sizeof(readBuf));          //更新FLASH代碼  
		i-=2048;
		progWriteAddr+=2048;
		
	}
}

二、通過MD5校驗搬運到MCU中的程序
主要原理將搬運到MCU中的程序讀出來然後計算MD5,然後將計算得到的MD5和給定的MD5比較。

get_bin_md5(SAVE_PROGRAM_ADDR,progFileSize,buf);			//校驗程序MD5值

二、校驗成功執行跳轉

rt_enter_critical();            //進入臨界區
__disable_irq();				//關閉所有中斷
iap_load_app(SAVE_PROGRAM_ADDR);//執行FLASH APP代碼

三、注意點
在sd卡中要新建一個目錄,然後放入程序文件和信息文件。
在這裏插入圖片描述
信息文件的格式爲#版本號$程序文件字節數@MD5&,MD5可以在線計算,參考網站:http://www.metools.info/other/o21.html
四、完整工程
完整工程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章