如何选择适合DFU的微控制器

Duke 2018-06-27 09:16 次阅读

几乎所有的嵌入式系统都需要能够在现场更新其固件,从而添加新特性或修复漏洞。然而,固件现场更新可能会颇具挑战性,因为开发人员必须编写自己的引导程序或从第三方元器件供应商处购买引导程序。

有一个较为简单的方法。本文将介绍如何使用很多微控制器都会内置但通常会被忽视的设备固件更新 (DFU) 功能。

固件更新选项

从头开始开发引导程序并非易事。开发人员需要解析他们的闪存空间,以便多个应用可以共存。然后,他们还需要开发几种方法在不使用编程工具的情况下将其编译的二进制程序转移到微控制器中。这需要他们开发自己的通信协议或者需要添加外部存储器以存储新映像而增加了系统的复杂性。他们还要增加其微控制器上的内存容量。

同样地,软件本身也会变复杂,因为引导程序需要设置系统状态及确定跳转到应用代码是否安全。

使用定制引导程序可以为开发人员提供其应用非常需要的灵活性,但很多无需开发人员工作量的应用可以采用一种固件更新标准:USB 标准的内置设备固件更新 (DFU) 类。这可用于通过其 USB 端口在现场更新微控制器的应用代码,从而大大减少固件升级过程和开发周期。

DFU 已经普遍使用,这使得一些微控制器供应商(如 STMicroelectronics)甚至都提供了执行硬编码到其 ROM 中的更新所需的软件。那些没有提供的,通常会提供如何支持 DFU 的示例代码。

选择适合 DFU 的微控制器

支持 DFU 的最简单方法是选择一个已经在其 ROM 中包含 DFU 的微控制器,如 STMicroelectronics 的 STM32 IoT Discovery 节点和 STM32F429 Discovery 套件上的设备。

STMicroelectronics STM32 IoT Discovery 节点的图片

图 1: STMicroelectronics STM32 IoT Discovery 节点基于运行 STM32L475 MCU(其中包含用于固件更新的 DFU 模式功能)的 ARM® Cortex®-M4 核。此特定设备设计用作 IoT 节点。(图片来源:STMicroelectronics)

STM32 IoT Discovery 节点是一种低成本开发板,设计用作 IoT 传感器节点。该开发板包括几个不同的接口,用于连接 Wi-Fi蓝牙等板。让人感兴趣的是,板载 STM32L475 为开发人员提供在设计用于连接互联网的设备上测试和使用 DFU 功能的能力。

对于只想在独立的正常设备上测试 DFU 的开发人员来说,STM32F429 Discovery 套件是 STM32F4 系列微控制器的知名、低成本开发套件。我们来讨论开发人员如何着手开始在这些微控制器上测试 DFU。

STMicroelectronics STM32F429 Discovery 套件的图片

图 2: STMicroelectronics STM32F429 Discovery 套件 基于 ARM® Cortex®-M4 核。这个低成本开发板的 MCU 还包括用于进行固件更新的 DFU 模式功能。(图片来源: STMicroelectronics)

一个简单的 DFU 示例

每个微控制器访问 DFU 的方式都不同。通过一个简单的示例来看一看开发人员如何在运行 STM32L475 MCU 的设备上更新其固件。

如前所述,STM32 微控制器包括内置到其 ROM 中的 DFU 引导程序。要访问该引导程序,开发人员需要在 MCU 启动时拉动其中一个 BOOT 引脚将其接地。BOOT 引脚控制 MCU 启动时所处的模式,如从闪存、RAM 中启动,或者我们首选的 DFU USB 模式。

使用 DFU 准备要供用户下载的应用不需要开发人员进行任何额外的工作。GNU 编译器收集 (GCC) 以及很多其他工具链支持在编译应用时生成 DFU 文件。在这里,开发人员的唯一诀窍是确定该文件的存储位置:跟所有典型应用一样,要找到 .dfu 文件,可以参见调试或对象文件夹。

