当usb设备用于gadgetfs时,系统挂起并出现错误110

当usb设备用于gadgetfs时,系统挂起并出现错误110,usb,Usb,使用“”程序尝试在Jetson TX2上设置gadgetfs 更新Nvidia的视频PID: #定义驱动程序\u供应商\u编号0x0955 #定义驱动程序\u产品\u编号0x7020 同时更新Nvidia的自动配置功能: */* Nvidia processors, high/full speed */ else if (stat (DEVNAME = "tegra-xudc", &statb) == 0) { HIGHSPEED = 1; device_desc.bcd

使用“”程序尝试在Jetson TX2上设置gadgetfs

更新Nvidia的视频PID: #定义驱动程序\u供应商\u编号0x0955 #定义驱动程序\u产品\u编号0x7020

同时更新Nvidia的自动配置功能:

*/* Nvidia processors, high/full speed */
else if (stat (DEVNAME = "tegra-xudc", &statb) == 0) {
    HIGHSPEED = 1;
    device_desc.bcdDevice = __constant_cpu_to_le16 (0x0001);
    fs_source_desc.bEndpointAddress
    = hs_source_desc.bEndpointAddress
    = USB_DIR_IN | 1;
    EP_IN_NAME = "ep1in-bulk";
    fs_sink_desc.bEndpointAddress
    = hs_sink_desc.bEndpointAddress
    = USB_DIR_OUT | 2;
    EP_OUT_NAME = "ep2out-bulk";
    source_sink_intf.bNumEndpoints = 3;
    fs_status_desc.bEndpointAddress
    = hs_status_desc.bEndpointAddress
    = USB_DIR_IN | 3;
    EP_STATUS_NAME = "ep3in-int";
}*
运行后程序在Jetson TX2终端获得输出:

*/dev/gadget/musb_hdrc ep0 configured
serial="1.3"
** Thu Jan 1 05:19:27
CONNECT high speed
DISCONNECT
CONNECT high speed
SETUP 80.06 v0300 i0000 255*
Linux主机PC上的输出日志为:

*usb 3-2: new high-speed USB device number 48 using xhci_hcd
usb 3-2: string descriptor 0 read error: -110
usb 3-2: New USB device found, idVendor=0955, idProduct=7020
usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 3-2: can't set config #2, error -110*
调试完usb.c后,一步一步地发现程序卡在“handle\u control”功能中。获取USB_REQ_Get_描述符的事件,然后调用USB_DT_字符串,但在“status=write(fd,buf,tmp);”之后,Jetson TX2被卡住并重新启动

Jetson TX2卡滞的原因是什么?主机PC上出现错误110响应

在搜索了与错误-110相关的内容后,我们得到了两个不同的errno.h

其中一个表示110为: #定义ESHUTDOWN 110/*套接字关闭后无法发送*/

第二个文件指示110为: #定义ETIMEDOUT 110/*连接超时*/


在这两种情况下,由于某种原因,主机和设备之间的通信都会中断。那么,这个连接的问题是什么呢

与gadgetfs相关的内核源文件中存在bug。在修补该漏洞后,使用以下更新设备和主机之间的gadgetfs usb通信(批量传输类型)正在工作