1/文件说明
该文件包含三个工程:
IAP_MAIN :实现IAP的程序,实际的BootLoader
GPIOTEST_APP:简单的实现一个GPIO的翻转程序,该工程的代码已经设置起始地址为0x08000800,生成的Bin文件就是需要被下载到目标MCU的应用程序。
Host_Side_Test:这个是使用了一个STM32F401Discovery板子来模拟了一个I2C的主机,使用I2C接口(还有两个GPIO:PB0+PB1)来实现将片内的代码下载到目标MCU中的目的。
2/如何使用
IAP_MAIN 中的代码支持通过I2C接口来改写内部的Flash,其中目前的应用地址为0x08000800,IAP代码自身占用空间范围:0x0800000---0x080007ff,一共2KByte(实际为2016字节,不到2K)。此工程的代码需要先下载到MCU中。
GPIOTEST_APP中的代码直接生成Bin文件,通过ST-LinkUtility下载到STM32F401的0x08010000地址中。
将Host_Side_Test工程的代码下载到STM32F401的0x08000000地址中。
连接目标板子(Nucleo-L011-32)和STM32F401-Discovery 按照如下方式。
STM32F401-Discovery Nucleo-L011-32
PB0 -------------------------- NRST
PB1 -------------------------- PA0
PB6(SCL)-------------------------- PB6
PB9(SDA)-------------------------- PB7
GND -------------------------- GND
3.3V -------------------------- 3.3v
给Nucleo-L011-32供电。这时就开启了I2C下载程序,之后,能够看到LD3每隔一秒闪烁一次。
通过STM32F401-Discovery的黑色(B2 RESET)按键,可以重复下载APP程序到另外一块目标板子(前提是已经固化好IAP代码)。
3/注意事项
目标代码必须是0x200的整数倍,0x08000800,0x08000400,0x08000200均是有效的地址,可根据实际的应用去改写。
下载的代码的地址,必须是0x80的整数倍(因为L011的页大小是128字节,只能整页地址才能擦除改写)。
编程代码中使用的代码大小,是在生成目标代码之后通过软件工具修改的,以后还需要根据你自己的代码大小做修改。 |