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.

[参考译文] TM4C1294KCPDT:如何将 USB 大容量 TX 环形缓冲器设置为从0开始

Guru**** 2472420 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/677207/tm4c1294kcpdt-how-to-set-usb-bulk-tx-ring-buffer-to-start-at-0

器件型号:TM4C1294KCPDT

对于 USB 大容量模式;如何将 TX 环形缓冲器重置为零?  它似乎总是有一个随机起始点(即使在 flush-TX-buffer 之后)。

我的问题是在每次进入后都不必检查缓冲区结束换行、因此可以最大程度地提高特定块的吞吐量。

谢谢、

Anthony Levine

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

    TivaWare USB 库中不包含此类功能、如果您愿意、可以在应用层中随意在您的终端上实现此功能。 只需在刷新一瞥后清除 ui32WriteIndex 和 ui32ReadIndex。

    在最大化吞吐量方面、您可能会发现以下内容很有用: e2e.ti.com/.../1535533
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    从 sTxRing.ui32WriteIndex = 0或任何低数字开始、没有简单的方法。

    USBBufferInfoGet (&g_sTxBuffer、&sTxRing);
    ui32WriteIndex = sTxRing.ui32WriteIndex;

    已尝试使用 FlushBuffers 并设置 sTxRing.ui32WriteIndex = 0、但当您重新读取 sTxRing.ui32WriteIndex 时、它始终处于其他数字。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Anthony、

    由于我没有写入 USB 库、我不确定是什么原因导致该方法将缓冲区指针复位为零、从而无法正常工作。 我查看了 driverlib 和 usblib 的相关文件、我看不到任何对我来说最突出的阻止将 sTxRing.ui32WriteIndex 写入零的文件。 遗憾的是、从我可以看到、以前没有其他人有过此要求、因此我没有任何其他想法可供参考、因此我只能想到使用 CCS 断点、看看是否:

    a) ui32WriteIndex 是否接受变量视图中的零值
    b)如果是、那么它是否在不应该发生的特定点发生变化、以及什么 API 会导致变化?

    此外、根据我对类似问题的搜索、我认为有关最大化吞吐量的讨论、如我在上面发布的讨论、表明环形缓冲器的真正瓶颈更多地来自缓冲器和状态机的大小、 因此、我怀疑这个主题从未出现过、因为它并不是提高吞吐量的正确解决方案。