STM32F103RCT6自己动手移植一个BootLoader—openBLT–基于XCP协议

使用的是正点原子STM32F103RCT6 mini开发板,本次仅仅记录移植过程

使用STM32CubeMX生成两个工程,一个用于移植openBLT作为boot程序,一个当做APP程序

一、使用STM32CubeMX生成boot工程

1.首先从官网下载openBLT源码

cubeMX MAKEFILE_stm32


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.此时就可以使用官方上位机下载程序,并可以成功运行