USB 호스트 포트가 있는 일부 1-PCB 시스템에서 buildroot를 기반으로 최소한의 Linux 이미지를 구축하는 것을 고려해보세요.
그런 다음 또 다른 소형 컴퓨터인 Raspberry Pi Compute Module "CM3"이 있으며 둘 사이의 유일한 연결은 USB입니다. Linux가 CM3에서 실행되면 통신을 위한 이더넷 가젯 역할을 합니다.
그러나 CM3를 새로 고쳐야 하는 경우 해당 입력 핀(buildroot 시스템에 의해 전환됨)이 "부팅 모드"를 알려주고 사용자 정의 USB 장치 "BCM2710 Boot"가 됩니다. Raspi는 다음을 제안했습니다.사용자 공간프로그램,USB 부팅이라고도 함rpi 부팅, 장치를 찾아보세요비디오를 통해작은 이미지를 업로드하여 대용량 저장 장치로 전환하세요.
CM3 USB를 "일반" RaspberryPi의 호스트 USB 포트에 연결하여 이것을 시도했을 때 다음을 보았습니다.정보:
[16689.527482] usb 1-1.3: new high-speed USB device number 3 using xhci_hcd
[16689.657906] usb 1-1.3: config index 0 descriptor too short (expected 55, got 32)
[16689.658302] usb 1-1.3: New USB device found, idVendor=0a5c, idProduct=2764, bcdDevice= 0.00
[16689.658319] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[16689.658335] usb 1-1.3: Product: BCM2710 Boot
[16689.658350] usb 1-1.3: Manufacturer: Broadcom
Rpi 시작그런 다음 장치를 찾아 언급된 특수 이미지를 보내십시오. 그게 다야.
하지만 빌드루트 시스템에 연결하면 다음과 같은 내용만 표시됩니다.
[ 597.725309] usb 3-1: new full-speed USB device number 4 using xhci-hcd
[ 601.965304] usb 3-1: new high-speed USB device number 5 using xhci-hcd
따라서 USB가 새로운 것을 보고 있는 것처럼 보이지만 그 이상은 아닙니다. 그리고rpi 부팅Raspi 호스트에서처럼 찾는 대신 영원히 기다리십시오. 따라서 내 빌드 루트 이미지에 활성화되지 않은 하나 이상의 Linux 커널 구성 옵션이 있어 이 기능이 제대로 작동하지 않는 것 같습니다. 처음에는 모든 이더넷 장치가 작동하지 않았고 CDCETHER 및 기타 옵션을 활성화해야 했기 때문에 이 아이디어를 얻었습니다. 하지만 이 비표준 장치에서 여기서 무엇을 찾아야 할지 몰랐습니다. 특정 장치와 관련된 것으로 보이는 활성화되지 않은 CONFIG_USB_* 옵션이 많이 있지만 "사용자 정의"와 같은 것은 없습니다.
해당 옵션은 무엇입니까?
추가됨: 두 커널 구성의 정렬 및 행 일치 보기(동일한 옵션 사용) 발췌: 양쪽에서 동일한 설정이 있는 항목, 특정 장치용 드라이버 또는 USB와 관련되지 않은 항목을 제거하여 목록 범위를 상당히 좁혔습니다. 이러한 커널 옵션에 대한 간단한 설명을 살펴보았습니다.https://cateee.net/, 지금까지 그 계산서에 맞는 것을 본 적이 없습니다. 하지만 그렇다고 제가 뭔가를 간과하거나 오해하지 않았다는 뜻은 아닙니다...
configRaspi4-Raspbian configBuildrootDevice
--------------------------------------------------------------------------------
CONFIG_HISI_HIKEY_USB is not set
CONFIG_MEDIA_USB_SUPPORT=y
CONFIG_NOP_USB_XCEIV=y CONFIG_NOP_USB_XCEIV is not set
CONFIG_USB_ACM=m CONFIG_USB_ACM=y
CONFIG_USB_ADUTUX=m CONFIG_USB_ADUTUX is not set
CONFIG_USB_AIRSPY is not set
CONFIG_USB_AN2720=y
CONFIG_USB_ARMLINUX=y
CONFIG_USB_ATM=m
CONFIG_USB_BELKIN=y
CONFIG_USB_CDC_COMPOSITE=m CONFIG_USB_CDC_COMPOSITE is not set
CONFIG_USB_CONFIGFS_ACM=y CONFIG_USB_CONFIGFS_ACM is not set
CONFIG_USB_CONFIGFS_ECM_SUBSET=y
CONFIG_USB_CONFIGFS_ECM=y CONFIG_USB_CONFIGFS_ECM is not set
CONFIG_USB_CONFIGFS_ECM_SUBSET is not set
CONFIG_USB_CONFIGFS_F_FS=y CONFIG_USB_CONFIGFS_F_FS is not set
CONFIG_USB_CONFIGFS_F_HID=y CONFIG_USB_CONFIGFS_F_HID is not set
CONFIG_USB_CONFIGFS_F_LB_SS=y CONFIG_USB_CONFIGFS_F_LB_SS is not set
CONFIG_USB_CONFIGFS_F_UAC2=y
CONFIG_USB_CONFIGFS_NCM=y CONFIG_USB_CONFIGFS_NCM is not set
CONFIG_USB_CONFIGFS_OBEX=y CONFIG_USB_CONFIGFS_OBEX is not set
CONFIG_USB_CONFIGFS_RNDIS=y CONFIG_USB_CONFIGFS_RNDIS is not set
CONFIG_USB_CONFIGFS_SERIAL=y CONFIG_USB_CONFIGFS_SERIAL is not set
CONFIG_USB_CONFIGFS=m CONFIG_USB_CONFIGFS=y
CONFIG_USB_DEFAULT_PERSIST=y CONFIG_USB_DEFAULT_PERSIST is not set
CONFIG_USB_DWC2_DEBUG is not set
CONFIG_USB_DWC2_DUAL_ROLE=y
CONFIG_USB_DWC2_HOST is not set
CONFIG_USB_DWC2_PCI is not set
CONFIG_USB_DWC2_PERIPHERAL is not set
CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set
CONFIG_USB_DWC2=m CONFIG_USB_DWC2 is not set
CONFIG_USB_DWC3_DUAL_ROLE=y
CONFIG_USB_DWC3_GADGET is not set
CONFIG_USB_DWC3_HAPS=y
CONFIG_USB_DWC3_HOST is not set
CONFIG_USB_DWC3_OF_SIMPLE=y
CONFIG_USB_DWC3_OTG is not set
CONFIG_USB_DWC3 is not set CONFIG_USB_DWC3=y
CONFIG_USB_DWCOTG=y
CONFIG_USB_ETH_EEM is not set CONFIG_USB_ETH_EEM=y
CONFIG_USB_ETH=m CONFIG_USB_ETH=y
CONFIG_USB_EZUSB_FX2=m CONFIG_USB_EZUSB_FX2 is not set
CONFIG_USB_F_ACM=m
CONFIG_USB_F_ECM=m CONFIG_USB_F_ECM=y
CONFIG_USB_F_EEM=m CONFIG_USB_F_EEM=y
CONFIG_USB_F_FS=m
CONFIG_USB_F_HID=m
CONFIG_USB_F_MASS_STORAGE=m CONFIG_USB_F_MASS_STORAGE=y
CONFIG_USB_F_NCM=m
CONFIG_USB_F_OBEX=m
CONFIG_USB_F_RNDIS=m CONFIG_USB_F_RNDIS=y
CONFIG_USB_F_SERIAL=m
CONFIG_USB_F_SS_LB=m
CONFIG_USB_F_SUBSET=m CONFIG_USB_F_SUBSET=y
CONFIG_USB_F_UAC2=m
CONFIG_USB_FEW_INIT_RETRIES is not set
CONFIG_USB_G_ACM_MS=m CONFIG_USB_G_ACM_MS is not set
CONFIG_USB_G_HID=m CONFIG_USB_G_HID is not set
CONFIG_USB_G_MULTI_CDC is not set
CONFIG_USB_G_MULTI_RNDIS=y
CONFIG_USB_G_MULTI=m CONFIG_USB_G_MULTI is not set
CONFIG_USB_G_SERIAL=m CONFIG_USB_G_SERIAL is not set
CONFIG_USB_GADGETFS=m CONFIG_USB_GADGETFS is not set
CONFIG_USB_GSPCA=m
CONFIG_USB_HIDDEV=y CONFIG_USB_HIDDEV is not set
CONFIG_USB_HSO=m
CONFIG_USB_LD=m CONFIG_USB_LD is not set
CONFIG_USB_LIBCOMPOSITE=m CONFIG_USB_LIBCOMPOSITE=y
CONFIG_USB_MASS_STORAGE=m CONFIG_USB_MASS_STORAGE is not set
CONFIG_USB_MON=m CONFIG_USB_MON is not set
CONFIG_USB_NET_CDC_EEM=m CONFIG_USB_NET_CDC_EEM=y
CONFIG_USB_NET_CDC_MBIM=m CONFIG_USB_NET_CDC_MBIM is not set
CONFIG_USB_NET_CDC_NCM=m CONFIG_USB_NET_CDC_NCM is not set
CONFIG_USB_NET_CDC_SUBSET_ENABLE=m
CONFIG_USB_NET_CDC_SUBSET=m CONFIG_USB_NET_CDC_SUBSET is not set
CONFIG_USB_NET_CDCETHER=m CONFIG_USB_NET_CDCETHER=y
CONFIG_USB_NET_RNDIS_HOST=m CONFIG_USB_NET_RNDIS_HOST is not set
CONFIG_USB_NET_RNDIS_WLAN=m
CONFIG_USB_OTG_BLACKLIST_HUB is not set
CONFIG_USB_OTG_FSM=y
CONFIG_USB_OTG_WHITELIST is not set
CONFIG_USB_OTG is not set CONFIG_USB_OTG=y
CONFIG_USB_OTG_DISABLE_EXTERNAL_HUB is not set
CONFIG_USB_OTG_PRODUCTLIST is not set
CONFIG_USB_PWC=m
CONFIG_USB_RAW_GADGET is not set
CONFIG_USB_ROLE_SWITCH=m CONFIG_USB_ROLE_SWITCH is not set
CONFIG_USB_SERIAL=m CONFIG_USB_SERIAL is not set
CONFIG_USB_SEVSEG=m CONFIG_USB_SEVSEG is not set
CONFIG_USB_TEST=m CONFIG_USB_TEST is not set
CONFIG_USB_TMC=m CONFIG_USB_TMC is not set
CONFIG_USB_U_ETHER=m CONFIG_USB_U_ETHER=y
CONFIG_USB_U_SERIAL=m
CONFIG_USB_WUSB_CBAF is not set
CONFIG_USB_ZERO=m CONFIG_USB_ZERO is not set
답변1
특별한 옵션은 필요하지 않은 것 같습니다.
기본적으로 libusb를 사용하는 Rpiboot를 사용하려면 호스트 시스템에서 udev를 실행해야 하지만 그렇지 않습니다. udev가 없는 시스템에서 실행하면 불평하지 않습니다... BusyBox 구현이 누락되어 최근에 "lsusb"(usbtools)를 컴파일했기 때문에 속았습니다. 호스트 시스템이 충돌하고 commlpaining 관련 udev에 대한 콘텐츠가 누락되었습니다.
libusb를 직접 컴파일한 후 "--disable-udev"로 구성하고 이를 사용하여 rpiboot를 빌드하면 됩니다.