如何选择适合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 功能的软件堆栈。    

热门推荐

收藏 人收藏
分享:

评论

相关推荐

德州仪器推出新型MSP430™微控制器的特点优势及应用领域介绍

德州仪器(TI)在北京举行了MSP430™微控制器新品发布会。TI超低功耗MSP微控制器事业部总经理....

的头像 德州仪器 发表于 07-18 18:22 131次 阅读
德州仪器推出新型MSP430™微控制器的特点优势及应用领域介绍

东芝矢量引擎协处理器的有哪些好处?

今天,随着设备的功能日趋增多,电机控制的也变得越来越复杂,硬件成本和处理器的软件负荷增加,给硬件和软....

的头像 东芝半导体与存储产品 发表于 07-18 16:57 118次 阅读
东芝矢量引擎协处理器的有哪些好处?

五大适合stm32的嵌入式操作系统分享

发表于 07-18 15:52 52次 阅读
五大适合stm32的嵌入式操作系统分享

求NXP MPC5748G的学习资料,或者NXP MPC57系列的也行。

发表于 07-18 09:23 40次 阅读
求NXP MPC5748G的学习资料,或者NXP MPC57系列的也行。

STM32F030使用外部晶振时,做EFT试验晶振有干扰,单片机死机是为什么?

发表于 07-18 01:49 82次 阅读
STM32F030使用外部晶振时,做EFT试验晶振有干扰,单片机死机是为什么?

为什么0.96寸OLED会不稳定花屏

发表于 07-17 21:24 112次 阅读
为什么0.96寸OLED会不稳定花屏

意法半导体推出支持汽车精确定位控制的新款高精度MEMS传感器

发表于 07-17 16:46 109次 阅读
意法半导体推出支持汽车精确定位控制的新款高精度MEMS传感器

基于STM32四轴飞行器电路设计的详细图解资料概述

四轴飞行器是一种利用四个旋翼作为飞行引擎来进行空中飞行的飞行器。进入20世纪以来,电子技术飞速发展四....

的头像 畅学单片机 发表于 07-17 16:05 97次 阅读
基于STM32四轴飞行器电路设计的详细图解资料概述

大联大品佳集团推基于NXP产品的汽车无线充电应用设计方案

NXP 15W多线圈发送器参考平台专为基于NXP MWCT1013AVLH发送控制器IC与Infin....

的头像 人间烟火123 发表于 07-17 14:05 553次 阅读
大联大品佳集团推基于NXP产品的汽车无线充电应用设计方案

基于STM32F103读取DHT11温湿度传感器的程序

发表于 07-17 10:21 224次 阅读
基于STM32F103读取DHT11温湿度传感器的程序

STM32定时器有什么功能?STM32的用法详解

TIM2-TIM5可以由向上计数、向下计数、向上向下双向计数。向上计数模式中,计数器从0计数到自动加....

的头像 畅学单片机 发表于 07-16 17:06 133次 阅读
STM32定时器有什么功能?STM32的用法详解

【深圳龙华】创业型公司智能硬件工程师

发表于 07-16 16:19 156次 阅读
【深圳龙华】创业型公司智能硬件工程师

STM32平衡小车的平衡原理详细介绍和程序及算法的概述免费下载

平衡小车是通过两个电机运动下实现小车不倒下直立行走的多功能智能小车,在外力的推拉下,小车依然保持不倒....

发表于 07-16 08:00 33次 阅读
STM32平衡小车的平衡原理详细介绍和程序及算法的概述免费下载

STM32智能平衡小车详细电路原理图免费下载

本文档的主要内容是STM32智能平衡小车的详细电路原理图包括了:供电电路,超声波模块,蓝牙模块,红外....

发表于 07-16 08:00 58次 阅读
STM32智能平衡小车详细电路原理图免费下载

基于STM32设计的智能平衡小车源代码免费下载

本文档的主要内容详细介绍的是基于STM32设计的智能平衡小车源代码 支持手机及电脑上位机控制的平衡小....

发表于 07-16 08:00 39次 阅读
基于STM32设计的智能平衡小车源代码免费下载

stm32中的编程问题,keil 5编辑无错误,问题是HCSR04_Init函数里结构体指针赋值无效是为什么?

