stm32 iap升级

一、介绍
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烧写就行

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

//待更新

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值