현재 장치 모드에서 USB OTG 포트가 있는 Linux 시스템을 설정하려고 합니다. 사전 구성된 구성을 사용하여 NCM 가젯을 활성화하면 이미 가젯 드라이버를 로드할 수 있으며 NCM 가젯은 OTG 포트에 연결된 호스트에서 인식됩니다. 여러 끝점이 있는 두 개의 인터페이스가 /sys/bus/usb/devices/3-1/ 아래에 나열되어 있습니다. 이제 호스트에 제공되는 인터페이스(및 엔드포인트)를 수정하고 싶습니다.
내 연구에 따르면 libcomposite와 configfs가 이 문제에 대한 해결책이라고 생각합니다. 따라서 buildroot의 configfs를 통해 구성 가능한 NCM을 활성화했습니다.
구성을 위해 configfs를 통한 가젯 구성에 대한 커널 문서를 따라해 보았습니다.https://www.kernel.org/doc/Documentation/usb/gadget_configfs.txt
libcomposite.ko를 로드하고 configfs를 설치했습니다. /sys/kernel/config/usb_gadget/ 아래에 폴더를 만들 수 있습니다. 폴더에 들어가면 예상되는 파일과 하위 폴더가 포함되어 있습니다.
total 0
-rw-r--r-- 1 root root 4.0K Feb 16 15:15 UDC
-rw-r--r-- 1 root root 4.0K Feb 16 15:15 bDeviceClass
-rw-r--r-- 1 root root 4.0K Feb 16 15:15 bDeviceProtocol
-rw-r--r-- 1 root root 4.0K Feb 16 15:15 bDeviceSubClass
-rw-r--r-- 1 root root 4.0K Feb 16 15:15 bMaxPacketSize0
-rw-r--r-- 1 root root 4.0K Feb 16 15:15 bcdDevice
-rw-r--r-- 1 root root 4.0K Feb 16 15:15 bcdUSB
drwxr-xr-x 2 root root 0 Feb 16 14:43 configs
drwxr-xr-x 2 root root 0 Feb 16 14:43 functions
-rw-r--r-- 1 root root 4.0K Feb 16 15:15 idProduct
-rw-r--r-- 1 root root 4.0K Feb 16 15:15 idVendor
drwxr-xr-x 2 root root 0 Feb 16 14:43 os_desc
drwxr-xr-x 2 root root 0 Feb 16 14:43 strings
mkdir functions/ncm.usb3
mkdir: can't create directory 'functions/ncm.usb3': No such file or directory
그러나 실제로 /lib/modules/4.14.78-linux-v4.14-BSP0112/kernel/drivers/usb/gadget/function/ 아래에 usb_f_ncm.ko 파일이 있습니다!
여러 이름(예: usb0, usb, u1...)과 기타 장치(예: 대용량 저장 장치)를 시도했지만 모두 성공하지 못했습니다. ./configs 아래에 구성을 생성할 수 있고 ./strings 아래에 하위 폴더를 생성할 수 있습니다. 여기서 제가 놓치고 있는 퍼즐 조각은 무엇입니까? 도움을 주시면 감사하겠습니다.
추가 정보: 이것은 임베디드 시스템입니다. modprobe는 사용할 수 없으며 insmod만 사용할 수 있습니다.
고쳐 쓰다위에서부터 이 문제를 해결할 수 있습니다. 이전에는 빌드 루트에 모듈(M)로 libcomposite와 ncm이 있었습니다. 커널에 직접 포함시키면 ncm 기능을 추가할 수 있습니다(*). 이는 modprobe 기능이 부족하기 때문일 수 있습니다. 그러나 생성된 함수 폴더에는 4개의 구성 파일만 나타납니다.
total 0
-rw-r--r-- 1 root root 4.0K Feb 16 16:30 dev_addr
-rw-r--r-- 1 root root 4.0K Feb 16 16:30 host_addr
-r--r--r-- 1 root root 4.0K Feb 16 16:30 ifname
-rw-r--r-- 1 root root 4.0K Feb 16 16:30 qmult
이 인터페이스의 추가 속성을 어떻게 지정합니까? 엔드포인트처럼요?