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
四、完整工程
完整工程

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