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.

[参考译文] TM4C129CNCPDT:USB 大容量器件停止

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/628157/tm4c129cncpdt-usb-bulk-device-stall

器件型号:TM4C129CNCPDT

您好!

我正在使用 TI 的文献目录创建一个大容量 USB 器件。 有时、主机在中发出 USB_URB、器件使用 EPIPE 进行响应。 就我所能告诉的那样、这意味着器件已停止。 我向应用程序中的 usblib 和 driverlib 添加了一个全局变量、以尝试跟踪触发失速的条件、但遗憾的是、我的变量从未被触及。 我认为这意味着这种失速是在其他地方发生的、这种情况我无法理解。

有人能告诉我图书馆里可能发生堵转的地方吗?

谢谢、

兰斯

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

    我不确定所有可能发生失速的地方。 您是否通过使用 USB 分析仪看到过您提到的 USB 命令? 如果是这样、您应该能够跟踪哪个函数正在接收触发 STALL 的数据包、然后通过 USBlib 进行跟踪。

    如果您可以使用 TI LaunchPad 重新创建问题、我可以在自己的办公桌上复制该问题、我可以尝试进行此类搜索并提供帮助、但您已经注意到 USBlib 非常大、因此这不是我可以说"哦、这是唯一的原因 如果你来这里就会发生……” 无需硬件即可使用和调试。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在 Linux 主机上使用 tcpdump 作为 USB 分析器、并在从主机到器件的过程中看到一个 URB_BULK、然后在器件到主机的过程中看到一个 URB_BULK、并设置了 EPIPE 错误。

    我已经为 STALL 打了润滑脂,假设这是 STALL 的发生方式,但必须执行其它键盘。 还是在硬件中发生失速? 或者我应该寻找其他东西吗? 我不介意是否有很多地方可以搜索、只要我知道要搜索什么。

    我没有 Launchpad。

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

    你好、Lance、

    我还没有处理 USB 失速的经验、但我发现这条过去的 E2E 主题非常详细、包括一些有关如何在 TivaWare 中调试其中一些内容的文章。 您能否浏览一下、看看这是否能让您进一步了解这一过程? 如果您有其他基于主题的问题、我将尝试回答这些问题。

    TivaWare 和 USB STALL: https://e2e.ti.com/support/microcontrollers/tiva_arm/f/908/t/477350

    编辑:将线程链接更新为 E2E 帖子的第一页

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的链接。 我已经在库的该部分中添加了一个全局变量、以查看是否发生了停滞、但我的全局变量并未被触及。

    我很确定不会在那里发生、因为该线程在枚举期间处理端点0。 我的失速发生在许多读取成功后的很晚。 但是、我仍然在搜索中添加了全局变量、以确保完整性、从而确定正在发生的情况。

    我还向 driverlib/usb.c USBDevEndpointStall()添加了一个全局变量,以查看是否有任何调用,但我也从未在那里得到命中。 是否有其他函数将器件置于失速状态?

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

    尊敬的 Lance:

    我会研究使用实例库中 以任何方式提到失速的区域。 您可能需要手动添加 UsbLib 文件、而不是使用 usblib.a 库、以便在调试时可以进入这些 API。

    我不知道 UsbLib (完全没有参与它的设计)、只列出特定文件来查看此失速问题、 我也不知道您使用的许多 UsbLib 文件中的哪些文件可用于您的项目、您可以通过这些文件进行搜索。

    关于如何浏览 UsbLib ... 我发现 Windows 在通过代码文件库搜索关键字时非常有用。 例如、我只需转至 [Install Path]\TivaWare_C_Series-2.1.4.178\usblib 并在搜索中键入关键字、例如"stor"、然后查找与我的应用相关的文件并进行检查。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    嗯。 我已经搜索过摊位,也没有找到大凶。 更多的调试将会进行、但如果任何人都有足够的用户体验来指明正确的方向、我将不胜感激。

    谢谢、
    -Lance