你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

OpenBLT移植到STM32F103战舰开发板上适用于所有STM32F103系列的Bootloader

[复制链接]
秋刀鱼的 发布时间:2024-12-30 11:42

作为嵌入式开发工程师,我们设计的产品在大批量量产后,在客户使用过程中发现bug,或者客户需要增添新功能时,我们不可能召回产品来进行分析升级固件,这时候,我们就需要使用Bootloader来进行修复固件了,嵌入式开发中采用的通讯协议五花八门,硬件平台也是百家争鸣,那么,有没有一种通用的bootloader架构,不限制平台,能方便的移植到各种电路板上,造福广大嵌入式开发工作者呢?

答案当然是肯定的,果真就有一款开源的bootloader架构,它叫做OpenBLT,是一个美国的嵌入式高手开发后开源公布在github上的,https://github.com/feaser/openblt

OpenBLT 许可证是 GNU GPL。意味着我们可以将 OpenBLT 集成到我们的闭源项目中。

好了,话不多说,我们献上干货。

1。硬件平台

这里我是用的是正点原子的战舰开发板STM32F103ZET6,所有STM32F103系列都可以拿我这个移植模版直接使用,基本无需修改即可使用(除了亮灯的LED1和LED0作为指示灯需要大家根据实际情况简单配置)。我先拍个照片

92a46fc4472a2b5a044f8ab4b6edd76.jpg

上面是战舰开发板,我接的右上角是DB9针的串口线,用到的是USART2,PA2和PA3口

大家根据实际情况,对串口和引脚进行修改。接下来我就一步一步交大家怎么修改。

2。我们进入openblt文件

image.png

从github上下载下来。

image.png

实际上就这3个文件夹

我们打开target文件夹内

image.png

image.png

image.png

把不需要的工程demo和source全部删掉即可,这里我使用STM32F1_Olimex_STM32P103_Keil项目,因为它使用的就是STM32F103的MCU,我们直接在工程上进行修改即可。

image.png

它有两个,一个是boot,我们主要需要修改的,一个是prog就是升级用的app工程

这里我们先修改boot工程

image.png

image.png

打开这个KEIL工程

打开main.c文件

image.png

先编译一遍。

BootInit()定位

image.png

跳转到ComInit()

image.png

这里我们只使用到串口,所以跳转到 Rs232Init();

image.png

image.png

波特率选择默认57600,也可以自己修改为任意波特率。串口通道我们选择1,就是使能USART2,

image.png

0代表USARR1

1代表USARR2

2代表USARR3

这里需要注意,千万别弄错了。

然后我们开始修改,还是从main开始

image.png

因为USART2使用PA2和PA3,所以要使能GPIOA时钟 和USART2时钟

下面是USART2用到的PA2 PA3 IO口使能

image.png

这个和前面是反过来的Init和Delnit

image.png

这里初始化就需要改这些就行了,我们再改别的地方

image.png

image.png

image.png

image.png

image.png

image.png

BootInit()->BackDoorInit()->BackDoorCheck()->CpuStartUserProgram()->CpuUserProgramStartHook()

一步一步定义到CpuUserProgramStartHook函数,按上图删掉LedBlinkExit();前面的语句。非常重要

至此,bootloader程序已经修改完,我们编译后烧录开发板,观察等没亮,右下角是电源灯,通电指示不受控制的。这是对的

8eef8207b5f06340db887d6acfa119b.jpg

3。我们修改prog程序,

打开KEIL工程

先修改LED灯文件

我们先查看战舰STM32F103的LED1和LED0原理图引脚分别是PB5和PE5

image.png

image.png

image.png

led文件修改这3处,然后回到main文件

image.png

image.png

image.png

HAL_MspInit初始化修改这些

image.png

image.png

HAL_MspDeInit修改这些

到此,修改完毕。

接下来我们先编译一遍工程,生成srec文件

image.png

image.png

打开Host文件夹,里面是升级上位机

双击下面这个MicroBoot.exe

image.png

image.png

我们先点击settings

打开串口助手,查看我们连接的是COM4,注意一定要和这个对应,否则无法升级

image.png

image.png

这个COM4是我的DB9串口数,大家每人电脑不一样,不要生搬硬套

波特率57600,对应bootloader里设置的波特率,bootloader设置9600,这里就选9600,

image.png

点击OK即可,其它的别管,我们只用到这些。

然后加载srec文件image.png

点击这个

image.png

输入自己的prog文件的实际路劲

image.png

image.png

升级完毕,这个上位机会自动退出消失。

然后我们查看板子现象

dab8b335d6f64ae1aeac0c4951d067f.jpg

LED0和LED1会交替闪烁,说明升级成功,完毕

我的工程在target压缩包里,大家可以下载烧录验证Target.zip

收藏 评论0 发布时间:2024-12-30 11:42

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版