DFU 文件与二进制格式、s-record 格式和十六进制文件等其他应用记录格式非常相似。文件格式包括通过 USB 中继转发、处理、然后写入闪存内指定位置的地址和数据信息。该过程无缝连接,使开发人员很少(如果有的话)需要检查正被使用的协议。这些都是在后台进行的,可帮助降低固件更新过程和开发工作的复杂性。

开发人员可以使用几个不同的工具通过 DFU 将他们的应用转移到微控制器中。dfu-util 是可以使用的一般命令行工具。它在 Linux 和 Windows® 上都以开源软件包形式提供。如果开发人员使用 STM 工具链,他们就可以利用 STMicroelectronics 应用 DfuSe(图 3)。

STMicroelectronics DfuSe 工具的图片

图 3: STMicroelectronics DfuSe 工具可用于编程由 GCC 等编译器生成并加载到适合 DFU 的微控制器中的 DFU 文件。(图片来源:Beningo Embedded Group)

DfuSe 是 Windows GUI 实用工具,可检测已在 DFU 模式下通电并通过 USB 连接到计算机的任何 STM32 设备。开发人员可以检索编程供应商和产品 ID 等信息。如果没有对闪存空间采取适当的安全保护,他们甚至可以复制 MCU 的存储内容并使用上传操作框将其存储在计算机上。

使用 DfuSe 时,开发人员一般只使用“升级”或“验证操作”部分。在此区域,开发人员可以选择其 DFU 应用文件,然后选择升级按钮。然后,DfuSe 将自动协调固件更新过程,直到整个文件已成功加载到 MCU。然后,开发人员可以选择验证映像已成功接收。一经验证,BOOT 引脚就可以设置回其默认配置,如引导至闪存,然后选择‘离开 DFU’模式加载并执行更新的固件。

在没有 DFU 支持的设备上使用 DFU

只是因为微控制器不在 ROM 内提供 DFU 引导程序,并不意味着开发人员仍不能利用 DFU 功能。DFU 属于 USB 类,在很多 USB 堆栈中都受支持。这表示,开发人员同样能向其应用框架简单的添加 DFU 功能,且仍能执行 DFU 更新。

例如,Microchip Technology 的 AT32UC3A3 不具有内置的 DFU 模式(图 4)。开发人员可以遵照描述 DFU 工作原理及开发人员应当如何将其微控制器配置为适当支持 DFU 的简单应用说明。

Atmel AT32UC3A3 UC3-A3 XPLD AVR®32 MCU 32 位 AVR 嵌入式评估板的图片

图 4: AT32UC3A3 UC3-A3 XPLD AVR®32 MCU 32 位 AVR 嵌入式评估板不包括片载 DFU,但可以添加上支持 DFU 固件更新特性的框架 USB 代码。(图片来源:Microchip Technology)

执行固件更新的技巧和诀窍

在现场更新固件并不一定只能从适合 DFU 的微控制器中进行。开发人员可以决定更新固件的替代方法是否必要或更加实用。在这种背景下,开发人员应记住关于其固件更新过程的几个技巧。其中包括:

  • 使用校验和或哈希验证将写入微控制器内存的应用。

  • 选择内存足够的微控制器存储固件的备份件,以便发生错误时可以回滚固件版本。

  • 验证在微控制器具有内置闪存加载程序时,终端用户不会意外触发该程序。

  • 确保任何软件引导程序均已编译且针对尺寸进行优化。

  • 锁定闪存外设,使应用无法从内存中读取出且不能被反向工程。

  • 务必确保栈指示器、向量表和程序计数寄存器均设置为适当的应用值。

  • 考虑按 KL46Z Freedom 板的演示使用采用了 USB MSD 的拖放更新之类的替代更新方法(图 5)。

NXP Semiconductor 的 KL46Z Freedom 板图片

图 5: NXP Semiconductor 的 KL46Z Freedom 板是一种低成本开发板,默认不支持 DFU。开发人员可以使用 USB MSD 之类将新固件映像拖放到内存中的替代更新方法。(图片来源: NXP Semiconductor)

