功能介绍
IAP 即在应用编程,IAP 是用户自己的程序在运行过程中对 Flash 的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。
IAP 原理介绍
通常实现 IAP 功能时,需要在设计固件程序时编写两个项目代码,第一个项目程序即 Boot程序不执行正常的功能操作,而只是通过某种通信方式(如 USB、USART)接收程序或数据,执行对第二部分代码的更新;第二个项目程序即 APP 程序用户真正的功能代码。这两部分项目代码同时烧录在 Flash 中,当芯片上电后,首先是第一个项目程序 Boot 开始运行,它主要实现如下功能:
- 步骤 1:检查是否需要对第二部 APP 程序代码进行更新
- 步骤 2:如果不需要更新则转到步骤 4
- 步骤 3:执行更新操作
- 步骤 4:跳转到第二部分代码执行
第一部分 Boot 代码可以通过 SWD 或者离线编程器下载到芯片 Flash 内部,首次下载程序时,第二部分 APP 和第一部分 Boot 可以一起烧入芯片内部,以后需要程序更新再通过第一部分 Boot 代码更新。
IAP 运行流程图
下图是 PC 上位机与 MCU 下位机通讯的流程图。(注意:如果在 Boot 程序中收到程序更新帧,则继续待在 Boot 程序中,不会进行软件复位。
Boot 程序层次结构图
底层驱动实现
图二灰色区域为跟芯片相关的文件,每个芯片系列都是由下面三个文件构成:
- hc32lxxx.h:芯片头文件,比如 L006 的头文件为 hc32l13x.h。
- system_hc32lxxx.h:针对各芯片中断函数名的重定义。
- utils.h:boot 中要用到的各芯片底层驱动在此文件中实现。
APP 程序 demo 样例
hc32lxxx_app 文件夹下是跟 Boot 对应的各芯片的应用程序 demo,demo 中集成了各芯片的驱动,方便用户直接在 demo 中编写自己的应用程序。
|
越来越全了