通过USB用STM32片内自带Bootloader下载程序及注意事项

2021-05-29 12:24发布

各位朋友大家好,祝大家周末愉快。这两天有朋友说能不能介绍一下我们内部自带的就是帮助我们下载调试程序或者编译好的程序的那部分功能,我今天就借助一个ST官方的视频给大家讲解一下。因为这个官方视频他讲的是英语。

QQ浏览器截图20210529122002.png

所以我给大家简单的翻译一下,看一下他这个怎么操作的。

实际上我们在使用的时候,大部分bootloader还是自己写的,为什么要自己写呢?因为我们如果只下载单个的单边机那是可以的。但是我们在实际应用过程中有可能这个系统是联网的,那我们必须写自己的才能实现这个联网的这个系统的固件升级。

因为单个的话它有个问题,你一旦这个升级失败了,那么重启之后,它就无法进入到我们的这个,他那个就无法跳转到我们的应用程序,因为应用程序已经破坏了,跟我们的那个自己写的完全不一样。如果我们自己写的的话,即便这次升级失败,比如联网的过程中,有部分主机升级失败了,没关系,它自动运行到我们运行的那个自己编译的那个bootloader。

那么我们还可以再一次的尝试升级。这样系统的话能够再次激活,对吧?所以说在大部分的应用系统还是我们自己写这个bootloader的。

但是通过他这个视频的学习呢,我们可以知道一点,就是我们自己要写bootloader大致的过程跟他的官方是很相似的。

也要遵守这些过程,哪些过程呢?我们看一下他的视频。他的官方呢是以一个单片机为例,但是作为他是通用的,和哪种单片机没有关系。

他这里就介绍USB升级固件的好处了,这是一个开发板USB连接的这个外设非常少,而且很多单片机它都自带了USB  的功能,只要带有u s b 接口的那个功能,它就支持这个USB 升级,而且主要是他的一些电路非常少。

使用USB 之后呢,我们就不需要使用我们平时调试的的电路,包括这个USB 接口,还有这个转换芯片都不需要了,所以是非常方便的,

要使用这个USB 下载,下载一个它官方的下载工具叫DeFuse,下载下来然后安装。安装以后呢有两个文件,一个是把我们要下载的那个文件是以hex 结尾的那个文件转换为USB下载工具要用到的那种defuse 那种格式的一个文件。这里涉及到一个点啊,就是文件的转换。

实际上我们在自己编写BOOTLOADER的或者下载APP的时候,也要对我们的这个应用程序我们一般是二进制程序进行进一步的打包。这样的话你下载下去也能在从机里面也就是单片机里面还要对这个文件接收到的文件格式进行判断。

因为不能说用户万一点错文件了,或者怎么着你就下下进去了,那系统不能运行,对吧?所以这里面还有一个打包的过程。

我们自己做bootloader也要做这一步的。

111.png

这里呢就选用一个我们安装ST库文件以后呢,它自带了很多的示例程序嘛,示例程序里面就有很多的这个代码,他随便选了一个LED闪烁的那个例子,那个文件进行转换,转换为一个USB下载的那种文件。

然后看一下他是怎么下载的,这个DiFuse下载工具。打开这个下载工具以后,我们然后打开设备管理器,这个时候他连通好以后,你可以发现他这个DiFuse这个USB没有出现在设备管理器里面,说明这个还没有连接成功,对吧?

要想设置USB连接成功了,要把USB的Boot0,Boot0这是个芯片的引脚上拉到上拉到高电平,这个我们在做板子的也要注意,要下载的话,要留一个上拉电平上拉的这个跳帽。然后连接好之后再复位,然后这个设备就出现了。出现了之后呢,通过这个下载工具选择我们刚才转换过的这个文件,然后点升级就可以了。


下载完成以后呢,还要按下复位键才真正的跳转到我们这个里面,然后要把BOOT0的上拉去掉。

再按复位键这个DeFuse设备没有了,因为现在运行的是用户程序,它不是跳转到这个DeFuse那种状态了。

那么通过这个的学习,我们就知道这个通过USB下载的话,一个是要设置BOOT0引脚上拉,让系统启动以后进入单片机内部自带的bootloader的区域运行那部分程序,这是一个要注意的地方。

然后呢要这个程序的下载,官方提供的这个下载工具首先进行转换,然后再进行下载。下载的话就给大家介绍这里,谢谢大家。