发表于 07-15 20:18 89次 阅读
stm32中的编程问题,keil 5编辑无错误,问题是HCSR04_Init函数里结构体指针赋值无效是为什么?

STM32中为什么TIM1->CCR1为什么对应的是PA8

发表于 07-14 17:28 327次 阅读
STM32中为什么TIM1->CCR1为什么对应的是PA8

STM32控制电调驱动两个无刷电机,四旋翼对轴平衡调试

发表于 07-14 11:03 189次 阅读
STM32控制电调驱动两个无刷电机,四旋翼对轴平衡调试

贸泽电子正式开售 NXP i.MX 8M处理器 适用于通用型人机界面(HMI)解决方案

贸泽所提供的NXP i.MX 8M处理器符合当下流媒体、高清视频和图形用户界面最先进的需求以及未来发....

的头像 人间烟火123 发表于 07-12 16:49 1133次 阅读
贸泽电子正式开售 NXP i.MX 8M处理器 适用于通用型人机界面(HMI)解决方案

一招教你使用用低功率以太网节电的方法

以太网为什么这么耗电?是一个很常见的问题。典型的有功功率10/100 Mbps以太网物理层(PHY)....

的头像 电子设计 发表于 07-12 09:50 673次 阅读
一招教你使用用低功率以太网节电的方法

SensorTile开发套件及无线解决方案

具有蓝牙功能的 IoT 设备可通过智能手机和其他网关设备提供即时可用的数据访问。但电池供电的低功耗 ....

的头像 Duke 发表于 07-12 09:26 823次 阅读
SensorTile开发套件及无线解决方案

针对汽车行业的通用型MCU应用

S32K系列汽车MCU是NXP推出的针对汽车行业的通用型MCU,采用亲民的ARM内核,可以覆盖从M0....

的头像 ZLG致远电子 发表于 07-12 08:55 1141次 阅读
针对汽车行业的通用型MCU应用

ZLG集团携手NXP将在全国开展S32K系列MCU研讨会

同时,ZLG致远电子将同场展示PA8000功率分析仪、ZDS4054 Plus示波器、CAN总线分析....

的头像 周立功单片机 发表于 07-11 16:05 595次 阅读
ZLG集团携手NXP将在全国开展S32K系列MCU研讨会

如何选择支持GUI的STM32

