一、环境搭建
1、想要实现单片机串口在线升级,需要两个工程:一个bootloader工程,负责跳转到主应用程序;一个主应用程序,负责实现业务逻辑和升级业务,下面称为主程序。
这两个工程的ROM和RAM配置如下:
bootloader:
主程序:
可以看到,它们的程序起始地址是不同的。
2.AT32工程调试工具用的是CMSIS-DAP
3.生成bin文件配置
用fromelf.exe生成.bin文件
D:\Keil_v5\ARM\ARMCC\bin\fromelf.exe --bin -o ./objects/AT32F421F8P7.bin ./objects/AT32F421F8P7.axf
二、代码实现
1、bootloader
bootloader功能主要有两个功能,一个是跳转到主程序地址,也就是跳转到0x8002000;另外一个是根据标志判断需不需要更新程序。
根据标志位判断需不需要更新:
跳转到主程序地址运行主程序:
2、主程序:
串口代码这里就不贴了。