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.

[参考译文] AM6411:cdns3_ep0_run_transfer 无 USB Gadget ZLP

Guru**** 2546020 points
Other Parts Discussed in Thread: AM3352, AM6411

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1289171/am6411-no-usb-gadget-zlp-for-cdns3_ep0_run_transfer

器件型号:AM6411
主题中讨论的其他器件:AM3352

尊敬的 TI 支持团队:

1.开发环境

   1.1。我们自己的使用 AM64B 的定制电路板

   1.2. USB 端口处于设备模式(USB 小工具打印机)

   1.3.适用于 AM64X 09.00.00.03的 Processor SDK Linux

2.为 ZLP 测试修改源代码

   drivers/usb/gadet/function/f_printer.c

       printer_func_setup()

       {

           ...

           Case GET_DEVICE_ID:/*获取 IEEE-1284 PNP 字符串*/

               如果(值> 64)值= 64;// zlp 的测试代码
       }

   我添加了上面的红线、因此我可以看到零长度数据包被发送或没有发送64字节。

3.症状

   

   我在 USB 协议分析器上没有看到零长度的数据包。

4.问题

   drivers/usb/cdns3/cdns3-ep0.c

       static void cdns3_ep0_run_transfer()
       {
           dev_err (priv_dev->dev、"cdns3_ep0_run_transfer:zlp %d len %d\n"、zlp、length);//我添加了日志消息
          if (zlp){
             PRIV_EP->TRB_POOL [0].control = CPU_to_le32 (TRB_CYCLE | TRB_TYPE (TRB_NORMAL);
          PRIV_EP->TRB_POOL [1].buffer = cpu_to_le32 (trb_buffer (dma_addr);
          PRIV_EP->TRB_POOL [1].length = cpu_to_le32 (TRB_LEN (0));
          PRIV_EP->TRB_POOL [1].control = cpu_to_le32 (TRB_CYCLE | TRB_IOC | TRB_TYPE (TRB_NORMAL));
       }其他{
          PRIV_EP->TRB_POLAR[0].control = cpu_to_le32 (TRB_CYCLE | TRB_IOC | TRB_TYPE (TRB_NORMAL));
          PRIV_EP->TRB_POLAR[1].CONTROL = 0;
          }

       }

   日志消息

       [145.495089] 打印机小工具.0: 1284 PNP 字符串: 64
       [145.499788] cdns-USB3 f400000.usb: cdns3_gadget_ep0_queue:0 1 len 64 maxpacket 64 zlp 1
       [ 145.508123] cdns-usb3 f400000.usb: cdns3_ep0_run_transfer:zlp 1 len 64

   我认为一切都很正常、但我在 USB 协议分析器上没有看到零长度的数据包。

   请问、为什么没有零长度的数据包?

此致、
张昱

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

    您好、Hugh、

    在 printer_func_setup()开头的以下调试行的打印消息是什么?

    992 DBG (dev、"Ctrl req%02x.%02x v%04x i%04x l%d\n"、
    993      Ctrl->bRequestType、Ctrl->BREQUEST、wValue、Windex、wLength);

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

    您好、Bin、

    我收到以下打印消息:

    [49.749396]  打印机小工具.0: ctrl reqa1.00 v0000 i0000 l1009
    [49.755158]  打印机小工具.0:1284 PNP 字符串:40 MFG:IDP;MDL:smart-51打印机;CLS:打印机;命令集:PCL、SML;活动命令集:PCL;CID:IDPSmart51;

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

    Hugh、

    我已经好几年没看过 USB2.0规格了、但我认为 Setup transactions 不会查看 ZLP 了。

    您是否确定在 GET_DEVICE_ID 响应中进行的修改是正确的、并期望生成 ZLP?

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

    您好、Bin、

    我100%确信我的修改是正确的、它应该会生成 ZLP。

    让我通过 USB 2.0规格文档对此进行更详细的说明。

    控制读取传输包括设置阶段、数据阶段和状态阶段。

    对于我来说、"wMaxPacketSize"为64、在数据阶段应发送两个数据包(64长度的数据包和零长度的数据包)。

    我们目前在大规模生产中使用 AM3352、并针对控制传输实施我们自己的供应商命令。

    USB 协议分析器显示控制读取传输包括两个数据阶段的数据包(64长的数据包和零长度的数据包)。 (我们销售该产品已有10年。)

    我将在新产品中将 AM3352的软件移植到 AM6411。

    正如我之前发送的 USB 协议分析器的捕捉图像一样、它没有被视为没有 ZLP 的正确控制传输。 (这是分析仪的决定。)

    我认为这可能是芯片错误。 "当然,我不知道。"

    "你怎么知道的?

    此致、

    张昱

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

    您好、Hugh、

    感谢您的讲解。 这似乎是有道理的。

    我目前正在执行另一项任务。 我将在下周探讨这个 ZLP 问题。

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

    您好、Bin、

    好的、我要等待。 谢谢。

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

    您好、Bin、

    我找到了解决此问题的更简单的测试方法、无需修改任何代码。

    insmod g_printer.ko iManufacturer="test-string" is okay but

    insmod g_printer.ko iManufacturer="123456789012345678901234567890!" is not okay.

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

    您好、Hugh、

    感谢您的更新。 我在研究它时会记住它。

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

    有任何更新吗?

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

    您好、Hugh、

    很抱歉、我被几项重要任务分心、还没有时间处理这项工作。

    直到新年假期、我才有时间参加本次活动。

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

    为什么在您没有时间的情况下不将此问题转给同事? 只是因为您很忙、我等待是合理的吗?

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

    您好、Hugh、

    抱歉给您带来的沮丧、但遗憾的是、USB 在硬件和软件方面都非常复杂、只有我一个人知道 AM64x USB 在 硬件和 Linux 上的应用。 感谢您的耐心等待。

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

    您好、Bin、

    因为它影响了我们新的产品进度、希望尽快解决。 谢谢。

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

    您好、Hugh、

    我将执行测试。 但很可能是在新年之后,因为我将从这个星期五休假。

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

    您好、Bin、

    我明白了。 祝您度过美好的假期、明年再见。

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

    您好、Hugh、

    insmod g_printer.ko iManufacturer="test-string" is okay but

    insmod g_printer.ko iManufacturer="123456789012345678901234567890!" is not okay.

    [/报价]

    您的意思是、第一种情况可以、第二种情况不可以? "你在担心什么?"

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

    您好、Bin、

    对于首次测试、

    我看到了设置、输入和输出。 所有数据包都正常。

    对于第二项测试、

    我查看设置和输入(64字节)、但我看不到输入(0字节)和输出。

    USB 协议分析器会将其显示为红色、因为这是不正常的。

    由于未正确传输字符串描述符、已连接的主机也无法看到该字符串描述符。

    请参见下方的。 没有字符串描述符1。

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

    感谢您的答复。

    我们的专家是年终假期。

    请预计在明年(第一周)之前收到一些答复  

     

    此致

    阿什瓦尼

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

    尊敬的 Ashwani:

    非常感谢您的回复。