STM32 OTA应用开发——通过内置DFU实现USB升级(方式1)
创始人
2025-05-28 14:44:25
0

STM32 OTA应用开发——通过内置DFU实现USB升级(方式1)

目录

  • STM32 OTA应用开发——通过内置DFU实现USB升级(方式1)
    • 前言
    • 1 硬件介绍
    • 2 环境搭建
      • 2.1 Keil uVsion
      • 2.2 zadig
      • 2.3 STM32CubeProgrammer
      • 2.4 安装USB驱动
    • 3 OTA升级
    • 结束语

前言

什么是OTA?

百度百科:空中下载技术(Over-the-Air Technology; OTA),是通过移动通信的空中接口实现对移动终端设备及SIM卡数据进行远程管理的技术。经过公网多年的应用与发展,已十分成熟,网络运营商通过OTA技术实现SIM卡远程管理,还能提供移动化的新业务下载功能。

实际上,现在我们所说的OTA比百度百科的定义还要更广泛,OTA的形式已经不再局限于手机和SIM卡,只要涉及到远程下载升级程序的方式我们都可以称之为OTA。例如通过4G,5G,WiFI,蓝牙等无线通讯进行下载升级的可以称为OTA,通过U盘,RS485等串行接口进行升级的也可以称之为OTA。

OTA的作用?
OTA的意义在于它在一定程度上突破了距离的限制,在不借助烧录器的情况下完成固件的下载升级,极大的方便了产品的升级和维护,降低售后成本。

什么是BootLoader?

百度百科:在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。

实际上,BootLoader不仅仅在操作系统上使用,在一些内存小,功能应用较为简单的单片机设备上面也可以通过BootLoader来完成OTA升级。

什么是DFU?

DFU全称为Download Firmware Update,是ST官方推出的一个通过USB接口进行IAP升级的方案,同串口ISP一样,他们都集成在了芯片内部的Bootloader区段,可以通过配置boot引脚来启动。

不过STM32内置DFU的型号都比较新,像STM32F4系列是有的,但是像F0和F1系列则没有,不过没有关系,如果你用的型号没有内置DFU程序,也可以通过CubeMX来快速生成和移植一个DFU功能程序到你的Flash中来使用。

使用DFU的优缺点?
使用DFU的好处是不用自己制作Bootloader,因为这部分代码在STM32出厂之前就已经做好并且烧录进去了,而且不占用用户代码的Flash,另外,在PC端我们也不需要专门定制一个上位机,因为官方就有专门的升级Tool以及USB驱动。
缺点是要改变boot引脚的电平,才能启动Bootloader,这样的话在应用场景上就有比较大的限制了。

所以,要根据项目的实际需求去选择合适的方案。

我之前也有发过一些关于STM32远程OTA的文章,实现的方式有很多种,感兴趣的同学可以去看一下。
OTA应用开发系列合集:https://blog.csdn.net/ShenZhen_zixian/article/details/129074047

1 硬件介绍

我这里测试用的是STM32F407。
用到的硬件接口如下:

接口引脚作用
USBPA11 PA12(必要)通过USB连接PC端,用来传输固件以实现OTA
BOOTBOOT0 BOOT1(必要)通过改变boot电平来切换运行模式
串口PA9(非必要)通过CH340连接到PC端,打印固件版本号,方便查看升级是否成功
LEDPF9(非必要)方便查看代码是否跑起来了

BOOT引脚配置对应如下图:
请添加图片描述

1)主Flash
主Flash起始地址为0x08000000,它指的是STM32内置的Flash,通常我们烧录的代码就是存放在这个位置。
2)系统存储器
系统存储器起始地址为0x1FFF0000,这种模式启动的程序功能是由芯片厂家设置的,STM32在出厂时会这个区域内置一段BootLoader, 也就是我们常说的ISP程序, 这是一块ROM,出厂后无法修改。我们要使用的DFU就是放在这里。
3)嵌入式SRAM
嵌入式SRAM起始地址为0x20000000,既然是SRAM,自然也就没有程序存储的能力了,这个模式一般用于程序调试。假如我只修改了代码中一个小小的 地方,然后就需要重新擦除整个Flash,比较的费时,可以考虑从这个模式启动代码(也就是STM32的内存中),用于快速的程序调试,等程序调试完成后,在将程序下载到SRAM中。

