第二部分: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.WorkSoftARMBIN40fromelf.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文件就可以作为上位机下载文件。
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』