打印
[综合信息]

华大MCU远程升级IAP

[复制链接]
2078|27
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
华芯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 | 只看该作者
介绍的很是详细

使用特权

评论回复
5
qcliu| | 2020-10-11 16:51 | 只看该作者
非常好的资料

使用特权

评论回复
6
tfqi| | 2020-10-11 16:52 | 只看该作者
支持楼主哈

使用特权

评论回复
7
wiba| | 2020-10-11 16:52 | 只看该作者
楼主辛苦了 资料很好

使用特权

评论回复
8
超级火龙果| | 2020-10-12 17:32 | 只看该作者
请问有没有示例代码

使用特权

评论回复
9
lesheng002| | 2020-10-13 20:58 | 只看该作者
谢谢分享

使用特权

评论回复
10
wqh317954897| | 2020-10-19 16:57 | 只看该作者
给个demo最好了。。。460的

使用特权

评论回复
11
guguo8266| | 2020-10-20 08:13 | 只看该作者
非常感谢楼主分享,还没有实现,最近有打算

使用特权

评论回复
12
lookjo| | 2020-10-27 16:57 | 只看该作者
有没有合并程序的工具

使用特权

评论回复
13
华芯3284494788|  楼主 | 2020-10-30 11:42 | 只看该作者

谢谢!

使用特权

评论回复
14
花间一壶酒sd| | 2020-10-31 19:18 | 只看该作者
demo呢?老大哥。

使用特权

评论回复
15
发的非官方的| | 2020-10-31 19:21 | 只看该作者
1.检查是否需要对第二部APP程序代码进行更新

使用特权

评论回复
16
发的非官方的| | 2020-10-31 19:21 | 只看该作者
如果不需要更新则转到4)


使用特权

评论回复
17
发的非官方的| | 2020-10-31 19:22 | 只看该作者
执行更新操作


使用特权

评论回复
18
发的非官方的| | 2020-10-31 19:23 | 只看该作者
4.跳转到第二部分代码执行

使用特权

评论回复
19
华芯3284494788|  楼主 | 2020-11-1 14:39 | 只看该作者
发的非官方的 发表于 2020-10-31 19:21
如果不需要更新则转到4)

使用特权

评论回复
20
camconli| | 2020-12-10 15:19 | 只看该作者
lookjo 发表于 2020-10-27 16:57
有没有合并程序的工具

jflash

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

234

帖子

1

粉丝