主题中讨论的其他器件: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 协议分析器上没有看到零长度的数据包。
请问、为什么没有零长度的数据包?
此致、
张昱





