你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32F103 通过SD卡IAP升级程序,带MD5校验,(带源码)可在实际项目中使用

[复制链接]
STMCU小助手 发布时间:2022-4-22 22:00
一、将APP程序从SD卡搬运到MCU中
首先从sd卡通过FAFTS文件操作系统打开程序文件,然后记录下复制开始地址和程序文件大小

  1. fileOperionResult = f_open(&updateProgFile,buf,FA_READ); //只读类型打开文件
  2. myfree(buf);                                                                                        //释放缓存
  3. if(fileOperionResult!=FR_OK)                                                        //文件打开失败
  4.         goto ERROR;
  5. i=updateProgFile.fsize;
  6. progWriteAddr=SAVE_PROGRAM_ADDR;
复制代码

然后复制程序文件到MCU中,每次搬运2K字节

  1. while(1)
  2. {
  3.         if(i<2048)
  4.         {
  5.                 fileOperionResult =        f_read (&updateProgFile, &readBuf,i, &br); //读取文件
  6.                 if(fileOperionResult!=FR_OK)                                                                        //文件打开失败
  7.                         goto ERROR;        
  8.                 iap_write_appbin(progWriteAddr,readBuf,i);          //更新FLASH代码
  9.                 break;
  10.         }
  11.         else
  12.         {
  13.                 fileOperionResult =        f_read (&updateProgFile, &readBuf,2048, &br); //读取文件
  14.                 if(fileOperionResult!=FR_OK)                                                                        //文件打开失败
  15.                         goto ERROR;        
  16.                 iap_write_appbin(progWriteAddr,readBuf,sizeof(readBuf));          //更新FLASH代码  
  17.                 i-=2048;
  18.                 progWriteAddr+=2048;
  19.                
  20.         }
  21. }
复制代码

二、通过MD5校验搬运到MCU中的程序
主要原理将搬运到MCU中的程序读出来然后计算MD5,然后将计算得到的MD5和给定的MD5比较。

  1. get_bin_md5(SAVE_PROGRAM_ADDR,progFileSize,buf);                        //校验程序MD5值
复制代码

三、校验成功执行跳转

  1. rt_enter_critical();            //进入临界区
  2. __disable_irq();                                //关闭所有中断
  3. iap_load_app(SAVE_PROGRAM_ADDR);//执行FLASH APP代码
复制代码
四、注意点
在sd卡中要新建一个目录,然后放入程序文件和信息文件。


收藏 评论0 发布时间:2022-4-22 22:00

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版