STM32的串口IAP技术是一种在运行时对User Flash进行更新升级的方法,允许在产品发布后通过预留的通信口对固件进行修改。本文将详细介绍如何使用UART实现串口IAP,以STM32F103ZET6为例。
实验涉及两个Keil工程:IAP工程和应用程序工程。IAP工程用于烧写IAP程序,而应用程序工程则实现实际功能。在STM32F103ZET6中,Flash大小为512KB,0x08000000是默认的烧写地址。IAP程序通常烧写到这个地址,而应用程序在IAP程序后开始。
1. 工程设置
- IAP工程设置:起始地址设为0x08000000,大小为12KB。
- LED工程设置:起始地址设为0x08003000,大小为64KB。
2. 编译与执行
- 生成.bin文件,使用fromelf.exe将.axf文件转换。需将fromelf.exe路径添加至环境变量PATH中,确保命令行能访问。
3. IAP源码解析
- 主函数:通过复位与PE2按键触发应用程序更新。
- Main_Menu函数:包含下载、上传、执行新程序等IAP功能。
- SerialDownload函数:处理Ymodem协议数据传输,将程序烧写到Flash。
4. 下载验证
- 通过串口ISP下载IAP程序,确保BOOT0和BOOT1引脚正确配置。
- 使用Ymodem协议通过IAP引导下载LED程序,如SecureCRT或超级终端。
5. 应用实例
- 断电重启后,按复位键与PE2键组合可以触发程序更新。
获取完整工程和更多细节,请私信杂烩君。嵌入式开发者可以借此实现设备的灵活升级。