花了四天时间才把IAP功能做好。其中也遇到许多的坑,这次把这次IAP功能实现过程遇到的坑把它分享出来。一开始做iap的时候也是先从网上看别人的实现方法,其中就下载了一套别人的程序,不过主控芯片是STM32F103zv,就是不是我想要的那个型号,还有他的逻辑跟我的有点不一样。所以才走了那么多天的坑。
1、先移植别人的flash烧写代码跟运行APP应用程序的代码,基本各个版本大同小异。2、然后实现自己的UART,实现串口接收程序(因为要通过串口接收APP应用固件)3、然后接收到的固件烧写进flash4、最后就是运行到APP应用程序了。基本实现iap也是这几个步骤,但是就是不成功一开始。然后就开始查找问题:
1、查看接收的固件对不对
2、通过keil编译器里的仿真可以看到flash的具体数值,判断memory里的数据是不是跟串口接收的数据一样的。查找了之后自己感觉是对的(其实没有仔细验证),然后就开始跑到APP应用程序,每一次运行到APP程序时就进入了硬件错误中断HardFault_Handler();就是这个问题我查找了两天得不到解决。最后实在没办法了才有查找接收的问题,发现接收处理是有问题的,因为芯片的SRAM是有限的,接收数组不可能开的太大,我的方法是开两个数组轮流接收固件,一个数组接收满了之后就先写进flash,另一个数组继续接收。因为固件我是通过串口助手发送给芯片的,所以串口助手一次性发完一个固件不间断。后面改了这个接收的问题,然后再去检查接收到的固件写进FLASH时是否是对的,这两部做好之后基本不会有什么大问题。
1、另一个需要注意的就是地址的偏移,Bootloader地址跟APP应用地址分开来。
2、进入APP应用程序之前需要清除中断,把一些GPIO,ADC之类的都关闭。
3、APP应用端要配置好中断偏移向量。基本以上步骤检查好了,iap应用是没有问题的。
程序代码会上传上来

STM32F103在线升级程序相关推荐

  1. VB.NET在线升级程序源代码,可以独立使用

    这个程序是我做一个办公管理系统的时候用到的,这里有源码,需要的亲拿去研究学习:vb.net在线升级程序: 程序实现了通过vb.net连接远程云服务器,并且从云服务器中获取更新,并且自动下载更新,升级本 ...

  2. CRC校验原理及STM32 IAP在线升级程序

    CRC校验原理: 什么是CRC校验? CRC即循环冗余校验码:是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定.循环冗余检查(CRC)是一种数据传输检错功能,对数据 ...

  3. stm32-IAP(在线升级程序)

    第一章 背景知识 什么是IAP? IAP的知识网上的各种资料也说的比较明白,在此简单介绍一下.IAP( In Application Programming)即在线应用编程,也就是用户可以使用自己的程 ...

  4. DSP在线升级程序步骤

    目标板:C2000的28335/28069 一.主要思路: 1.准备升级程序(相当于一个bootloader),作为上电首先运行的程序.进入升级程序,首先判断需不需要升级,需要升级,进入升级状态,通信 ...

  5. C#做的在线升级小程序

    转自原文C#做的在线升级小程序 日前收到一个小任务,要做一个通用的在线升级程序.更新的内容包括一些dll或exe或.配置文件.升级的大致流程是这样的,从服务器获取一个更新的配置文件,经过核对后如有新的 ...

  6. Stm 32 IAP 在线 升级IAP 的 操作

    (扩展-IAP主要用于产品出厂后应用程序的更新作用,考虑到出厂时要先烧写IAP  再烧写APP应用程序要烧写2次增加工人劳动力基础上写了"STM32 IAP+APP ==>双剑合一&q ...

  7. STM32 IAP 在线升级详解

    (扩展-IAP主要用于产品出厂后应用程序的更新作用,考虑到出厂时要先烧写IAP  再烧写APP应用程序要烧写2次增加工人劳动力基础上写了"STM32 IAP+APP ==>双剑合一&q ...

  8. C#程序在线升级代码---webservice

    前言: 由于项目原因,要实施的客户离作者太远,考虑提供软件的在线升级功能.我们如何实现呢!先讲下思路. 思路: 先实现WEB端的开发,主要考虑使用WEBService技术,提供远程服务的调用函数,返回 ...

  9. stm32f4 usb 升级程序_STM32在线升级之 QiFreeUSBS

    原标题:STM32在线升级之 QiFreeUSBS 写在前面 作为 MCU程序开发者,我经常使用的下载方式是 SWD,然后就是串口.其实我们都知道还有其它的如 JTAG, ISP等常用下载方式,这就是 ...

最新文章

  1. 再见了月薪3w的大后端,低代码开发已成气候!
  2. 【Java 并发编程】指令重排序规范 ( happens-before 先行发生原则 )
  3. 笔记-高项案例题-2017年下-管理团队-冲突管理
  4. vba二维数组初始化_将工作表数据写入VBA数组
  5. [WPF]程序随系统自启动
  6. 综述:编程语言的发展趋势及未来方向
  7. CSS快速学习8:圆角切图、滚动条和图片整合技术
  8. 【janio】janio ClassBodyEvaluator 的使用
  9. flutter能开发游戏吗_Flutter开发游戏初体验,喜大普奔
  10. python requests库爬取冒险岛发布站数据
  11. 30首唐诗,道尽人生苦乐
  12. \t\t长痘痘(鼻尖,脸上等部位)的原因,应该怎么办?
  13. 想要学习丙烯画,这些地方要注意了~
  14. Visual Studio弃Coded UI Test 给开发者建议
  15. ARM 微处理器的数据类型
  16. 2022最新阿里云国际注册教程-不用绑定paypal注册
  17. Java并发编程(一)—— FutureTask超详细教程
  18. markdown好看的模板
  19. javaweb体育新闻网站设计与实现(毕业设计含论文文档)
  20. Unity3D GPU Instancing测试

热门文章

  1. dbeaver安装和使用教程
  2. https://blog.csdn.net/weixin_40845165/article/details/84076958
  3. Zoom to Learn, Learn to Zoom
  4. 6月13日币圈空投糖果推荐(每晚更新)
  5. 高并发热点缓存数据可能出现问题及解决方案
  6. matlab怎么求ln函数,用matlab求函数e的1+ln[erf(1/t)]+t次方对t的积分求详细编程过程...
  7. 【记录】ChatGPT使用记录
  8. Golang学习笔记(九)for循环语句
  9. 心生热爱,所以只身前来 | Allan,很高兴再认识你
  10. vscode设置光标快捷键上下左右移动(详细)