总结

几乎所有嵌入式系统都需要在现场更新应用代码以避免回调的方法。从头开始创建引导程序或者修改现有引导程序可能会增加开发周期的复杂性和集成问题。

反之,开发人员可以使用内置到 USB 标准中的经过充分证明的 DFU 功能来快速、高效、毫不费力的执行现场升级。为了让这个过程顺利进行,开发人员需要仔细检查其微控制器并确定 DFU 是否已内置到其微控制器中或者它们是否需要包括支持 DFU 功能的软件堆栈。    

收藏 人收藏
分享:

评论

相关推荐

9.19周三STM32问答小结

1、STM32f446中的BOOT0电路设计 2、STM32 RTC - 如何更新? 3、STM32F103:定时器可以干扰uart吗? ...

发表于 09-19 17:40 113次 阅读
9.19周三STM32问答小结

STM32和TFT彩屏显示图片程序(附取模软件)免费下载

本文档的主要内容详细介绍的是STM32和TFT彩屏显示图片程序(附取模软件)免费下载。

发表于 09-19 17:21 5次 阅读
STM32和TFT彩屏显示图片程序(附取模软件)免费下载

STM32的PID算法实例

STM32单片机的PID算法实例,通过PID算法控制STM32的PWM输出,反馈量是PWM低通滤波后得到的AD ...

发表于 09-19 15:44 120次 阅读
STM32的PID算法实例

STM32入门必备《如何安装RealView MDK软件》

考虑到大多数同学都是从单片机过渡到 STM32,因此我们将采用 MDK 作为我们 STM32 的调试软件。该软件的界面为 KEIL...

发表于 09-19 15:20 134次 阅读
STM32入门必备《如何安装RealView MDK软件》

Uart / Usart:仅使用Rx-pin

我正在设计一个带有stm32f722 MCU(64引脚版本)的电路板,我不能浪费/不使用任何GPIO。我的问题是:是否可以选择仅使用u...

发表于 09-19 14:27 92次 阅读
Uart / Usart:仅使用Rx-pin

STM32F103RB的中断优先级

我对stm32f103中的中断分组产生了疑问。在微控制器的编程手册中,我找到了5种配置方法。 但是,在调试时,我找到了8种方法。...

发表于 09-19 14:22 72次 阅读
STM32F103RB的中断优先级

STM32F103闪存起始地址

我正在尝试为STM32F103C8T6微控制器的第一个固件编写链接描述文件。我有一个有效的示例脚本。我试图理解的是,为什么...

发表于 09-19 14:16 85次 阅读
STM32F103闪存起始地址

我可以通过SWO与STM32通信吗?

目前,我可以使用OpenOCD在Raspberry Pi 3上编程/调试STM32,并且还希望从STM32接收数据或从STM32传输数据。我可...

发表于 09-19 14:03 88次 阅读
我可以通过SWO与STM32通信吗?

STM32 SPI SCLK停止滴答作响

我有STM32L052K8T6(主机),我试图通过SPI与AD7124-4 ADC(从机)通信。我的问题是STM在从tx缓冲区传输所有数...

发表于 09-19 13:44 90次 阅读
STM32 SPI SCLK停止滴答作响

STM32 RTC - 如何更新?

我有一个运行STM32L0 MCU的远程单元。它没有连接到互联网,而是通过无线电与远程PC通信。我想用我从PC收到的时间戳来...

发表于 09-19 11:29 154次 阅读
STM32 RTC - 如何更新?

STM32f446中的BOOT0电路设计

正在一个项目中设计PCB中的STM32f446芯片。它将通过SWD编程。但我坚持使用(BOOT0)引脚。我希望它是推荐的(0)。...

发表于 09-19 11:12 169次 阅读
STM32f446中的BOOT0电路设计

EEPROM结构的内置Flash降低成本

