AT32 MCU使用IAP的方法涉及在微控制器上创建特定固件,以实现在应用编程(In-Application Programming,简称IAP)功能,主要通过USART通信接口进行固件更新操作。
AT32微控制器的IAP功能允许用户在产品发布后方便地通过预留的通信口对产品中的固件程序进行更新升级。要实现IAP功能,需要设计两个项目代码:一个用于接收更新数据并执行更新;另一个是实际的功能代码。这两个项目代码都同时烧录在User Flash中,当芯片上电后,第一个项目代码会检查是否需要更新第二部分代码,如果不需要则直接跳转到第二部分代码执行。
为了更具体地理解如何在AT32 MCU上使用IAP,下面将详细介绍其步骤和技术要点:
准备工程和源码
获取软件和源码:首先需要从BSP固件库的utilities文件夹中获取支持IAP的上位机软件和示例源代码。这些资源包括IAP_Programmer.exe上位机软件和嵌入式IAP USART示例源代码
。
硬件和软件资源:确保有适当的硬件资源如AT-START-AT32F403A实验板,以及相应的软件资源如IAP_Programmer.exe工具和示例源码
。
设置地址分布
配置地址空间:在AT32 MCU的内存中正确配置地址空间是非常重要的。通常,bootloader代码存放在较低的地址段,而app代码紧随其后。例如,可以将bootloader code存放在0x8000000 size: 0x4000(16K Byte),app code存放在0x8004000 size: 0x40000(256K Byte)
。
编写和配置bootloader与app工程
Bootloader工程设置:需要编写并设置bootloader工程项目,这个工程负责接收和更新app代码。它应当包含用于USART通信的相关代码,并能够通过某种协议(如自定义协议)与上位机软件通信
。
App工程设置:App工程则是实际的功能代码工程。在IAP过程中,这部分代码将被bootloader代码更新。因此,需要正确设置其在Flash中的地址,以确保bootloader可以正确地读取和写入这部分区域
。
实现USART通信协议
定义通信协议:IAP过程中,MCU通过USART与外界通信,必须实现一个稳定可靠的通信协议。可以使用自定义协议或已有的通信协议来实现这一过程。上位机软件IAP_Programmer.exe就是基于这样的协议来发送更新数据到MCU的
。
进行IAP升级流程
运行bootloader程序:将编译后的bootloader程序下载到实验板或目标设备上。这部分程序会在启动时首先运行,并通过USART接口与上位机软件通信,等待接收新的app固件
。
使用上位机软件进行升级:通过IAP_Programmer.exe等上位机软件,选择正确的串口、APP下载地址和bin文件,然后点击Download开始下载过程。此过程中,可以通过LED指示灯或其他方式观察程序的状态
。
调试和测试
验证升级结果:升级过程完成后,重启MCU,观察是否成功引导并运行新的app程序。这一步骤非常重要,确保整个IAP过程的正确性和稳定性。
此外,还有一些重要的注意事项和建议,以确保IAP过程的成功:
在设计固件时,确保bootloader代码和app代码在Flash中的地址分布合理,避免相互干扰。
确保USART通信协议的稳定性和可靠性,避免在升级过程中出现数据传输错误。
在升级前后进行充分的测试,包括单元测试、集成测试和回归测试,确保新app的功能性不受影响。
考虑在bootloader中实现一些保护机制,以防止不合规的固件被误写入MCU。
关注MCU的电源供应和环境稳定性,防止在IAP过程中因供电不稳或外部干扰导致失败。