저는 Linux 운영 체제에서 직렬 통신을 위한 일괄 입력 및 일괄 출력 기능을 갖춘 USB 가젯을 만들려고 합니다. 하지만 장치 설명자를 설정하는 데 어려움을 겪고 있습니다. 구체적으로 엔드포인트 수와 해당 주소가 무엇인지와 같은 매개변수를 결정하고 싶지만 그렇게 할 수 없습니다.
내용 아래 /sys/kernel/config/usb_gadget/ 내가 만든다g1폴더 사용량mkdir g1주문하다
그 후 나는 이것을 보았다.
UDC bDeviceSubClass bcdUSB idProduct os_desc
bDeviceClass bMaxPacketSize0 configs idVendor strings
bDeviceProtocol bcdDevice functions max_speed
이 웹사이트에 대한 매개변수를 설정했습니다.https://docs.kernel.org/usb/gadget_configfs.html
그 후 보드를 Ubuntu PC에 연결했고 다음 설명자를 보았습니다.lsusb -d 2020:1111 -v 주문하다
Bus 003 Device 045: ID 2020:1111 VIA Labs, Inc. USB2.0 Hub
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.10
bDeviceClass 0
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x2020
idProduct 0x1111
bcdDevice 0.00
iManufacturer 1 Manufacturer
iProduct 2 Product
iSerial 3 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x0020
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 4 0
bmAttributes 0xa0
(Bus Powered)
Remote Wakeup
MaxPower 100mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Binary Object Store Descriptor:
bLength 5
bDescriptorType 15
wTotalLength 0x0016
bNumDeviceCaps 2
USB 2.0 Extension Device Capability:
bLength 7
bDescriptorType 16
bDevCapabilityType 2
bmAttributes 0x0000010e
BESL Link Power Management (LPM) Supported
BESL value 256 us
SuperSpeed USB Device Capability:
bLength 10
bDescriptorType 16
bDevCapabilityType 3
bmAttributes 0x00
wSpeedsSupported 0x000f
Device can operate at Low Speed (1Mbps)
Device can operate at Full Speed (12Mbps)
Device can operate at High Speed (480Mbps)
Device can operate at SuperSpeed (5Gbps)
bFunctionalitySupport 1
Lowest fully-functional device speed is Full Speed (12Mbps)
bU1DevExitLat 10 micro seconds
bU2DevExitLat 511 micro seconds
can't get debug descriptor: Resource temporarily unavailable
Device Status: 0x0001
Self Powered
여태까지는 그런대로 잘됐다.
문제는 이 설명자에 엔드포인트가 2개 있는데 그 수를 4로 늘리고 내가 직접 제공한 엔드포인트 주소를 쓰고 싶다는 것입니다. 내가 하고 싶은 일의 예는 다음과 같습니다. 끝점은 EP1(OUT) EP1(IN) 0x81, 0x01 대신 EP2(OUT) EP4(OUT) EP6(IN) EP8(IN)이 되며 각 주소를 설정하고 싶습니다. 각각 0x02, 0x04, 0x86, 0x88로 설정해야 하는데 어떻게 해야 하나요?
감사합니다.