前段时间要写一个BootLoader程序,想起来好像在STM32的HAL库里面看到过相关的Demo,打算参考一下。打开相关的目录看了一下,确实是有相关文件:
但是没找到工程文件。没办法,那就自己百度吧,关键词OpenBootloader一搜索,发现这不是ST原创的,是一个开源的项目。简称OpenBLT,是一种开源引导加载程序,可以在任何微控制器上运行,并使用支持Usart、Can、USB、SD卡等多种类型的通信接口来执行软件更新。
官网地址:
https://www.feaser.com/openblt/doku.php?id=homepage
下载地址:
https://sourceforge.net/projects/openblt/files/
百度网盘:
链接:https://pan.baidu.com/s/1ZZV7AxGna5cwH_EkIDjftA?pwd=cdq1
提取码:cdq1
下载下来后发现,里面有很多种单片机的Demo程序,还有不同的IDE。
正好手上有个STM32G0的开发板,拿来试一下。打开G071的Keil目录,里面有Boot程序和用户程序Prog两个工程。
首先将Boot 程序用仿真器下载到开发板中,打开配套的上位机软件MicroBoot v2.05,这里使用的是串口升级,设置好串口号和波特率。
点击Browse选择编译好的用户程序,这里是.srec格式的文件,点击选择后会直接下载程序。如下:
由于用户程序不大,下载过程还是挺快的。而且Boot程序编译后只有7KB左右,也不大。该单片机没有CAN、USB等接口,对于其它一些单片机,可以配置为通过其它接口方式升级程序。例程里几乎有STM32全系列的Demo,用起来很方便。想移植到其它单片机的可能需要自己研究一下了,主要是接口和flash擦写部分程序。
这里说明一下,.srec格式的文件的生成方式跟bin文件类似,在Keil中设置如下:
另外,用户程序的Flash起始地址是通过.sct文件配置的:
也可以在IDE里配置,两种方式都可以。
欢迎关注公众号"嵌入式技术开发",大家可以后台给我留言沟通交流。如果觉得该公众号对你有所帮助,也欢迎推荐分享给其他人。