作为嵌入式开发工程师,我们设计的产品在大批量量产后,在客户使用过程中发现bug,或者客户需要增添新功能时,我们不可能召回产品来进行分析升级固件,这时候,我们就需要使用Bootloader来进行修复固件了,嵌入式开发中采用的通讯协议五花八门,硬件平台也是百家争鸣,那么,有没有一种通用的bootloader架构,不限制平台,能方便的移植到各种电路板上,造福广大嵌入式开发工作者呢? 答案当然是肯定的,果真就有一款开源的bootloader架构,它叫做OpenBLT,是一个美国的嵌入式高手开发后开源公布在github上的,https://github.com/feaser/openblt 好了,话不多说,我们献上干货。 1。硬件平台 这里我是用的淘宝购买的STM32F405开发板,所有STM32F405/407系列都可以拿我这个移植模版直接使用,基本无需修改即可使用(除了亮灯的LED1和LED0作为指示灯需要大家根据实际情况简单配置)。我先拍个照片 上面是STM32F405开发板,我接的右上角是DB9针的串口线,用到的是USART1,PA9和PA10口 大家根据实际情况,对串口和引脚进行修改。接下来我就一步一步交大家怎么修改。 2。我们进入openblt文件 从github上下载下来。 实际上就这3个文件夹 我们打开target文件夹内 这里我们只需用到STM32F405模版,其它全部删除 先打开boot文件 打开keil 1。我们先配置串口,打开原理图可知 使用的串口是USART1 PA9和PA10 使能串口1时钟和引脚时钟 同样的 串口初始化修改完毕 打开hooks.c文件 删掉LED之前的函数语句 打开这个配置头文件 因为用到是USART1,所以下标选择0 然后编译后烧录到板子上,至此完成了bootloader的烧录 观察板子上,LED是不亮的 3。修改prog应用程序 打开keil工程 先修改main文件 因为LED0和LED1是PE2 PE3所以需要使能GPIOE时钟 配置串口PA9 PA10和LED :PE3 PE4 同样的 这里时钟和引脚初始化完毕, 下面修改LED文件 我用到的是PE3 PE4,大家自行修改 然后编译生成srec文件 先打开bootloader上位机,进入Host文件夹 双击MicroBoot.exe 点击setting COM4是我自己的实际DB9串口,你们是多少选COM几,千万别弄错 选择生成的srec文件 升级完毕,这个上位机会自动消失 然后观察STM32F405开发板,LED0 LED1闪烁,bootloader成功升级固件 |
OpenBLT移植到STM32F103战舰开发板上适用于所有STM32F103系列的Bootloader
stm32使用定时器触发dma传输,启动dma没反应的几种情况的解决方法
为什么要先开启STM32外设时钟?
【STM32MP157】从ST官方例程中分析RPMsg-TTY/SDB核间通信的使用方法
串口通信波特率异常的解决办法
【经验分享】STM32实例-RTC实时时钟实验④-获取RTC时间函数与中断服务函数
STM32 以太网 MAC Loopback 的实现
《RT-Thread设备驱动开发指南》书籍学习记录
STM32F407/STM32F417通过以太网实现在应用中编程 (IAP)
【NUCLEO-WB09KE评测】STM32WB09KE的内部BootLoader使用