사용 가능한 USB 엔드포인트 수 알아보기

사용 가능한 USB 엔드포인트 수 알아보기

저는 임베디드 시스템에서 Linux를 실행하고 있습니다. 이것시스템 온 칩시스템에는 USB 2.0 포트가 있으며,데이터 시트8개의 엔드포인트를 사용할 수 있다고 주장합니다.

소프트웨어에서 이를 확인할 수 있는 방법이 있나요? 어쩌면 /proc어딘가에 항목이 있을까요 /sys? USB 장치가 차지하는 끝점 수를 확인하여 이를 수행할 수 있지만 /sys/bus/usb/devices/**/bNumEndpoints소프트웨어에서 시스템에서 사용 가능한 총 끝점 수를 결정하는 것이 가능한지 알고 싶습니다.

답변1

{링크된 데이터시트]의 46페이지(https://linux-sunxi.org/images/2/23/Allwinner_V3s_Datasheet_V1.0.pdf)설명하다:

장치 모드에서 사용자가 구성할 수 있는 엔드포인트 최대 8개

"장치 모드에서"이는 SoC가 USB 호스트가 아닌 USB 장치로 작동한다는 의미입니다. 리눅스에서는 이것을 이렇게 부른다.USB 가젯 모드.

런타임에 USB 가젯 모드를 구성하려면 CONFIGFS_FS가 필요한 커널 빌드 옵션 CONFIG_USB_CONFIGFS가 필요합니다. SoC가 연결된 USB 호스트에 제공하려는 기능에 따라 USB_LIBCOMPOSITE 및 하나 이상의 USB_G_* 옵션도 필요합니다.

USB 가젯 기능 구성에 대한 설명은 다음을 참조하세요.문서/usb/gadget_configfs.rst(사용할 수 있는 가젯 기능 중 일부는 Linux 커널 소스 문서와 동일한 디렉토리에 있는 다른 widget_*.rst 파일에 문서화되어 있습니다. 각 기능은 하나 이상의 엔드포인트를 사용하며, 이 SoC에서는 사용 가능한 엔드포인트가 8개뿐입니다.

예를 들어 단일 ttyACM스타일 직렬 채널을 제공하도록 SoC를 구성하는 경우 3개의 엔드포인트가 필요합니다. 하나는 제어 인터페이스용이고 두 개는 데이터 인터페이스용입니다(송신용 엔드포인트 1개, 수신용 엔드포인트 1개).

debugfs가 설치된 경우 각 엔드포인트는 행에 나열 E: ...되므로/sys/kernel/debug/usb/devices

grep ^E: /sys/kernel/debug/usb/devices | wc -l

현재 USB 가젯 구성에서 사용되는 엔드포인트 수를 알려줍니다.

데이터시트를 신뢰하지 않는다면 데이터시트에 지정된 엔드포인트 수를 사용하여 가젯 기능 조합을 선택하고 보고된 오류를 확인하면서 구성을 시도한 다음 구성된 각 기능에 대한 모든 엔드포인트를 확인할 수 있을 것입니다. USB 호스트 측에서 모두 액세스 가능합니다.

USB 장치/OTG 컨트롤러 칩이 가젯 모드에서 지원한다고 주장하는 엔드포인트 수를 모르는 경우 오류가 발생할 때까지 USB 가젯 기능을 생성하는 루프를 실행한 다음 생성된 기능과 USB 수를 확인할 수 있습니다. 호스트 시스템이 액세스할 수 있는 엔드포인트입니다.

답변2

lshw지원하는 표준을 포함하여 포트가 나열됩니다.

관련 정보