一、介绍
IAP即为In Application Programming(在应用中编程),简单来说就是程序自己可以读写存储程序的flash空间,在程序上讲就是实现flash读和flash写两个函数,通过这个我们可以实现任意通信方式的烧写程序,比如网络烧写、can烧写、spi烧写等等
升级,指的是烧写程序,单片机默认烧写程序的方式
1、isp
2、仿真器烧写对应硬件就是swd和jtag烧写
默认烧写isp就是厂商芯片内部提供的串口烧写,需要设置对应的boot选项,烧写速度为串口速度11k/s,仿真器烧写使用的是swd接口或者jtag接口,需要专门的仿真器,每个厂商都是自己仿真器,下载速度较快一般2M/s以上,重点在于一旦做成产品,产品有外壳封住了不方便升级程序,这个时候我们的IAP升级就体现出作用了,比如做成网络升级,只需要插一根网线就可以完成下载程序,甚至可以远程升级,只要产品连上网络,我们在几十公里的远端也可以完成升级程序

二、IAP升级的实现原理
1、实现方式在程序里面写入另一个应用程序
这里写入的地方不能自己程序的位置,只能写新的位置

我们把程序分成两个,一个负责包含flash读写的烧写的启动程序,我们成为bootloader
另一个就是我们平时做的应用功能程序app

bootloader里面我们要实现
1、接收通信接口传过来的烧写文件
2、将接收的烧写文件写入flash
3、写入完成跳转到应用程序的地址

app程序的实现
就是我们正常的功能程序,不需要其他的变化

烧写,默认烧写都是在0地址开始,所以我们需要修改编译选项中的两个程序对应的地址
bootloader的烧写需要用烧写器或者isp烧写
app直接iap烧写就行

第二,单独的程序里面是有中断向量表的,中断向向量表保存的就是中断函数的地址,两个程序的中断函数都是独立的,但是程序运行的时候并不知道,所以我们要修改两个程序的中断向量表

//待更新

stm32 iap升级相关推荐

  1. STM32 IAP升级(bootLoader)

    STM32 IAP升级(bootLoader) 今天给大家做一个STM32F系列的IAP 升级, 网上有不少例子,我这里字数有点多如果看请耐心看完,如果嫌麻烦可以看其他的帖子 我这边以103为例子,用 ...

  2. 差分升级 增量升级 单片机 STM32 IAP升级OTA升级,物联网车联网可用

    差分升级 增量升级 单片机 STM32 IAP升级OTA升级,物联网车联网可用 介绍博客 https://blog.csdn.net/zhou74281/article/details/1177776 ...

  3. STM32 IAP升级--内部FLASH和外部FLASH两种方式实现

    芯片型号STM32F103RET6,flash大小512K,起始地址0x08000000 一般说STM32内部FLASH就是指主存储器区域 [注]此实验中启动方式设置为复位后从主闪存存储器启动(BOO ...

  4. STM32 IAP升级工具

    1.内部包含了crc_mode的检验 2.文件包含了头尾.长度的数据,确保升级操作的可靠性 3.win32串口查找功能GetSerialList():  4.(RegKey.Open(HKEY_LOC ...

  5. 关于STM32 IAP升级之为什么APP执行要0x2FFE0000这个数值的原因(基于STM32F446RET6)

    如下图所示,这是我目前用的一款CPU:STM32F446RET6,大小是512KB 我的bootloader编译完以后占用了26KB的FLASH内存. 我的APP占用了363K的FLASH内存,主要是 ...

  6. STM32升级方法(一):IAP升级

    此博客主要用于记录学习过程中的心得以及防止遗忘,下面的一些图片来源于网上,如有侵犯请联系. STM32芯片的升级方式众多,这里简单介绍下,主要有ICP((In-Circuit Programming ...

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

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

  8. STM32 USB HID IAP升级

    找了网上大量的资料,最后发现这个东西人家还出售源码.又不是什么算法级的东西,实在理解不了. 至于为什么要用HID,不用官方的DFU,因为驱动呀,DFU识别USB的时候还是要装驱动,客户你永远理解不了他 ...

  9. STM32 IAP 在线升级详解

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

  10. 关于STM32单片机IAP升级中if(((*(__IO uint32_t*)ulAddr_App) 0x2FFE0000) == 0x20000000)语句的理解

    没有标题 初见if(((*(__IO uint32_t*)ulAddr_App) & 0x2FFE0000) == 0x20000000) 语句理解 语句功能 为什么ulAddr_App里存的 ...

最新文章

  1. Codeforces Round #155 (Div. 2)
  2. 检测到在集成的托管管道模式下不适用的 ASP.NET 设置, HTTP 错误 500.23 解决方案...
  3. Cocos2d-x v3.1 坐标系统(五)
  4. 变量:2021数字科技前沿应用趋势
  5. python读取html中body_python批量获取html内body内容的实例
  6. 四大组件---Activity
  7. docker中使用git_如何在 Docker 中使用 Docker
  8. Jmeter中的几种协议
  9. C# 导入excel数据,解决关闭excel后不能释放资源的问题
  10. 前端大牛or架构师应该具备这些
  11. layUI 选中表格 checkbox
  12. GMap.Net开发之自定义Marker
  13. 瑞星搜狐畅游合作 “云安全”首次嵌入网游客户端
  14. innerText、outerText与innerHTML、outerHTML
  15. cba比赛比分预测_昨日预测CBA一红一黑,今日继续给大家带来CBA全部比赛4场
  16. kinectfusion解析_KinectFusion解析
  17. 又一个程序员倒下-程序员防猝死指南
  18. vivoy85a参数配置_vivoY85A基本配置参数?
  19. python做一个网页多少钱_网站建设平台_ 网站建设多少钱_ _做一个企业网站需要多少钱_64岁的Python之父表示退休后太无聊 正式加入微软...
  20. 中国石油大学远程教育《穿出你的职业感》

热门文章

  1. java快速开发项目_GitHub - Johnnyzhoutq/X-SpringBoot: X-SpringBoot是一个轻量级的Java快速开发平台,能快速开发项目并交付【接私活利器】...
  2. 路由器技术彻底解决路由器IP地址冲突问题
  3. 高考英语语法填空满分秒杀技巧
  4. jsp页面使用大于号等
  5. Go语言Web开发Revel框架搭建
  6. device no response, device descriptor read/64, error -71
  7. 微软亚洲研究院2017年笔试编程题
  8. VBA教程初级(五):复杂数组
  9. 嵌入式系统开发笔记10:CJ/T-188 水表协议解析2
  10. python网页编辑器-网页python编辑