LPC802是NXP推出的一款性价比很高的微处理器,具有EEPROM结构的Flash,开关矩阵等,可....

的头像 周立功单片机 发表于 09-19 09:48 270次 阅读
EEPROM结构的内置Flash降低成本

ATTINY13 20SSI在系统可编程闪存中的8位微控制器的数据手册免费下载

AVR内核结合了丰富的指令集和32个通用工作寄存器。所有32个寄存器都直接连接到算术逻辑单元(ALU....

发表于 09-19 08:00 13次 阅读
ATTINY13 20SSI在系统可编程闪存中的8位微控制器的数据手册免费下载

STM32F10X超声波串口测距显示波特率的详细代码资料免费下载

本文档的主要内容详细介绍的是STM32F10X超声波串口测距显示波特率的详细代码资料免费下载。

发表于 09-18 08:00 12次 阅读
STM32F10X超声波串口测距显示波特率的详细代码资料免费下载

使用STM32让OV7670摄像头跟随的C语言程序详细资料合集免费下载

本文档的主要内容详细介绍的是使用STM32让OV7670摄像头跟随的C语言程序详细资料合集免费下载

发表于 09-18 08:00 28次 阅读
使用STM32让OV7670摄像头跟随的C语言程序详细资料合集免费下载

恩智浦将亮相2018杭州·云栖大会

全球最大的汽车电子及人工智能物联网芯片公司恩智浦半导体(纳斯达克代码:NXPI,以下简称“恩智浦”)....

的头像 罗欣 发表于 09-17 18:12 755次 阅读
恩智浦将亮相2018杭州·云栖大会

实操经验分享——在STM32上移植Linux

刚从硬件跳槽为嵌软时,没有任何一丝的准备。一入职,领导就交代了一项特难的任务——在stm32上移植l....

的头像 传感器技术 发表于 09-17 17:01 225次 阅读
实操经验分享——在STM32上移植Linux

MPC5604B和MPC5604C微控制器的详细数据手册和资料免费下载

MPC5604B和MPC5604C是一个建立在电源架构嵌入式范畴的下一代微控制器系列。本文件描述了家....

发表于 09-17 14:44 22次 阅读
MPC5604B和MPC5604C微控制器的详细数据手册和资料免费下载

OLED显示屏反白显示使用C51和STM32ZET的程序实例及技术说明免费下载

反显和正常显示是最常用的显示方式;希望大家能够真正理解他的真正原理是什么。OLED 显示屏内部的点阵....

发表于 09-17 08:00 17次 阅读
OLED显示屏反白显示使用C51和STM32ZET的程序实例及技术说明免费下载

MCU再创销售额新高纪录,到2020年持续呈现上扬走势

市场研究机构IC Insights预期,IC产业的原始系统级晶片(SoC)产品──微控制器(micr....

发表于 09-16 11:13 89次 阅读
MCU再创销售额新高纪录,到2020年持续呈现上扬走势

浅析STM32的五种嵌入式操作系统的特点及不足

基于STM平台且满足实时控制要求操作系统,有以下5种可供移植选择。分别为μClinux、μC/OS-....

的头像 电子发烧友网 发表于 09-15 09:28 318次 阅读
浅析STM32的五种嵌入式操作系统的特点及不足

中容量微控制器STM32F103xx的详细数据手册和资料免费下载

STM32F103xxx中密度性能线系列包括以72MHz频率工作的高性能ARM∈Cortex∈-M3....

发表于 09-14 17:25 34次 阅读
中容量微控制器STM32F103xx的详细数据手册和资料免费下载

中容量微控制器STM32F102xx的详细数据手册和参考资料免费下载

STM32F102xx中密度USB接入线包括以48MHz频率工作的高性能ARM∈Cortex∈-M3....

发表于 09-14 17:25 22次 阅读
中容量微控制器STM32F102xx的详细数据手册和参考资料免费下载

小容量微控制器STM32F103x4和STM32F103x6的详细介绍和数据资料免费下载

STM32F103x4和STM32F103x6性能线系列包含以72MHz频率工作的高性能ARM∈Co....

发表于 09-14 17:25 39次 阅读
小容量微控制器STM32F103x4和STM32F103x6的详细介绍和数据资料免费下载

中容量微控制器STM32F101xB和STM32F101x8的详细参考资料免费下载

STM32F101xB和STM32F101x8中密度接入线系列包括以36MHz频率工作的高性能ARM....

发表于 09-14 17:25 19次 阅读
中容量微控制器STM32F101xB和STM32F101x8的详细参考资料免费下载

小容量微控制器STM32F102x4和STM32F102x6的详细资料和数据手册免费下载

STM32F102xx中密度USB接入线包括以48MHz频率工作的高性能ARM∈Cortex∈-M3....

发表于 09-14 17:02 15次 阅读
小容量微控制器STM32F102x4和STM32F102x6的详细资料和数据手册免费下载

小容量STM32F101x4和STM32F101x6微控制器的详细资料和数据资料免费下载

STM32F101x4和STM32F101x6低密度接入线系列包括以36MHz频率工作的高性能ARM....

发表于 09-14 17:02 19次 阅读
小容量STM32F101x4和STM32F101x6微控制器的详细资料和数据资料免费下载

互联型STM32F105xx和STM32F107xx微控制器的详细参考资料和数据手册

STM32F105xx和STM32F107xx连接线系列包括以72MHz频率工作的高性能ARM∈Co....

发表于 09-14 17:02 22次 阅读
互联型STM32F105xx和STM32F107xx微控制器的详细参考资料和数据手册

大容量STM32F103xC,xD,xE微控制器的详细参考资料和数据手册免费下载

STM32F103xC、STM32F103xD和STM32F103xE性能线系列包括工作在72MHz....

发表于 09-14 17:02 14次 阅读
大容量STM32F103xC,xD,xE微控制器的详细参考资料和数据手册免费下载

大容量STM32F103xC,xD,xE微控制器的详细参考资料和数据手册免费下载

STM32F103xC、STM32F103xD和STM32F103xE性能线系列包括工作在72MHz....

发表于 09-14 17:02 35次 阅读
大容量STM32F103xC,xD,xE微控制器的详细参考资料和数据手册免费下载

大容量STM32F101xC,xD,xE微控制器的详细参考资料和数据手册免费下载

STM32F101xC、STM32F101xD和STM32F101xE接入线系列包括以36MHz频率....

发表于 09-14 17:02 17次 阅读
大容量STM32F101xC,xD,xE微控制器的详细参考资料和数据手册免费下载

32位ARM微控制器STM32F101xx和STM32F103xx的固件函数库资料概述

本手册介绍了 32 位基于 ARM 微控制器 STM32F101xx 与 STM32F103xx 的....

发表于 09-14 15:44 36次 阅读
32位ARM微控制器STM32F101xx和STM32F103xx的固件函数库资料概述

STM32F103X6,X8,XB微控制器的详细中午资料和数据免费下载

STM32F103xx增强型系列使用高性能的ARM Cortex-M3 32位的RISC内核,工作频....

发表于 09-14 15:44 31次 阅读
STM32F103X6,X8,XB微控制器的详细中午资料和数据免费下载

STM32F103开发板教程之寄存器V3.1版本中文手册免费下载

本手册将由浅入深,带领大家学习 STM32F103 的各个功能,为您开启全新的 STM32 之旅。本....

发表于 09-14 14:08 29次 阅读
STM32F103开发板教程之寄存器V3.1版本中文手册免费下载

STM32F103开发板教程之库函数V3.1版本中文手册免费下载

实践出真知,要想学好 STM32,实验平台必不可少!本篇将详细介绍我们用来学习 STM32的硬件平台....

发表于 09-14 14:08 36次 阅读
STM32F103开发板教程之库函数V3.1版本中文手册免费下载

STM32F10xxx系列产品的参考手册中文版的详细资料免费下载

本参考手册针对应用开发,提供关于如何使用STM32F101xx、STM32F102xx、STM32F....

发表于 09-14 14:08 23次 阅读
STM32F10xxx系列产品的参考手册中文版的详细资料免费下载

STM32f103rct6单片机的详细原理图资料免费下载

本文档的主要内容详细介绍的是STM32f103rct6单片机的详细原理图资料免费下载。

发表于 09-13 17:38 40次 阅读
STM32f103rct6单片机的详细原理图资料免费下载

STM32f103rct6单片机的详细原理图资料免费下载

本文档的主要内容详细介绍的是STM32f103rct6单片机的详细原理图资料免费下载。

发表于 09-13 17:38 50次 阅读
STM32f103rct6单片机的详细原理图资料免费下载

在Keil环境编程中发现STM32内存管理存在的问题

非常简单的一个工程,没有用到任何IO操作,与STM32有关的仅仅只有芯片的选择,即其SRAM大小有区....

的头像 玩转单片机 发表于 09-12 16:15 328次 阅读
在Keil环境编程中发现STM32内存管理存在的问题

东芝宣布推出新品——“M3H族”微控制器

近日,东芝宣布推出新品——“M3H族”微控制器,该产品基于全球标准的Arm Cortex-M3内核,....

的头像 东芝半导体与存储产品 发表于 09-12 15:55 1072次 阅读
东芝宣布推出新品——“M3H族”微控制器

瑞萨电子以大约67亿美元的价格收购IDT ,加强与英伟达及英特尔在自动驾驶技术领域的竞争

瑞萨电子预计,更大规模商业平台将带来更多业务机遇并打开进入快速发展行业的通道从而实现近期和长期的收入....

的头像 EETOP 发表于 09-12 15:12 612次 阅读
瑞萨电子以大约67亿美元的价格收购IDT ,加强与英伟达及英特尔在自动驾驶技术领域的竞争

STM32单片机有哪些学习方法?STM32学习方法以及资料视频资料免费下载

具体学习方法是通读不同来源的程序,在程序中找到相关的函数库的应用,然后再阅读相关文档,有条件的实验。....

发表于 09-12 15:05 80次 阅读
STM32单片机有哪些学习方法?STM32学习方法以及资料视频资料免费下载

如何使用STM32设计四轴飞行器资料合集包括了程序,原理图和罗盘计算

本文档的主要内容详细介绍的是如何使用STM32设计四轴飞行器资料合集包括了程序,原理图和罗盘计算。

发表于 09-12 15:05 35次 阅读
如何使用STM32设计四轴飞行器资料合集包括了程序,原理图和罗盘计算

ARM微控制器STM32F101xx与STM32F103xx固件库的介绍和使用手册资料概述

本手册介绍了32 位基于ARM 微控制器 STM32F101xx 与 STM32F103xx 的固件....

发表于 09-11 15:46 43次 阅读
ARM微控制器STM32F101xx与STM32F103xx固件库的介绍和使用手册资料概述

意法半导体宣布与TomTom 合作,推出用于STM32*开放开发环境的工具

据外媒报道,意法半导体(STMicroelectronics)宣布与TomTom (TOM2)宣布合....

的头像 罗欣 发表于 09-11 10:51 662次 阅读
意法半导体宣布与TomTom 合作,推出用于STM32*开放开发环境的工具

浅析STM32的五大嵌入式操作系统的特点及不足

基于STM平台且满足实时控制要求操作系统,有以下5种可供移植选择。分别为μClinux、μC/OS-....

的头像 玩转单片机 发表于 09-10 17:26 372次 阅读
浅析STM32的五大嵌入式操作系统的特点及不足

专家解读NXP下一代S32家族可扩展计算平台

NXP推出的全球首个完全可扩展计算架构S32家族汽车处理器计算平台,将为主机厂、Tier 1供应商等....

的头像 罗欣 发表于 09-10 14:16 586次 阅读
专家解读NXP下一代S32家族可扩展计算平台