2 环境搭建

2.1 Keil uVsion

关于STM32以及Keil的环境这里就不具体介绍了,网上教程也很多,不懂的同学自行查阅资料。
环境搭建好之后需要准备一个能够正常运行的代码,用来测试我们后面的OTA升级。

2.2 zadig

zadig是用来安装一个USB驱动的,只有安装好这个驱动,后面的升级流程才能正常进行,不然识别不到STM32的USB DFU模式。
这里先下载好软件,后面我们再安装。
下载地址请自行查阅,或者在我上传的链接下载也行。
zadig:https://download.csdn.net/download/ShenZhen_zixian/87570348
注:本文测试的时候,用的是v2.7.7版本。

2.3 STM32CubeProgrammer

这个工具是用来烧录代码的,可以通过ST-Link、UART和USB下载。其中USB下载就是我们今天要讲的DFU模式。
STM32CubeProgrammer官方下载地址:
https://www.st.com/en/development-tools/stm32cubeprog.html
请添加图片描述
根据自己的操作系统下载对应的安装包,然后直接安装即可。
请添加图片描述
提示:默认地址C:\Program Files\STM32Cube\STM32CubeProgrammer\bin,如果安装完找不到应用程序的话可以在这个路径找到。

2.4 安装USB驱动

1、让STM32进入系统存储器启动模式
也就是配置BOOT0引脚拉高,BOOT1引脚拉低。
提示:BOOT引脚的状态要在MCU启动之前配置好才能进入对应的模式,可以先配置BOOT引脚再上电,也可以在配置好BOOT引脚之后复位MCU。
请添加图片描述

2、安装USB驱动
1)把STM32的USB连接到PC端,然后打开前面下载好的zadig,点击Install WCID Driver
提示:打开zadig之后可能会出现两种情况,第一种是什么设备都没有检测到,第二种是有检测到设备,但是设备不能正常使用。如下图所示。
不管是哪种情况,直接点击安装即可。

请添加图片描述
请添加图片描述
等待安装完成。
请添加图片描述
安装完成后可以在zadig上看到设备。
提示:如果没有看到设备,可以插拔USB,然后重复上面的操作。
另外,如果之前安装过DfuSeDemo驱动(能看到"STM Device in DFU Mode"设备),需要先卸载掉原来的驱动才能用zadig安装新的驱动。

请添加图片描述
请添加图片描述
如果前面的驱动安装没有问题,连接上电脑之后可以在设备管理器也能看到一个STM BOOTLOADER设备,而且是没有黄色感叹号的。
请添加图片描述

3、打开STM32CubeProgrammer
如果驱动和接线都没问题,那么在STM32CubeProgrammer可以看到检测到STM32设备。
提示:如果没有找到设备,请检查前面的步骤。
请添加图片描述

至此,环境部分就搭建完成了。

3 OTA升级

1、连接USB
把STM32的USB接入到PC端。
请添加图片描述
在STM32CubeProgrammer上连接设备。此时能读取到芯片的Flash。请添加图片描述2、导入hex或bin文件
打开要升级的固件(hex或bin都可以)。
请添加图片描述

请添加图片描述
打开后能看到固件存储的数据。
请添加图片描述

3、下载固件
点击“Download”,下载固件到STM32.
请添加图片描述

4、重启设备
升级完成后将BOOT模式要改成主Flash模式(BOOT0引脚拉低),然后重新上电或复位,即可运行新版本的代码。
请添加图片描述

至此,整个升级流程就走完了。

结束语

