一、将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卡中要新建一个目录,然后放入程序文件和信息文件。
|