1121689_zh-CN

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

1121689_zh-CN

1121689_zh-CN

用于MCU的USB DFU引导加载程序<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

保罗·阿尔坎塔拉

RTAC Americas

2012年墨西哥

USB 设备固件更新 (DFU) 引导加载程序提供了一种简单可靠的方法,可以将新的用户应用程序加载到已预加载 USB DFU 引导加载程序的设备中。加载后,新的用户应用程序就可以在MCU中运行。USB DFU 引导加载程序需要在 PC 上运行的应用程序(USB DFU PC 应用程序)。DFU PC 应用程序支持使用 USB DFU 规范类中规定的特定请求将固件加载到设备。

支持以两种方式枚举USB DFU引导加载程序:

-USB复合设备模式:也称为运行时模式。它由一个 DFU 设备加上另一个 USB 设备类组成。对于此实现,人机界面

设备(HID)鼠标设备用于避免增加引导加载程序内存大小。进入此模式之前,MCU 必须处于以下状态:

  • MCU不含有效固件映像,或者不含固件。
  • 对 MCU 施加外部操作,例如在重置事件期间按下按钮。这取决于 USB DFU 引导加载程序的实现。

-DFU 设备模式:当 DFU 准备根据 USB DFU PC 应用程序的请求上传或下载固件映像时使用。在此模式之前,MCU 处于 USB 复合设备模式。

引导加载程序是一个小型应用程序,用于将新的用户应用程序加载到设备中。因此,引导加载程序需要能够在用户应用程序和引导加载程序模式下运行。举个例子:

SocialMedia.JPG

重置后,设备尝试运行用户应用程序。如果未找到用户应用程序或应用程序已损坏,设备将自动进入引导加载程序模式。如果应用程序有效并且用户想要运行引导加载程序,则需要进行外部干预

例如在重置时按下特定键即可强制设备进入引导加载程序模式。

附有完整的应用说明和软件。



回复:用于 MCU 的 USB DFU 引导加载程序<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

DFU PC Demo 软件的源代码是否可用(或者可以提供)?

回复:用于 MCU 的 USB DFU 引导加载程序<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

感谢您的评论。PLL 通过。代码有效,我将使用自己的代码测试引导加载程序。

网站上应该修改代码。

回复:用于 MCU 的 USB DFU 引导加载程序<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

回复:用于 MCU 的 USB DFU 引导加载程序<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

是的,VID 和 PID 在 usb_descriptor.c 中定义文件。

PC inf文件中的VID和PID也需要修改。

回复:用于 MCU 的 USB DFU 引导加载程序<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

将 MCG_C2 的值更改如下:

//    MCG_C2 = MCG_C2_RANGE(2) | MCG_C2_HGO_MASK | MCG_C2_EREFS_MASK | MCG_C2_IRCS_MASK;

   MCG_C2 = (MCG_C2_LOCRE0_MASK | MCG_C2_RANGE0(1) | MCG_C2_EREFS0_MASK);

回复:用于 MCU 的 USB DFU 引导加载程序<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

我已经在 IAR EW650+ FRDM-KL25Z上尝试过了。它不起作用。当我查看调试器时。这与 TWR 和 FRDM 之间的 GPIO 差异无关。我发现它挂在时钟设置 pll_init() 中。

主运动学.c锁相环初始化(pll_init)

        SIM_CLKDIV1 = 0x1003000 // OUTDIV1 = 0x01, OUTDIV4 = 0x03

        MCG_C2 = 0x2D // RANGE=2, HGO=1, EREFS=1, LP=0, IRCS=1

        MCG_C1 = 0x98 // CLKS=2, FRDIV=3

       ......

        #ifndef EXTERNAL_OSC

/* 等待振荡器初始化 */

while (!(MCG_S & MCG_S_OSCINIT_MASK)) //<=== 永远循环 OSCINIT

{;}

        #endif

目前我对KL25Z还不熟悉。您能给出一些建议吗?

回复:用于 MCU 的 USB DFU 引导加载程序<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

这与 MCF51JM 兼容吗?

回复:用于 MCU 的 USB DFU 引导加载程序<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

非常感谢这个非常有用的应用说明。

我想知道是否可以修改 USB VID/PID(因为我的公司拥有一个供应商 ID...)?

顺祝商祺!

AV

Tags (1)
No ratings
Version history
Last update:
‎01-05-2026 11:44 AM
Updated by: