当usb设备用于gadgetfs时,系统挂起并出现错误110
使用“”程序尝试在Jetson TX2上设置gadgetfs 更新Nvidia的视频PID: #定义驱动程序\u供应商\u编号0x0955 #定义驱动程序\u产品\u编号0x7020 同时更新Nvidia的自动配置功能:当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
*/* 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通信(批量传输类型)正在工作