This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TM4C1237H6PM:CDC 类器件上的运行时 DFU

Guru**** 2041700 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1109496/tm4c1237h6pm-run-time-dfu-on-cdc-class-device

器件型号:TM4C1237H6PM

您好!

我想在 TM4C123gxl 评估板上测试一个添加了 DFU 的 CDC 类器件。 我根据提供的示例代码准备了以下代码。 我遇到的第一个问题是 Putty 终端无法连接到与设备关联的虚拟 COM 端口。 设备管理器显示有 COM 端口。 请告诉我我在这里发生了什么错误吗?  

注:

我删除了与 CDC 配置相关的对 UART 的99%引用。 我以这种方式修改了 USB_DEV_serial 示例、它工作正常。  

谢谢、

Dhammika

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//*****************************************************************************
//
// usb_dev_serial.c - Main routines for the USB CDC serial example.
//
// Copyright (c) 2012-2020 Texas Instruments Incorporated. All rights reserved.
// Software License Agreement
//
// Texas Instruments (TI) is supplying this software for use solely and
// exclusively on TI's microcontroller products. The software is owned by
// TI and/or its suppliers, and is protected under applicable copyright
// laws. You may not combine this software with "viral" open-source
// software in order to form a larger program.
//
// THIS SOFTWARE IS PROVIDED "AS IS" AND WITH ALL FAULTS.
// NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT
// NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. TI SHALL NOT, UNDER ANY
// CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
// DAMAGES, FOR ANY REASON WHATSOEVER.
//
// This is part of revision 2.2.0.295 of the EK-TM4C123GXL Firmware Package.
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//*****************************************************************************
//
// usb_serial_structs.c - Data structures defining this CDC USB device.
//
// Copyright (c) 2012-2020 Texas Instruments Incorporated. All rights reserved.
// Software License Agreement
//
// Texas Instruments (TI) is supplying this software for use solely and
// exclusively on TI's microcontroller products. The software is owned by
// TI and/or its suppliers, and is protected under applicable copyright
// laws. You may not combine this software with "viral" open-source
// software in order to form a larger program.
//
// THIS SOFTWARE IS PROVIDED "AS IS" AND WITH ALL FAULTS.
// NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT
// NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. TI SHALL NOT, UNDER ANY
// CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
// DAMAGES, FOR ANY REASON WHATSOEVER.
//
// This is part of revision 2.2.0.295 of the EK-TM4C123GXL Firmware Package.
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Dhammika、您好!  

    我在尝试重复使用您的代码时遇到很多构建错误。 您能否附加整个 CCS 项目或使用的其他文件。 也许是 usb_serial_structs.h 的内容、但我不确定它只是我在这里丢失的那个文件:

    此致、

    Ralph Jacobi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ralph、

    我已附上下面导出的存档。

    谢谢、

    Dhammika

    e2e.ti.com/.../usb_5F00_composite_5F00_dev_5F00_serial_5F00_without_5F00_UART.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ralph、

    正如我在原始帖子中提到的、我有一个实现非复合 CDC 类器件的程序。 我随函附上以下内容供您参考。  

    谢谢、

    Dhammika

    e2e.ti.com/.../usb_5F00_dev_5F00_serial_5F00_without_5F00_UART.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Dhammika、您好!  

    感谢您提供完整的项目、我将在明天回顾并了解我可以在调试中发现的内容。

    此致、

    Ralph Jacobi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Dhammika、您好!  

    测试项目后、我会看到设备管理器中的两个 COM 端口、如您报告的那样。

    一个是 CDC 接口的 USB 串行器件 COM 端口、它枚举、接收端口指定、我可以通过终端软件连接到该端口、发送数据并点亮蓝色 LED。

    另一个是虚拟 COM 端口、该端口不能正确枚举应该是 DFU。 现在这里的问题是我们没有 CDC + DFU 复合驱动程序、因此 Windows 在复合器件中与 CDC 一起使用时没有合适的驱动程序来实际注册 DFU 端口。

    现在您的项目已设置完毕、它将 USB_PID_serial 用于 PID、我们的驱动程序支持的有效 PID 如下:

    #define USB_PID_Mouse 0x0000
    #define USB_PID_KEYBOARD 0x0001
    #define USB_PID_serial 0x0002
    #define USB_PID_BULK 0x0003
    #define USB_PID_SCOPE 0x0004
    #define USB_PID_MSC 0x0005
    #define USB_PID_AUDIO 0x0006
    #define USB_PID_COMP_serial 0x0007 -用于2个以上 CDC 端口的 CDC Composite
    #define USB_PID_COMP_AUDIO_HID 0x0008 -音频+ HID 复合
    #define USB_PID_COMP_HID_SER 0x0009 - HID + CDC Composite
    #define USB_PID_COMP_HID_DFU 0x000A - HID + DFU Composite
    #define USB_PID_DATA_LOGGER 0x000B
    #define USB_PID_COMP_HID_HID 0x000D -适用于2个以上 HID 器件的 HID Composite
    #define USB_PID_Gamepad 0x000F
    #define USB_PID_LP_CGAMEPAD 0x0010
    #define USB_PID_DFU 0x00FF

    如果您将 USB_PID_serial 更改为   USB_PID_DFU、则虚拟端口将不会枚举、DFU 将显示、指示两个端口都能够正常运行、问题出在驱动程序级别。

    因此、您最终需要创建一个定制 USB 驱动程序来在 Windows 上枚举复合 CDC+DFU。 遗憾的是、我对如何执行此操作一无所知、因此我无法指导您进一步解决此问题。

    此致、

    Ralph Jacobi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ralph、

    非常感谢您的发现。 您非常聪明。  

    我还有一个问题。 您可能已经注意到、我删除了原始 CDC 示例中对 UART 的所有引用。 就 CDC 库例程而言、这是否正常?

    该程序在没有 UART 的情况下按我的预期工作。

    谢谢、

    Dhammika

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Dhammika、您好!

    是的、移除 UART 部分没有问题。 UART 仅在该示例中用于帮助基于使用 ICDI UART 桥完成演示。 USB 库不依赖于 UART 的使用。

    此致、

    Ralph Jacobi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    非常感谢 Ralph。

    Dhammika