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.

[参考译文] LP-AM261:向应用程序添加 USB CDC 虚拟 COM 功能

Guru**** 2465890 points
Other Parts Discussed in Thread: LP-AM261

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1466500/lp-am261-adding-usb-cdc-virtual-com-functionality-to-application

器件型号:LP-AM261

工具与软件:

你(们)好

我正在尝试将 USB CDC 虚拟 COM 功能集成到  LP-AM261上运行的应用程序。

我能够在 LP-AM261上执行 USB CDC ECHO 示例。

但当我尝试将相同的集成到我们的应用固件时、失败了。

USB CDC 器件未进行枚举、在器件管理器中显示为 未知的 USB 设备(设备描述符请求失败)。

有关 USB 的最小信息、请访问  AM261x 技术参考手册 和  AM261x 寄存器附录

请为我们提供有关在  LP-AM261上实现/使用 USB CDC 的详细文档。

请帮助解决上述问题。

谢谢

镍镉电池

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

    尊敬的 Nikin:

    1.能否分享更多有关您的应用/固件功能的详细信息?

    2.它配置/控制哪些模块?  

    3.是否依赖于 USB? 例如仅在某些 USB 事件发生后配置、或者完全独立并与 USB 应用并行运行

    4.您的应用程序是基于 FreeRTOS 还是基于 NoRTOS? (开箱即用的 USB CDC 示例基于 NoRTOS。)

    [quote userid="639822" url="~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1466500/lp-am261-lp-am261 USB CDC 设备未枚举、在设备管理器中显示为 未知的 USB 设备(设备描述符请求失败)。 [报价]

    您能否确保您已经完成了以下步骤: https://software-dl.ti.com/mcu-plus-sdk/esd/AM261X/latest/exports/docs/api_guide_am261x/SDK_DOWNLOAD_PAGE.html#autotoc_md16 (由于您能够在 AM261x-LP 上运行标准示例、因此我认为您确实拥有了所需的 USB 驱动程序和设置、但只需确保我们不会错过此处的基本步骤)

    [quote userid="639822" url="~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1466500/lp-am261-lp-am261有关 USB 的最低信息可从获得  AM261x 技术参考手册 和  AM261x 寄存器附录 [报价]

    很抱歉、在开发时这种情况可能有多大问题是完全可以理解的。 我们仍在努力改进我们的 AM261x 公共配套资料、我可以向您保证、这些材料会随着时间的推移而得到改进。

    此致、
    Shaunak  

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

    尊敬的  Shaunak:

    您能否分享一些有关您的应用程序/固件功能的更多详细信息?

    我们的应用将使用应用中的虚拟 COM 端口与 PC 通信。

    它配置/控制哪些模块?  [报价]

    当前固件正在 通过 USB 虚拟通信发回 echo

    它是否依赖于 USB? 比如仅在某些 USB 事件发生后配置或者完全独立并与 USB 应用程序并行运行

    当前固件 只是回传回波。

    一旦该功能正常工作、我们就会集成其他功能。 我们的最终目标是通过虚拟 COM 实现通信固件应用和 PC

    [报价 userid="534155" url="~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1466500/lp-am261-lp-am261/5628332 #5628332"]您的应用程序是基于 FreeRTOS 还是基于 NoRTOS? (开箱即用 USB CDC 示例基于 NoRTOS。)[/QUOT]

    我们的应用基于 RTOS (不是 FreeRTOS)

    我知道该示例基于 NoRTOS。

      目前、我正在尝试测试应用程序中是否有 USB CDC 的基本功能。

       使用 tusb_config.h 的 noRTOS 版本  (tinyusb\config\nortos\am261x\CDC_config\tusb_config.h)

       在其中一个 RTOS 任务中调用 CDC_echo_main。

           调用 Drivers_usbOpen

           调用 概述 DWC 任务, tinyusb 设备任务,CDC 处理程序 重复调用

    谢谢

    镍镉电池

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

    尊敬的 Nikin:

    如果我理解正确,那么 CDC_ECHO_MAIN 会调用应用程序中的 RTOS 任务,然后调用 Drivers_usbOpen ()。

    1.确保在调用 CDC_echo_main ()之前有 System_init ()、Board_init ()调用

    2.如果您正在使用一些其他外设(如 UART)、请确保不仅调用 Drivers_usbOpen()、而且应调用 Drivers_open()。 (这个自动生成的函数将在内部调用 Drivers_usbOpen()

    3.对于基于 RTOS 的应用、我们确实有一个参考文件 CDC_echo_FreeRTOS (不会直接适用于 AM261x) 、其中显示了应该如何为 DSR 完成任务配置(对于 AM243x 和 AM64x、在这里您可以调用 usb_dwcTask ())、TinyUSB 和 CDC 任务。 主要检查为每个任务分配的优先级。

    4.我还假定只有在枚举成功后、固件才会触发 USB 通信。

    我们会执行内部测试、其中我们使用 Python 和 shell 脚本在主机 PC 和 AM261x (USB CDC 器件)之间进行通信、并在主机和器件之间发送/接收数据、操作正常。 如果您有任何其他问题、请告诉我。

    此致、
    Shaunak

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

    我们在 RTOS 任务中调用 CDC echo main 调用

    1. 确保您在调用 CDC_echo_main ()之前有 System_init ()、Board_init ()调用

    是的、我们调用所有这些初始化  

    2. 如果您正在使用一些其他外设(如 UART)、请确保不仅调用 Drivers_usbOpen()、而且应调用 Drivers_open()。 (这个自动生成的函数将在内部调用 Drivers_usbOpen ())

    我们已经在调用所有其他外设初始化、并且已经很好地工作了。

    我们仅在 USB 情况下才会面临该问题。

    3. 对于基于 RTOS 的应用、我们确实有一个参考文件 CDC_echo_FreeRTOS (不会直接适用于 AM261x)、其中显示了应如何为 DSR 完成任务配置(对于 AM243x 和 AM64x、在这里您可以调用  usb_dwcTask ())、TinyUSB 和 CDC 任务。 主要检查为每个任务分配的优先级。

    是否需要3个单独的任务?

    是否应该使用自定义  tusb_config.h?

    您能否为 LP-AM261提供 RTOS 工作示例。

    以便为大家提供更多帮助

    4. 我还假设只有在枚举成功后、固件才会触发 USB 通信。[/QUOT]

    目前 应用程序正在执行回显、因此固件 将 仅在接收数据后(即枚举后)触发通信

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

    尊敬的 Nikin:

    感谢您分享更多信息。

    您能为 LP-AM261提供一个 RTOS 工作示例吗?

    由于发布活动和其他承诺、无法立即提供示例。 我已经提出了内部要求、将与我们的团队讨论、以便 在即将推出的版本中将其添加到 SDK 中。 如果我在 SDK 正式发布之前已经准备好了应用程序、我会将其与您共享。

    我是否应使用自定义语言  tusb_config.h? [报价]

    您需要修改 tusb_config.h 文件以支持操作系统。 使用 RTOS 时有一个需要更改的宏"CFG_TUSB_OS"。 如果不是 FreeRTOS、我能知道您在使用什么 RTOS 吗?  对于 FreeRTOS、我们将宏值设置为 OPT_OS_freertOS。

    低级驱动程序可能还需要根据所使用的操作系统进行一些更改。 这尚未在 AM261x 平台上验证。

    是否需要3个单独的任务?

    它通常不应破坏功能、只是一般情况下的建议、以避免任务阻塞、根据适当优先级进行中断处理。

    此致、
    Shaunak

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

    感谢您的更新。

    您需要修改 tusb_config.h 文件以支持操作系统。 使用 RTOS 时有一个需要更改的宏"CFG_TUSB_OS"。 如果不是 FreeRTOS、我能知道您在使用什么 RTOS 吗?  对于 FreeRTOS、我们将宏值设置为 OPT_OS_freertos。

    我们使用 uC/OS

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

    我曾尝试创建 FreeRTOS 示例、但行为是相同的。

    未发生枚举。

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

    尊敬的 Nikin:

    所需的移植不仅涉及应用级别、还涉及 RTOS 的 TinyUSB 堆栈级别、以及可能需要在 USB LLD 中进行一些调整。 如前所述、开发该层并在内部验证该层需要一些时间。 感谢您到目前为止的耐心。 我已经向团队提出要求、要求启用基于 TinyUSB 堆栈的 FreeRTOS 支持。

    此致、
    Shaunak

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

    感谢您的更新

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

    尊敬的 Nikin:

    我要将该主题标记为已关闭。 请求您等待 USB 驱动程序和 TinyUSB 堆栈移植到 FreeRTOS 并在内部进行验证、然后再将其推入公共 SDK。

    此致、
    Shaunak

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

    尊敬的  Shaunak:

    感谢您的更新。

    请分享相关的大致时间表

    非常有用的一些信息  

    我们 尝试了将 USB 更改集成到 FreeRTOS hello world 示例

    • 添加新任务时的示例  
      • 被调用的三个函数在该函数内部循环调用
        • usb_dwcTask 和 tud_task 以及 cdc_task  ()
      • 它在工作
    • 将为我们增加3个任务
      • 优先级  USB_dwcTask ,tud_task ,CDC_task()的递减顺序
      • 只  调用了 usb_dwcTask。
      • 这是最高优先级的任务、从未进入已阻止状态。
      • 其他任务永远不会被调用。

    谢谢你

    镍镉电池  

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

    尊敬的 Nikin:

    请分享其大致时间表

    我正在与团队讨论这一点。

    我们 尝试了将 USB 更改集成到 FreeRTOS hello world 示例

    • 添加新任务时的示例  
      • 被调用的三个函数在该函数内部循环调用
        • usb_dwcTask 和 tud_task 以及 cdc_task  ()
      • 它在工作
    [报价]

    当您说"IT 正在工作"时、您是说 USB 示例可以正常工作并符合预期(枚举和 CDC echo 正常工作)吗?

    此致、
    Shaunak

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

    谢谢你

    当您说"它正在工作"时、您的意思是 USB 示例工作正常且符合预期(枚举和 CDC echo 工作正常)吗?

    有。  枚举和 CDC echo 正在工作

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

    尊敬的 Nikin:

    到2025年第3季度、SDK 将在未来的某个 SDK 版本中提供该示例。

    此致、
    Shaunak