Anonymous
FunctionFS не может начинаться с 3 конечных точек (int in x2, объемный Out) -Ошибка -524
Сообщение
Anonymous » 23 июн 2025, 14:58
Я использую FunctionFs в Linux для реализации гаджета USB с 3 конечными точками: < /p>
ep1 in (прерывание) < /li>
ep2 в (прерывание) < /li>
ep3 (BUMBE) < /li>
< /li> gr /br />
gr /ul>
gr /br /ul>
gr /ul gr /ul>
UDC (Код: Выделить всё
echo > /sys/kernel/config/usb_gadget/mygadget/UDC ) с помощью этой ошибки ядра:
Код: Выделить всё
configfs-gadget 5100000.udc-controller: failed to start mygadget: -524
sh: write error: No error information
< /code>
Вот соответствующая часть моего определения дескриптора в c: < /p>
.intf = {
.bLength = sizeof(vendor_descs.hs_descs.intf),
.bDescriptorType = USB_DT_INTERFACE,
.bNumEndpoints = 3,
.bInterfaceClass = USB_CLASS_VENDOR_SPEC,
.iInterface = 1,
.bInterfaceNumber = 0,
.bAlternateSetting = 0,
.bInterfaceSubClass = 0x00,
.bInterfaceProtocol = 0x00,
},
.ep_in_cmd = {
.bLength = sizeof(vendor_descs.hs_descs.ep_in_cmd),
.bDescriptorType = USB_DT_ENDPOINT,
.bmAttributes = USB_ENDPOINT_XFER_INT,
.bEndpointAddress = 1 | USB_DIR_IN,
.wMaxPacketSize = __cpu_to_le16(64),
.bInterval = 0x04,
},
.ep_in_video = {
.bLength = sizeof(vendor_descs.hs_descs.ep_in_video),
.bDescriptorType = USB_DT_ENDPOINT,
.bmAttributes = USB_ENDPOINT_XFER_INT,
.bEndpointAddress = 2 | USB_DIR_IN,
.wMaxPacketSize = __cpu_to_le16(64),
.bInterval = 0x04,
},
.ep_out_cmd = {
.bLength = sizeof(vendor_descs.hs_descs.ep_out_cmd),
.bDescriptorType = USB_DT_ENDPOINT,
.bmAttributes = USB_ENDPOINT_XFER_BULK,
.bEndpointAddress = 3 | USB_DIR_OUT,
.wMaxPacketSize = __cpu_to_le16(512),
.bInterval = 0x00,
},
< /code>
.bNumEndpoints = 3 правильно установлен
Код: Выделить всё
.length = __cpu_to_le32(sizeof(vendor_descs)) правильно используется
Я пишу дескрипторы и строки в EP0 перед обязанностью UDC
Я подтвердил, что/sys/class/udc/ показывает действительное имя UDC ()
ep0, ep1, ep2 и ep3 были успешно созданы в разделе /dev/ffs_vendor/.
Что может быть основной причиной этого? />
Linux kernel: 5.x (custom build)
FunctionFS with descriptor v2
High-speed USB
Allwinner SoC: UDC 5100000.udc-controller
Any guidance ценится! < /p>
Подробнее здесь:
https://stackoverflow.com/questions/796 ... -error-524
1750679926
Anonymous
Я использую FunctionFs в Linux для реализации гаджета USB с 3 конечными точками: < /p> [list] [*] ep1 in (прерывание) < /li> ep2 в (прерывание) < /li> ep3 (BUMBE) < /li> < /li> gr /br /> gr /ul> gr /br /ul> gr /ul gr /ul> UDC ([code]echo > /sys/kernel/config/usb_gadget/mygadget/UDC[/code]) с помощью этой ошибки ядра: [code]configfs-gadget 5100000.udc-controller: failed to start mygadget: -524 sh: write error: No error information < /code> Вот соответствующая часть моего определения дескриптора в c: < /p> .intf = { .bLength = sizeof(vendor_descs.hs_descs.intf), .bDescriptorType = USB_DT_INTERFACE, .bNumEndpoints = 3, .bInterfaceClass = USB_CLASS_VENDOR_SPEC, .iInterface = 1, .bInterfaceNumber = 0, .bAlternateSetting = 0, .bInterfaceSubClass = 0x00, .bInterfaceProtocol = 0x00, }, .ep_in_cmd = { .bLength = sizeof(vendor_descs.hs_descs.ep_in_cmd), .bDescriptorType = USB_DT_ENDPOINT, .bmAttributes = USB_ENDPOINT_XFER_INT, .bEndpointAddress = 1 | USB_DIR_IN, .wMaxPacketSize = __cpu_to_le16(64), .bInterval = 0x04, }, .ep_in_video = { .bLength = sizeof(vendor_descs.hs_descs.ep_in_video), .bDescriptorType = USB_DT_ENDPOINT, .bmAttributes = USB_ENDPOINT_XFER_INT, .bEndpointAddress = 2 | USB_DIR_IN, .wMaxPacketSize = __cpu_to_le16(64), .bInterval = 0x04, }, .ep_out_cmd = { .bLength = sizeof(vendor_descs.hs_descs.ep_out_cmd), .bDescriptorType = USB_DT_ENDPOINT, .bmAttributes = USB_ENDPOINT_XFER_BULK, .bEndpointAddress = 3 | USB_DIR_OUT, .wMaxPacketSize = __cpu_to_le16(512), .bInterval = 0x00, }, < /code> .bNumEndpoints = 3[/code] правильно установлен [*][code].length = __cpu_to_le32(sizeof(vendor_descs))[/code] правильно используется [*] Я пишу дескрипторы и строки в EP0 перед обязанностью UDC [*] Я подтвердил, что/sys/class/udc/ показывает действительное имя UDC ([code]5100000.udc-controller[/code]) [*] ep0, ep1, ep2 и ep3 были успешно созданы в разделе /dev/ffs_vendor/. [/list] ❓ Что может быть основной причиной этого? />[list] [*]Linux kernel: 5.x (custom build) [*]FunctionFS with descriptor v2 [*]High-speed USB [*]Allwinner SoC: UDC 5100000.udc-controller [/list] Any guidance ценится! < /p> Подробнее здесь: [url]https://stackoverflow.com/questions/79676124/functionfs-fails-to-start-with-3-endpoints-int-in-x2-bulk-out-error-524[/url]