好了,关于如何通过STM32内置DFU实现USB升级就讲到这里,这种方式虽然限制较多,但在某些应用场景是很方便的,比如SB键盘,不需要自己编写Bootloader和上位机就可以实现OTA,而且官方的升级渠道还稳定。其他应用场景就再另说,合适的才是最好的。
如果你有什么问题或者有更好的方法,欢迎在评论区留言。

更多相关文章:
OTA应用开发系列合集:https://blog.csdn.net/ShenZhen_zixian/article/details/129074047

相关内容

热门资讯

刚刚,大跳水!超42万人爆仓!... 来源:券商中国 加密货币,遭遇抛售潮! 凯文·沃什被提名为下一任美联储主席所产生的后续效应,正持续波...
做好银行网点“加减法” 国家金融监督管理总局网站披露的信息显示,2025年共有约1.1万家银行业金融机构的线下网点获准退出,...
金价暴跌引热议,网友:商场门口... 来源:中国基金报 随着国际金价急速下跌,国内首饰金价也迎来大幅回调。 1月31日,老庙报1546元/...
内蒙古一银行员工将储户220万... 内蒙古一银行员工将储户220万元存款转走并挥霍,银行称员工已离岗不愿承担赔偿 1月31日,有媒体报...
老年医学科进修轶事|老年医学如... 和年苑,北京协和医院老年医学科公众号,传递老年医学的价值和声音 在这里,了解当代老年医学 Autum...
和讯投顾余兴栋:周五杀跌,下周... 周五大盘大幅度的杀跌又探底回升,收出一根长长的下影线,不少的朋友又在问我,那这根k线是不是就意味着调...
【数智周报】马化腾评豆包手机;... 【数智周报将整合本周最重要的企业级服务、云计算、大数据领域的前沿趋势、重磅政策及行研报告。】 观点马...
和美字节,用字节连接和美 和美字节(Hemei Byte),是杭州桑桥网络科技有限公司于 2026 年 1 月完成品牌升级后启...
仙乐健康56岁副总姚壮民业务员... 瑞财经 刘治颖 1月29日,仙乐健康科技股份有限公司(以下简称:仙乐健康)向港交所主板递交上市申请书...
詹姆斯下家概率:骑士最高退役第... 近日,有关詹姆斯的未来引发了大众的热议,相关机构也更新了这位巨星的下家概率,回归骑士是最大可能。 相...
原创 猛... 在国际金价屡创历史新高之时,资本市场正经历一场有趣的分化:有人急于套现离场,有人却大举加码。近日,一...
原创 男... 在爱情的海洋中,星座与情感交织出无数动人的故事。当一个男性用以下这四个称呼来称呼你时,他的爱情之舟正...
民航持续回暖:南航、海航预计去... 时隔五年,南航预计在三大航中率先实现年度扭亏。 截至1月30日晚间,中国国航(601111.SH)、...
公募加仓非银金融,后市机会如何... 基金增配保险、券商股。 最新数据显示,公募基金2025年四季度的非银金融仓位提高1个百分点。继有色金...
赵慧芳主任中医治疗产后“月子病... 赵慧芳主任中医治疗产后“月子病”的临床智慧 产后调理是中华民族传承千年的养生智慧,在中医理论中占据重...
江西万年青水泥股份有限公司20... 本公司及董事会全体成员保证信息披露的内容真实、准确、完整,没有虚假记载、误导性陈述或重大遗漏。 一、...
科学应对甲状腺结节,别让“结节... 随着健康意识的提升 超声检查在体检中普及率不断提高 甲状腺结节的检出率也显著上升 不少人拿着“结节”...
春节前,政府债发行提速 来源:郁言债市 01 1月资金面,两轮波动,中枢平稳 回顾开年以来资金利率走势,月内资金经历两轮波动...
【央行多措并举护航,专家预期节... 【央行多措并举护航,专家预期节前流动性保持充裕】1月29日,中国人民银行以固定利率、数量招标方式开展...
季节性因素叠加市场需求不足,1... 来源:界面新闻 记者 辛圆 国家统计局周六公布数据显示,1月份,中国制造业采购经理人指数(PM...