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.

[参考译文] OMAP-L138:IN 令牌的频率过高

Guru**** 2591700 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/588245/omap-l138-too-high-frequency-of-in-tokens

器件型号:OMAP-L138
Thread 中讨论的其他器件:OMAPL138

大家好、

我将 PPP 调制解调器与 Mentor USB 主机设备配合使用。 我看到 Mentor USB 在端点批量发送时每~5微秒发送一次令牌。 我想问这个~5us 时间可配置吗? 我看到 HOST_TXINTERVAL 寄存器用于设置批量端点的超时间隔、而不是轮询间隔。

谢谢、

Umair

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

    AFAIK、批量传输中没有轮询。 您能否检查应用程序是否正在尝试连续读取数据、而不是在 MUSB 层进行轮询或重试。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Dwarakesh R、

    感谢您的回答。
    它显然不进行轮询。 当我对接收传输进行编程时、Mentor USB 开始以批量方式在端点的总线上发送令牌、直到它接收数据、并且 IN 令牌之间的时间间隔~5us。 我想问、这个5us 时间是否可以更改? 还是硬件特征?

    谢谢、
    Umair

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

    它看起来没有任何功能可以单独从 MUSB 层连续接收/发送数据以进行批量传输、直到上层使用 MUSB 发送/接收数据时才会排队到 MUSB 层。 我想说 PPP 层或网络层或 USB 类驱动程序(例如 CDC)每5微秒(而不是 MUSB 层)请求此数据、它不是 MUSB 层的一项功能。 如果您需要减慢速度、您需要查看 MUSB 之上的一层、如 USB 类驱动程序(USB 调制解调器驱动程序)或网络层或更高层、如应用。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Umair、

    我要给出的另一个指针是、为了减慢速度、您可以将较小的数据排队。 假设对于一个批量端点、您从应用程序中排队4096个字节(例如、实际上在网络层、4096将进一步细分为 MTU、然后再到达 MUSB 层)、 然后 MUSB 将其分解为8x512字节的数据、这8个字节的数据将快速发送、因为它们在 MUSB 层中可用、并且无法控制减慢数据的速度。 因此、如果您将应用程序的512个字节排队8次以发送4096个字节、那么在 MUSB 层、一次它将仅发送512个字节。 因此、您可以减慢速度。 此外、如果需要减慢速度、则可以尝试 PIO 模式、而不是 DMA 模式。 这也可能会降低传输速度。 对接收数据的队列和发送令牌也是如此。

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

    似乎您没有得到我的观点。 由于 USB 是以主机为中心的协议、USB 功能器件绝不能向主机发送数据、除非主机本身要求这样做。 主机通过向器件发送令牌来实现目标(即使它只希望接收一个字节)、而函数器件会一直发送 NAK、直到数据可供传输。 当数据可用于传输时、函数器件以 ACK 信号响应输入令牌、后跟数据包。 这是标准协议。

    我要问的是、主机发送令牌的频率可以改变、也可以不改变?

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

    我正在等待 TI 代表回答我的问题。

    Umair

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

    您好!

    请参阅 HOST_RXINTERVAL。 如果主机接收到 NAK 而不是数据,则会为 POLINTVL_NAKLIMIT 提供超时时间,以尝试再次发送。 我漏掉了你得到的 NAK。 因此、超时的最小值为2、这意味着在 USB2.0中至少发送2个微帧的 IN 令牌、在 MUSB 中无法控制在2个微帧(这取决于 USB 带宽和速率)期间何时发送 IN 令牌。

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

    最后一行"在 MUSB 中没有控制来检查在2个微帧期间何时发送 IN 令牌" 是我要寻找的内容。

    感谢您的帮助、

    Umair

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    发布 TI USB 专家关于此问题的回复

    如果接收到 NAK、OMAPL138会再次尝试并继续尝试、直到事务成功或 NAKLIMIT 被置位。 然后 OMAPL138生成适当的端点中断、主机应读取相应的寄存器以确定 RxPktRdy、RxStall、Error 或 NAK Timeout 位是否被置位并相应地执行操作。 如果 NAK 超时位被置位、OMAPL138可被指示继续尝试此事务、直到它再次通过清零 NAK 超时位超时、或者通过在清零 NAK 超时位之前清零 ReqPktt 来中止此事务。

    我的一个问题是 NAK 超时位的继续置位、这要求主机继续置位/清零该位。