STM32 IAP(UART模式)的BOOT部分
该项目实现通过PC的串口对STM32系列MCU进行IAP。
该项目包含三个部分(三套代码):
本篇是属于运行在STM32平台的Boot部分,另外两篇介绍请参阅:
该部分作为Boot可运行在多个STM32F10x系列:
CL系列、XL系列、HD系列、HD_VL系列、MD系列、MD_VL系列、LD系列、LD_VL系列。
这套代码几乎不用移植就可以用在你的项目上。只需要简单的根据你的项目配置工程。
在开始使用之前请详细阅读下面关于STM32系列分类的介绍。
“Binary”: 包含将hex文件转换成bin文件的工具,你也可以不用这个工具,直接用Keil安装目录中的hex转bin工具。我在这里用了这个工具是因为每个人的安装目录不同,不可能做到一致,直接将转换工具放在项目中可以保证每个人都会有一致的效果。(这里我已经设置好了,使用者不必关心)
“CORE”: STM32的启动文件和内核文件
“IAP”: 实现IAP功能的主要函数都在这里
```
inc/common.h 与硬件相关的配置及一些基础功能函数的头文件
inc/iap.h 实现iap功能函数的头文件
inc/iap_config.h IAP的配置文件(用户可以根据需求更改的文件)
inc/stmflash.h 内部flash操作的函数的头文件
inc/ymodem.h 实现Ymodem协议的函数的头文件
- "IAP\src": 包含IAP固件的源文件
src/common.c 与硬件相关的一些基础功能函数
src/iap.c 实现iap各种功能的函数
src/stmflash.c 内部flash操作的函数
src/ymodem.c 实现Ymodem协议的函数
```
“MDK-ARM”: KEIL的工程文件及user文件
“STM32F10X-FWLib”: ST官方库文件
“keilkill”: 用来清除中间文件的bat脚本,双击运行即可
“README”: 自述文件
打开MDK-ARM文件夹下的IAP.uvproj工程
在工具栏(Select Target)中选择与你的硬件对应的型号:
在iap_config.h文件中设置你的用户应用程序(app)的起始地址ApplicationAddress(我这里是0x8003000) 。设置用来存储标志信息的flash地址IAP_FLASH_FLAG_ADDR(我这里的是0x8002800,即0X8003000-2KByte)
在option->target->1ROM中设置boot的起始地址是0x8000000,设置你为boot分配的flash空间大小(我这里是0x3000)。通过第三项和第四项的设置你会知道,我把flash在逻辑上分为3个部分:
编译工程,会在MDK-ARM -> OUTPUT 文件夹下生成与你的硬件平台相对应的文件夹,在这里面就会有hex文件和bin文件。
通过JLINK或者STlINK或者uart下载目标文件到你的硬件平台。
使mcu运行起来。
打开上位机工具,通过串口和MCU进行连接。
选择需要烧入用户应用程序(应用程序app的设置请点击此处 )。
根据你的需求选择更新app、读出app、擦除app、app进入iap模式、复位运行app等操作。
注:boot部分只需要烧录一次即可,之后所有操作都通过上位机工具完成。
+ 数据位长度 = 8 Bits
+ 1位停止位
+ 无校验位
+ 波特率 = 115200 baud(根据你的项目需求选择合适的波特率)
+ 硬件流控: None
+ “包长度”指的是数据传输过程中每一包的长度。可根据你的需要选择合适的包长度。
level04:
用户使用master版本即可。
代码时隔一年多再次更新,增加了通过后备寄存器来存储各种状态标志,使用方法见下:
选择iap_config.h文件中的define USE_BKP_SAVE_FLAG 1 //1:使用后备寄存器存储flag标志,0:使用flash存储flag标志(之前的版本就是这样)
注意app部分的USE_BKP_SAVE_FLAG值要和boot保持一致