使用“ http://www.linux-usb.org/gadget/usb.c”程序尝试在Jetson TX2上设置gadgetfs。
更新Nvidia的VID PID: #define DRIVER_VENDOR_NUM 0x0955 #define DRIVER_PRODUCT_NUM 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_control”中。获取USB_REQ_GET_DESCRIPTOR事件,然后调用USB_DT_STRING,但在“状态=写(fd,buf,tmp)”之后; Jetson TX2卡住并重新启动。
Jetson TX2卡住并在主机PC上出现错误-110响应的原因是什么?
搜索与错误-110相关的错误后,我们得到了两个不同的errno.h。
一个表示110为: #define ESHUTDOWN 110 / *套接字关闭后无法发送* /
第二个文件将110表示为: #define ETIMEDOUT 110 / *连接超时* /
在两种情况下,都有一个共同的结果,即主机和设备之间的通信由于某种原因而中断。那么,此连接的中断可能是什么?
答案 0 :(得分:0)
内核源文件中存在与gadgetfs相关的错误。在使用以下更新修补了该错误之后,使用批量传输类型的设备和主机之间的gadgetfs进行了usb通信工作。