STM32F103RCT6自己动手移植一个BootLoader—openBLT–基于XCP协议
使用的是正点原子STM32F103RCT6 mini开发板,本次仅仅记录移植过程
使用STM32CubeMX生成两个工程,一个用于移植openBLT作为boot程序,一个当做APP程序
一、使用STM32CubeMX生成boot工程
1.首先从官网下载openBLT源码
2.使用STM32CubeMX新建boot工程,只使用RCC及USART1,另外两个GPIO是LED灯,可以不使用
- USART1波特率配置为57600(和官方Demo保持一致)
- RCC可以使用内部的,也可以使用外部的
3.USART1使用LL库(和官方Demo保持一致)
4.移植openBLT源码文件到boot程序,有三个文件记得添加flash_layout.c(放到工程即可,系统自动调用)、blt_conf.h文件、cpu_comp.c,共有下图这么多文件,Source里面没有的就从DEMO里面找,可以根据需要增删通讯协议
所有源码路径:
\openblt_v011200\Target\Source
\openblt_v011200\Target\Source\ARMCM3_STM32F1
\openblt_v011200\Target\Source\ARMCM3_STM32F1\Keil
\openblt_v011200\Target\Demo\ARMCM3_STM32F1_Nucleo_F103RB_Keil\Boot
5.Disable回调函数,此处不使用回调函数
6.注释掉LL库头文件,不使用ll_gpio库
7.修改blt_conf.h文件,改为使用串口1(官方demo使用的串口2)
8.注释掉两个未使用的函数,未使用LED灯
9.依据官方的DEMO,在main函数里面增加头文件boot.h,和初始化函数BootInit();,任务函数BootTask();
到这里编译不报错
10.设置Boot size要和flash_layout.c保持一致
11.中断向量表偏移地址需要≥中断向量表个数*4
二、APP程序配置
1.APP程序任务是LED闪烁
2.设置APP程序起始地址及size
3. APP程序编译生成srec文件
fromelf --m32 --output=…\openblt_test.srec .\openblt_test\openblt_test.axf
三、设置上位机
1.打开上位机
2.设置波特率及端口
3.此时就可以使用官方上位机下载程序,并可以成功运行
完整工程详见:https://download.csdn.net/download/qq_34471936/21712881?spm=1001.2014.3001.5501