基于STM32F407的bootloader、IAP、Flash_APP、上位机设计(二)

基于STM32F407的bootloader、IAP、Flash_APP、上位机设计

第二部分:Flash_App设计

前期准备:

一、硬件:STM32F407VET6板一块,IAP使用串口通信,板上需引出串口或有DB9接口都行(如果不使用串口,使用其他协议均可)。

二、软件:KEIL4.73版本,关于IAP读写FLASH的源代码是使用战舰的源码,共有iap、stmflash、sys等文件,上位机软件设计使用QT5.5。

工作开始:

三、Flash_App工程中有几个需要修改的地方。

(1):Target里面IROM1,Start修改为0X8010000,这个和Bootload的#define FLASH_APP1_ADDR        0x08010000  一致,Size修改为0xF0000,代表你的APP最大的内存,如果APP过大则不能正常运行,因此需要确认你的APP具体的真实大小再修改该值。

(2):User配置里面RUN#1需要增加fromelf.exe文件,路径在KEIL的安装路径里面,可以下载everything搜索工具搜索即可,例如我的路径F:\2.WorkSoft\ARM\BIN40\fromelf.exe --bin -o ../../app.bin  ./Flash/Obj/output.axf 

(3):路径后面跟着--bin -o ../../app.bin  ./Flash/Obj/output.axf,表示应用输出一个app.bin文件,文件位置在project的../../上,也就是上一层再上一层的目录下,output.axf表示生成bin文件的来源,在工程的output下。

其它配置均和普通工程相同。

四、程序使用

        在程序上面,配置和正常使用一致,但在最开始需要增加一句SCB->VTOR = FLASH_BASE | 0x10000;//设置偏移量。0X10000是0X8010000同等关系,如果你的APP初始位置不一样,这个地方也需要更改,这段代码表示将FLASH偏移到0x10000中,这样就可以正常使用。

        如果bootloader的外设通过boot按键来做了选择,那么APP模式下bootloader不配置外设(例如IO,TIMER,UART等),APP可以使用任何的系统配置,如果APP模式下Bootloader配置了外设,那么APP尽量不要使用,会互相干扰,比较bootloader也是在跑。

五、生成的bin文件就可以作为上位机下载文件。

 

 

你可能感兴趣的:(STM32)