ADB 가젯 구성을 생성하는 방법은 무엇입니까?

ADB 가젯 구성을 생성하는 방법은 무엇입니까?

내가 읽고있다가젯 구성 문서. 또한 작동 중인 Android 장치를 사용하여 /config/usb_gadget/g1.initramfs를 부팅하고 Linux 버전을 실행하지 않고 장치를 adb 장치로 부팅하려고 합니다. 장치의 boot.img에서 커널을 추출하고 다음 init 스크립트를 사용하여 ramdisk.cpio.gz를 변경했습니다.

#!/usr/bin/bash
PATH=/usr/bin:/usr/sbin
mount -a #mount dev sys proc and configfs
create_devices #make all necessary nodes
mkdir -p /config/usb_gadget/g1/strings/0x409
mkdir -p /config/usb_gadget/g1/functions/ffs.adb
mkdir -p /config/usb_gadget/g1/functions/configs/b.1/strings/0x409
ln -s /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f1
echo "0x0e8d" > /config/usb_gadget/g1/idVendor
echo "0x201c" > /config/usb_gadget/g1/idProduct
echo "0123456789101112" > /config/usb_gadget/g1/strings/0x409/serialnumber
echo "TECNO" > /config/usb_gadget/g1/strings/0x409/manufacturer
echo "TECNO KI7" > /config/usb_gadget/g1/strings/0x409/product
echo adb > /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration
echo "0x80" > /config/usb_gadget/g1/configs/b.1/bmAttributes
echo musb-hdrc > /config/usb_gadget/g1/UDC
echo "0x00" > /config/usb_gadget/g1/bDeviceClass
echo "0x00" > /config/usb_gadget/g1/bDeviceProtocol
echo "0x00" > /config/usb_gadget/g1/bDeviceSubClasss
echo "0x0404" > /config/usb_gadget/g1/bcdDevice
echo "0x0200" > /config/usb_gadget/g1/bcdUSB
echo "0x40" > /config/usb_gadget/g1/bMaxPacketSize0

장치가 제대로 부팅되지만 ADB USB 가젯을 시작할 수 없습니다. 초기화 로그입니다.

[1.550749] (7) [1:init] gadgets_make name=g1
[1.552088] (7) [1:init] function_make name=ffs.adb
[1.552104] (7) [1:init] file system registered
[1.558890] (1) [1:init] function_make name=configs
[1.558911] (1) [1:init] Unable to locate . in FUNC.INSTANCE
[1.562824] (2) [1:init] gadget_dev_desc_UDC_store write musb-hdrc
[1.562839] (2) [1:init] configfs_composite_bind
[1.562852] (2) [1:init] composite_dev_prepare 0000000037341456
[1.562870] (2) [1:init] Need at least one configuration in g1.
[1.562878] (2) [1:init] composite_dev_cleanup os_desc_req[0]=(null)cdev>req[0]=0000000037341456
[1.562892] (2) [1:init] configfs-gadget musb-hdrc: failed to start g1: -22

아마도 configs 폴더를 올바르게 연결하지 않은 것 같지만 다음 결과는 동일합니다.

ln -s /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/ffs.adb

Need at least one configuration in g1.실행할 때 find /config/usb_gadget/g1파일을 찾을 수 없다고 계속해서 말하지만 가능한 경로 /config/usb_gadget/g1/configs는 나열되어 있습니다 . /config/usb_gadget/g1/configs즉, 구성에 쓰려고 하는 모든 파일은 /config/usb_gadget/g1/configs/b.1내가 찾으려고 할 때 존재하지 않기 때문에 기록되지 않습니다. 파일에 어떻게 쓸 수 있나요 /config/usb_gadget/g1/configs?

답변1

이 디렉토리를 별도로 만들어야 한다는 것이 밝혀졌습니다

    GADGET=/sys/kernel/config/usb_gadget/g1
    mkdir -p "$GADGET"
    mkdir -p "$GADGET"/strings/0x409
    mkdir -p "$GADGET"/configs/b.1
    mkdir -p "$GADGET"/configs/b.1/strings/0x409
    mkdir -p "$GADGET"/functions/ffs.adb

configfs가 템플릿 파일을 자동으로 채워야 하기 때문일 수 있습니다.

관련 정보