如今,越来越多的智能产品,不管是新兴的物联网产品,还是智能家电或智能制造设备,都会将图形化界面(GU....

的头像 STM32单片机 发表于 07-10 14:08 184次 阅读
如何选择支持GUI的STM32

STM32F105xx和STM32F107xx的详细原版数据手册免费下载

STM32 F105xx和STM32 F107xx连接线系列包含高性能ARM®皮质-μ-32位RIS....

发表于 07-10 08:00 42次 阅读
STM32F105xx和STM32F107xx的详细原版数据手册免费下载

怎么选择微控制器?记住以下几点就可以了

为产品选择正确的微控制器可能是项令人怯步的任务。您不仅要思考许多技术特性,还要考虑成本和备货时间等会....

的头像 嵌入式资讯精选 发表于 07-09 17:37 1926次 阅读
怎么选择微控制器?记住以下几点就可以了

基于单片机下Watchdog之浅析

单片机的watchdog一般都有两个,一个是独立看门狗IWDG,一个是窗口看门狗WWDG。

的头像 MCU开发加油站 发表于 07-09 14:19 209次 阅读
基于单片机下Watchdog之浅析

RF电路设计中的经常出现的问题以及怎么样解决这些问题的方案

单片射频器件大大方便了一定范围内无线通信领域的应用,采用合适的微控制器和天线并结合此收发器件即可构成....

发表于 07-09 08:00 46次 阅读
RF电路设计中的经常出现的问题以及怎么样解决这些问题的方案

PM0044 STM8 CPU单片机的详细介绍和编程手册免费下载

 MOS微控制器STM8系列是围绕一个增强的工业标准8位核心和外围模块库设计和构建的,包括ROM、F....

发表于 07-09 08:00 47次 阅读
PM0044 STM8 CPU单片机的详细介绍和编程手册免费下载

STM8S001J3单片机详细英文原版数据手册免费下载

该数据表包含STM8S01J3特性、引脚说明、电气特性、机械数据和订购信息的描述。有关STM8S微控....

发表于 07-09 08:00 49次 阅读
STM8S001J3单片机详细英文原版数据手册免费下载

不同的参数对其实现和每个µC的具体特性的研究

在没有任何名义条件的情况下,重置管理电路的作用是将c放置在一个确定的位置。我们不讨论本文档中可能取得....

的头像 汽车电子硬件设计 发表于 07-08 11:26 281次 阅读
不同的参数对其实现和每个µC的具体特性的研究

基于STM32单片机SPWM逆变电源模块的详细资料说明

本模块可以将4.5V到35V的直流输入电压转换成±4.5V-±35V的交流电压,模块采用STM32F....

的头像 传感器技术 发表于 07-06 15:35 445次 阅读
基于STM32单片机SPWM逆变电源模块的详细资料说明

440亿美元收购陷入胶着,高通收购恩智浦再次延期

据报道,美国芯片厂商高通公司(NASDAQ:QCOM)周五再次宣布延长其以440亿美元的价格拟收购恩....

发表于 07-06 10:14 407次 阅读
440亿美元收购陷入胶着,高通收购恩智浦再次延期

高通表示:NXP的收购交易将延长至7月6日

高通在上周五(6月29日)宣布,再度对收购NXP(恩智浦)的交易进行延期,直到纽约当地时间7月6日下....

发表于 07-06 09:52 107次 阅读
高通表示:NXP的收购交易将延长至7月6日

轻松教你设计无线充电插座

要接上难以拔出的吸尘器电线,并插上厚重的交流电源插头,真令人烦扰,有时可能会非常危险。而使用无线电动....

的头像 电子设计 发表于 07-06 09:45 1162次 阅读
轻松教你设计无线充电插座

关于AVR微控制器最早期的样品介绍

爱特梅尔AVR微控制器共同发明人兼首席营销官Alf-Egil Bogen 介绍AVR微控制器最早期的....

的头像 Microchip视频 发表于 07-06 05:38 201次 观看
关于AVR微控制器最早期的样品介绍

介绍AVR Studio6及其特点应用

广受欢迎的集成开发环境(IDE) 的最新版本Atmel Studio 6,支持基于爱特梅尔32位AR....

的头像 Microchip视频 发表于 07-06 04:35 145次 观看
介绍AVR Studio6及其特点应用

介绍SAM4L微控制器低功耗的特性是什么?

Atmel小贴士 SAM4L微控制器低功耗的特性

的头像 Microchip视频 发表于 07-06 04:16 133次 观看
介绍SAM4L微控制器低功耗的特性是什么?

怎么在8位AVR微控制器上运行Linux?

这是在8位的AVR微控制器上运行Linux的全过程,时间很长哦,大家可以跳着往后看。

的头像 Microchip视频 发表于 07-06 04:02 153次 观看
怎么在8位AVR微控制器上运行Linux?

Atmel®提供的不匹配的基于微控制器技术的优点

Atmel® offers unmatched microcontroller-based tech....

的头像 Microchip视频 发表于 07-06 03:27 135次 观看
Atmel®提供的不匹配的基于微控制器技术的优点

关于AVR微控制器采用单周期指令集原因的介绍

爱特梅尔AVR微控制器共同发明人兼首席营销官Alf-Egil Bogen 介绍AVR微控制器采用单周....

的头像 Microchip视频 发表于 07-06 02:38 133次 观看
关于AVR微控制器采用单周期指令集原因的介绍

介绍如何更容易实现关键应用程序功能

Atmel Studio 6 introduces a new era of project por....

的头像 Microchip视频 发表于 07-06 02:30 143次 观看
介绍如何更容易实现关键应用程序功能

关于在降低设计功耗的过程中如何利用控制器功能

在降低设计功耗的过程中,您是否充分利用了微控制器(MCU)中集成模数转换器(ADC)的所有功能?这篇....

的头像 电子设计 发表于 07-05 09:31 751次 阅读
关于在降低设计功耗的过程中如何利用控制器功能

有关单片机设计的10个方案详细合集免费下载

本文档的主要内容详细介绍的是有关单片机设计的方案包括了:单片机板设计方案及原理图,51单片机板设计方....

发表于 07-05 08:00 139次 阅读
有关单片机设计的10个方案详细合集免费下载

电机控制的准备工作Analyzer功能是指?

Analyzer功能的最大特点是能在电机转动的同时不停止CPU,持续读写微控制器内部的变量,并用波形....

的头像 瑞萨电子 发表于 07-03 08:47 799次 阅读
电机控制的准备工作Analyzer功能是指?

STM32 PMSM FOC SDK V3.2讲座(1)

STM32 PMSM FOC SDK V3.2培训讲座一

的头像 EE techvideo 发表于 07-03 00:06 144次 观看
STM32 PMSM FOC SDK V3.2讲座(1)

STM32 PMSM FOC SDK V3.2 讲座(2)

STM32 PMSM FOC SDK V3.2 培训讲座二

的头像 EE techvideo 发表于 07-02 11:56 177次 观看
STM32 PMSM FOC SDK V3.2 讲座(2)

STM32 PMSM FOC SDK V3.2 培训(9)

STM32 PMSM FOC SDK V3.2 培训讲座九

的头像 EE techvideo 发表于 07-02 11:39 170次 观看
STM32 PMSM FOC SDK V3.2 培训(9)

STM32 PMSM FOC SDK V3.2 讲座(10)

STM32 PMSM FOC SDK V3.2 培训讲座十

的头像 EE techvideo 发表于 07-02 11:36 141次 观看
STM32 PMSM FOC SDK V3.2 讲座(10)

STM32无刷电机开发套件演示与PMSM FOC软件培训

STM32无刷电机开发套件演示说明,基于STM32的PMSM FOC软件培训

的头像 EE techvideo 发表于 07-02 11:30 346次 观看
STM32无刷电机开发套件演示与PMSM FOC软件培训

STM32H7演示:意法半导体

意法半导体-STM32H7演示

的头像 EE techvideo 发表于 07-02 11:13 297次 观看
STM32H7演示:意法半导体

2015年STM32 全国研讨会:推动创新,见证未来

2015年 STM32 Roadshow: STM32推动创新,见证未来

的头像 EE techvideo 发表于 07-02 11:11 169次 观看
2015年STM32 全国研讨会:推动创新,见证未来

2015年STM32全国研讨会开场

2015年STM32Roadshow:开场及花絮

的头像 EE techvideo 发表于 07-02 11:05 191次 观看
2015年STM32全国研讨会开场

STM32 Cube

2015年 STM32 Roadshow: STM32Cube

的头像 EE techvideo 发表于 07-02 11:02 194次 观看
STM32 Cube

介绍IIC总线特点与STM32 IIC:为ARM初学者导航(11)

一 IIC概念及特点 1、IIC概念 2、主要特点 二 IIC时序介绍 1、IIC总线时序 ....

的头像 EE techvideo 发表于 07-02 10:07 173次 观看
介绍IIC总线特点与STM32 IIC:为ARM初学者导航(11)

介绍STM32和LoRaWAN协议及其应用

入门指南_STM32和LoRaWAN协议

的头像 EE techvideo 发表于 07-02 08:29 229次 观看
介绍STM32和LoRaWAN协议及其应用

STM32F7的技术介绍

2015年 STM32 Roadshow: STM32F7技术详解

的头像 EE techvideo 发表于 07-02 03:29 216次 观看
STM32F7的技术介绍

讲述STM32H7微控制器的特点

超乎寻常的STM32H7微控制器

的头像 EE techvideo 发表于 07-02 02:09 187次 观看
讲述STM32H7微控制器的特点

STM32 对物联网的作用

2015年 STM32 Roadshow: STM32激活物联网

的头像 EE techvideo 发表于 07-02 01:32 308次 观看
STM32 对物联网的作用

STM32 在可穿戴设备方面的应用

2015年 STM32 Roadshow: STM32可穿戴解决方案

的头像 EE techvideo 发表于 07-02 00:32 436次 观看
STM32 在可穿戴设备方面的应用