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

STM32F103 通过SD卡IAP升级程序,带MD5校验,(带源码)可在实际项目中使用相关推荐

  1. 微信小程序:修复图片音频全新升级带特效喝酒神器源码

    这是一款全新升级带特效喝酒神器小游戏微信小程序源码 小编发现很多喝酒神器小程序都不带特效和音效的 感觉差了那么一点意思而且感觉也不炫酷 所以小编今天给大家带来一款带特效,音效炫酷的喝酒神器 该款神器由 ...

  2. linux读取sd卡文件数据,Linux系统和SD卡读写部分程序.doc

    Linux系统和SD卡读写部分程序 11.1.1 SD卡系统概念 Linux系统移植>第11章SD卡驱动移植,本章重点为SD卡协议介绍和SD卡驱动分析,后面也介绍SD卡驱动移植过程.随着SD卡存 ...

  3. 基于STM32的IAP升级程序

    基于STM32的IAP升级程序 IAP介绍 功能设计 硬件设计 软件设计 软件设计流程如下 完整程序 具体实现 设计功能程序 IAP实现程序 主程序 后续 IAP介绍 IAP(In Applicati ...

  4. 完成MSP430的IAP升级程序(总结)

    这几天测试写好的IAP升级程序,真是一个糟,能将程序下载进去,但无法运行. 经过各种测试,修改终于找到了问题的原因,现在大致总结下我在写IAP程序的时候 遇到的问题和解决方案.首先要实现单片机的IAP ...

  5. 绘制STM32最小系统电路原理图、STM32F103读取SD卡的数据

    绘制STM32最小系统电路原理图.STM32F103读取SD卡的数据 文章目录 绘制STM32最小系统电路原理图.STM32F103读取SD卡的数据 1 AltiumDesigner 软件配置 2 A ...

  6. STM32F105实现U盘IAP升级程序

    1.理论分析 理论依据很重要,这里稍微介绍一下原理和数据的操作过程.实际实现U盘的IAP升级一共分为两个部分,一部分是bootloader程序,这部分需要使用烧录器或者串口烧写进芯片.另一部分是用户的 ...

  7. wx超强随机短视频程序源码视频打赏自带视频+支付接口+源码自适应/安装教程

    demo软件园每日更新资源,请看到最后就能获取你想要的: 1.wx超强随机短视频程序源码视频打赏自带视频+支付接口+源码自适应/安装教程 可以放wx号.点击+微信按钮时,自动++wx号并打开微信软件 ...

  8. 最新仿淘宝B站购物直播小程序+带货完整PHP源码下载

    正文: 最新仿淘宝B站购物直播小程序+带货完整PHP源码下载,由于演示图太长了,所以我分别载图了两张,完整的演示图直接发压缩包了,有兴趣自行去查看. 当前版本已经修复直播间相关的一些BUG,还有商品新 ...

  9. 开源微信小程序自助建站系统源码 含精美的多行业模板和搭建教程

    分享一个微信小程序自助建站系统源码,含各行各业的小程序模板和搭建教程,可一键切换模板,自由DIY,搭建属于你自己的小程序.   特色功能一览: 11.支持创建多个小程序!(没有数量限制,后续免费升级) ...

最新文章

  1. 两成开发者月薪超 1.7 万、算法工程师最紧缺! | 中国开发者年度报告
  2. iterator与iterable
  3. linux下基于内存分析的rootkit检测方法
  4. Anaconda环境下OpenCV的安装
  5. swoole 异步系统文件IO
  6. Django运维后台的搭建之一:使用model建立数据信息
  7. Linux 统计多个文件中 某字符串出现的行数
  8. ​TA们划重点的时候到了:什么是实例工作流?
  9. cocos2d-x之读取plist文件
  10. 办公自动化-world转pdf-0223
  11. Java 并发(入门梳理)
  12. 【CDH】ClouderaManager集群报警,堆转储目录/tmp 或日志目录/var/log 可用空间小于 5.0 吉字节
  13. ubuntu一些记录
  14. java zinterstore_Java架构之Redis系列:通过文章点赞排名案例学习Sortedset命令
  15. 深入浅出通信原理知识点1
  16. 汽车电子技术——传感器感知技术
  17. 博士申请——Research Proposal
  18. 全球资产定价之锚上行提速,科技股恐祸不单行?
  19. c++基础学习:输入cin、输出cout、换行endl
  20. 【OI做题记录】【BZOJ】【Usaco2008 Mar】土地购买

热门文章

  1. c语言读取cmos的原理,三步读懂CMOS图像传感器的工作原理
  2. 期刊信息管理list.php,科学网—【信管学人国际期刊投稿目录列表】-Journal List for Scholars in Info Mgt - 陈晓宇的博文...
  3. android7.1官方下载,Android系统7.1.2 Beta 2正式版
  4. 耐克鞋子---给兄弟的
  5. hibernate 的缓存使用问题 转
  6. 主流浏览器与CSS3
  7. 斗拱展开面积表_展开面积计算表格 梁
  8. Tarjan算法求割点与割边(python3实现)
  9. 数字信号处理(DTFT与DFT、DFS的详细讲解以及FFT算法)
  10. VS正在加载符号导致程序启动变慢