[综合信息] 华大MCU远程升级IAP

[复制链接]
 楼主| 华芯3284494788 发表于 2020-9-29 15:25 | 显示全部楼层 |阅读模式

IAP是In Application Programming的首字母缩写,IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。

  • AP原理介绍

通常实现IAP功能时,需要在设计固件程序时编写两个项目代码,第一个项目程序即BOOT程序不执行正常的功能操作,而只是通过某种通信方式(如USB、USART)接收程序或数据,执行对第二部分代码的更新;第二个项目程序即APP程序用户真正的功能代码。这两部分项目代码同时烧录在Flash中,当芯片上电后,首先是第一个项目程序BOOT开始运行,它主要实现如下功能:

  • 检查是否需要对第二部APP程序代码进行更新
  • 如果不需要更新则转到4)
  • 执行更新操作
  • 跳转到第二部分代码执行

第一部分BOOT代码可以通过SWD或者离线编程器下载到芯片Flash内部,第二部分APP和第一部分BOOT一起烧入芯片内部,以后需要程序更新再通过第一把BOOT代码更新。

根据芯片系列的Flash存放不同地址范围,从最低地址区域开始存放BOOT,紧跟其后的就是APP程序,本篇笔记受限于芯片内部Flash容量,只是存放一个APP程序。即在芯片内部有两个程序即BOOT和APP程序。

  • IAP功能具体实现

芯片程序一般从Flash地址0x0000_0000开始执行,基于Cortex-M0+内核特性,内部通过中断向量表来响应中断,程序从中断向量表取出复位中断向量执行中断程序,当中断产生,芯片内部PC指针定位到中断向量表来取出对应的中断服务程序执行。如果没有中断产生,在芯片执行完复位中断服务程序后,跳转到main函数顺序执行死循环。如果有中断产生,通过中断向量表执行对应的中断服务程序。

当加入IAP后,芯片还是从中断向量表取出复位中断向量执行中断程序,如果没有中断产生,在芯片执行完复位中断服务程序后,跳转到main函数。在执行完IAP后,新程序的复位中断向量地址为0x0000_0004 + BOOT程序大小,跳转到APP程序的复位向量表,执行APP的复位中断服务程序,随后跳转到APP程序的main函数执行。

演示Demo程序内部分配如下:

其中:BOOT程序大小3.5KB

??????Para 区域存放IAP升级期间参数和标志占用0.5KB

??????APP程序大小为24KB?

??Demo程序,操作流程如下:????

  • 先将APP工程HEX下载到芯片内部
  • 打开BOOT工程HEX下载到芯片,或者可以使用工具将两个HEX文件合并在一起下载到芯片内部。
  • 使用上位机演示程序,打开串口波特率固定为9600。按照协议将APP工程的bin文件下载到0x1000开始的芯片内部,其中要求APP的bin文件小于28KB。

zeshoufx 发表于 2020-9-30 17:10 | 显示全部楼层
谢谢分享【华大MCU远程升级IAP 】
kxsi 发表于 2020-10-11 16:39 | 显示全部楼层
非常感谢楼主分享
nawu 发表于 2020-10-11 16:51 | 显示全部楼层
介绍的很是详细
qcliu 发表于 2020-10-11 16:51 | 显示全部楼层
非常好的资料
tfqi 发表于 2020-10-11 16:52 | 显示全部楼层
支持楼主哈
wiba 发表于 2020-10-11 16:52 | 显示全部楼层
楼主辛苦了 资料很好
超级火龙果 发表于 2020-10-12 17:32 | 显示全部楼层
请问有没有示例代码
lesheng002 发表于 2020-10-13 20:58 | 显示全部楼层
谢谢分享
wqh317954897 发表于 2020-10-19 16:57 | 显示全部楼层
给个demo最好了。。。460的
guguo8266 发表于 2020-10-20 08:13 | 显示全部楼层
非常感谢楼主分享,还没有实现,最近有打算
lookjo 发表于 2020-10-27 16:57 | 显示全部楼层
有没有合并程序的工具
 楼主| 华芯3284494788 发表于 2020-10-30 11:42 | 显示全部楼层
花间一壶酒sd 发表于 2020-10-31 19:18 | 显示全部楼层
demo呢?老大哥。
发的非官方的 发表于 2020-10-31 19:21 | 显示全部楼层
1.检查是否需要对第二部APP程序代码进行更新
发的非官方的 发表于 2020-10-31 19:21 | 显示全部楼层
如果不需要更新则转到4)


发的非官方的 发表于 2020-10-31 19:22 | 显示全部楼层
执行更新操作


发的非官方的 发表于 2020-10-31 19:23 | 显示全部楼层
4.跳转到第二部分代码执行
 楼主| 华芯3284494788 发表于 2020-11-1 14:39 | 显示全部楼层
发的非官方的 发表于 2020-10-31 19:21
如果不需要更新则转到4)

camconli 发表于 2020-12-10 15:19 | 显示全部楼层
lookjo 发表于 2020-10-27 16:57
有没有合并程序的工具

jflash
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

263

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部