0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

AVR嵌入式评估板执行固件更新的技巧和诀窍

电子设计 来源:互联网 作者:佚名 2018-08-06 09:26 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

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

固件更新选项

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

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

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

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

选择适合 DFU 的微控制器

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

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

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

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

图 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 的简单应用说明。

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

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

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

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

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

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

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

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

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

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

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

总结

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

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2305

    文章

    11121

    浏览量

    371164
  • STM32F429
    +关注

    关注

    0

    文章

    40

    浏览量

    11800
  • DFU工具
    +关注

    关注

    0

    文章

    4

    浏览量

    3007
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    嵌入式和FPGA的区别

    开发中做出更明智的技术选择。 基本概念解析 嵌入式系统(Embedded System)是一种专用计算机系统,通常包含微处理器/微控制器、存储器和专用外围设备,被设计用于执行特定功能。它强调
    发表于 11-19 06:55

    嵌入式系统profinet转devicenet固件与硬件接口的连接案例

    与货物信息采集。核心需求是基于网关的嵌入式固件,实现硬件接口的适配与数据的高效处理。 Profinet从站(网关)与西门子PLC的博图组态步骤 硬件接口与固件版本确认:打开TIAPortalV17
    的头像 发表于 11-18 14:11 883次阅读
    <b class='flag-5'>嵌入式</b>系统profinet转devicenet<b class='flag-5'>固件</b>与硬件接口的连接案例

    探索AVR64DD32 Curiosity Nano:一款强大的AVR DD系列评估平台

    AVR64DD32可轻松访问AVR64DD32的特性,由MPLAB® X IDE和Microchip Studio提供支持,从而将该器件集成到定制设计中。Curiosity Nano评估
    的头像 发表于 10-13 15:45 412次阅读
    探索<b class='flag-5'>AVR</b>64DD32 Curiosity Nano:一款强大的<b class='flag-5'>AVR</b> DD系列<b class='flag-5'>评估</b>平台

    2025年嵌入式核心选型指南与应用方案解析

    嵌入式核心作为现代化智能设备和物联网设备的“核心大脑”,在工业控制、智能制造、医疗设备、交通运输、消费电子等众多领域发挥着至关重要的作用。面对技术飞速发展和市场需求的不断扩大,如何选购合适的嵌入式
    的头像 发表于 09-06 11:42 868次阅读

    飞凌嵌入式ElfBoard ELF 1板卡-Uboot

    上节中讲到U-Boot是BootLoader的一种,U-Boot全称为Universal Boot Loader,即通用的BootLoader,所谓通用就是指它适用于多种嵌入式平台,包括不同CPU
    发表于 05-22 10:44

    嵌入式开发入门指南:从零开始学习嵌入式

    随着物联网、智能硬件的发展,嵌入式开发成为热门技能之一。以下将为初学者提供一份详细的嵌入式开发入门指南,涵盖学习路径、必备工具、推荐资源等内容。 1. 嵌入式系统的定义与应用嵌入式系统
    发表于 05-15 09:29

    如何用RK3506核心自研一款嵌入式工业网关?

    飞凌嵌入式RK3506核心做工业网关
    的头像 发表于 03-19 16:32 1795次阅读
    如何用RK3506核心<b class='flag-5'>板</b>自研一款<b class='flag-5'>嵌入式</b>工业网关?

    大赛报名|飞凌嵌入式携手瑞芯微成为2025年全国大学生嵌入式大赛命题企业

    中设立专属赛题。本次嵌入式大赛,双方选用基于瑞芯微RK3588芯片设计的ELF2开发作为参赛平台,旨在通过此次合作,促进产教融合,共同推动嵌入式系统创新人才的培
    的头像 发表于 03-14 10:46 1531次阅读
    大赛报名|飞凌<b class='flag-5'>嵌入式</b>携手瑞芯微成为2025年全国大学生<b class='flag-5'>嵌入式</b>大赛命题企业

    使用Lattice mVision打造嵌入式视觉系统解决方案

    嵌入式视觉是嵌入式系统与机器视觉技术的集合,嵌入式视觉系统硬件集成摄像头模组和处理,将图像捕获和图像处理功能结合在一台设备中。
    的头像 发表于 03-06 16:09 1216次阅读

    嵌入式主板的概述与发展

    未来发展趋势进行深入探讨。嵌入式主板的基本概念嵌入式主板是指为嵌入式系统设计的电路,它通常集成了微处理器、内存、输入输出接口等关键组件。与一般的计算机主板相比,嵌
    的头像 发表于 01-13 16:30 1185次阅读
    <b class='flag-5'>嵌入式</b>主板的概述与发展

    MPU在嵌入式系统中的应用

    一、MPU的基本功能 微处理器单元(MPU)是嵌入式系统中的大脑,负责执行程序指令、处理数据和控制其他硬件设备。MPU的基本功能包括: 指令执行:MPU能够从存储器中读取指令,解码这些指令,并
    的头像 发表于 01-08 09:26 1500次阅读

    ARM架构嵌入式主板特点

    嵌入式主板可以理解为嵌入在设备中用于控制和数据处理的CPU,也就是设备的“大脑”。当主板嵌入到设备中,当然对主板的体积和功耗会有更严格的要求(嵌入
    的头像 发表于 12-31 16:03 1839次阅读
    ARM架构<b class='flag-5'>嵌入式</b>主板特点

    新手怎么学嵌入式?

    操作 实践是学习嵌入式技术的关键。你可以购买一些低成本的嵌入式开发板,如 Arduino 或 Raspberry Pi。这些开发具有丰富的资源和简单易懂的文档,非常适合初学者。通过在开发
    发表于 12-12 10:51

    如何使用 RISC-V 进行嵌入式开发

    、准备开发环境 选择开发 :RISC-V架构的嵌入式开发板有多种选择,如GD32VF103R-START、飞凌嵌入式OK113i-S等。选择时需要考虑开发的性能、外设接口、价格以及
    的头像 发表于 12-11 17:32 2747次阅读

    什么是嵌入式人工智能

    嵌入式人工智能是指将人工智能技术应用于嵌入式系统中的一种技术。嵌入式系统是嵌入到其他设备或系统中的计算机系统,通常用于控制、监测或执行特定任
    的头像 发表于 12-11 09:23 1519次阅读
    什么是<b class='flag-5'>嵌入式</b>人工智能