Система зависла и получила ошибку 110 при использовании USB-устройства для gadgetfs - PullRequest
0 голосов
/ 06 февраля 2019

Используя программу "http://www.linux -usb.org / gadget / usb.c ", попытайтесь настроить gadgetfs на Jetson TX2.

Обновить VID PID для Nvidia: #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*
1015 * Выходной журнал на хост-компьютере Linux:
*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, но после «status = write (fd, buf, tmp);»Jetson TX2 зависает и перезагружается.

В чем причина зависания Jetson TX2 и получения ответа -110 на хост-компьютере?

После поиска, связанного с ошибкой -110, мы получили два разных сообщения об ошибке.h.

Один указывает на 110 как: #define ESHUTDOWN 110 / * Не удается отправить после отключения сокета * /

Второй файл указывает на 110 как: #define ETIMEDOUT 110 / * Время ожидания подключения истекло* /

В обоих случаях есть общий результат: связь между хостом и устройством прерывается по какой-то причине.Так что может быть проблемой для этого соединения является разрыв?

1 Ответ

0 голосов
/ 12 февраля 2019

В исходном файле ядра есть ошибка, связанная с gadgetfs.После исправления этой ошибки, используя ниже, обновите usb-связь для gadgetfs между устройством и хостом с типом массовой передачи.

https://www.systutorials.com/linux-kernels/88555/usb-gadgetfs-fix-crash-caused-by-inadequate-synchronization-linux-4-4-92/

https://www.systutorials.com/linux-kernels/88554/usb-gadget-inode-c-fix-unbalanced-spin_lock-in-ep0_write-linux-4-4-92/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...