目錄
1. Ubuntu中編譯
2. AOSP編譯
3. 去掉原來的配置
3. 打包
4. 驗證lsusb
在Ubuntu中,lsusb的源代碼源自usbutils。而OrangePi Zero 3中lsusb的位置可以看文件H618-Android12-Src/external/toybox/Android.bp,
"toys/other/lsusb.c",
1. Ubuntu中編譯
- 安裝libudev
sudo apt install libudev-dev
- 執行autogen
./autogen.sh
- 執行configure
./configure
- 執行make和make clean
make
make clean
2. AOSP編譯
將usbutils整個文件夾拷貝到H618-Android12-Src/external/內,新建一個android.bp
cc_binary {name: "lsusb",//proprietary: true,//product_specific: true,srcs: ["lsusb.c","lsusb-t.c","desc-defs.c","desc-dump.c","names.c","sysfs.c","usbmisc.c",],include_dirs: [ "external/libusb/include/libusb",],local_include_dirs: ["usbhid-dump",],shared_libs: ["libudev","libusb",],
}
拷貝eudev里面的libudev.h和udev.h到當前文件夾,然后再這個文件夾內新建一個lib文件夾,把上一步生成的libudev.so拷貝到這個文件夾內。
編譯這個模塊
mmm external/usbutils-017/
錯誤信息:
- error: unused parameter 'indent' [-Werror,-Wunused-parameter]
這是因為這些函數的參數沒有使用到,分別找到這幾個函數,把這個參數利用起來,例如:
static void desc_snowflake_dump_uac2_clk_src_bmattr(unsigned long long value,unsigned int indent)
{printf(" %s clock %s, indent %d\n",uac2_clk_src_bmattr[value & 0x3],(value & 0x4) ? uac3_clk_src_bmattr[3] : "", indent);
}
- external/usbutils-017/usb-spec.h:91:9: error: missing field 'termt' initializer[-Werror,-Wmissing-field-initializers]
找到對應位置,將{ NULL },改為{ NULL, 0, "" },
這個文件里面其他位置也是這樣改。
3. 去掉原來的配置
把external/toybox/Android.bp里面的文件關于lsusb部分去掉,以“lsusb”為關鍵字搜一下
"toys/other/lsusb.c",//"lsusb",
注意,這里lsusb.c還是要編譯,不然會提示錯誤,找不到lsusb_main
3. 打包
在device/softwinner/apollo/apollo_p2.mk文件中添加
PRODUCT_PACKAGES += lsusb
4. 驗證lsusb
console:/ $ lsusb
unable to initialize usb specBus 001 Device 001: ID 1d6b:0002 Linux 5.4.125 ehci_hcd EHCI Host Controller
Bus 002 Device 001: ID 1d6b:0002 Linux 5.4.125 ehci_hcd EHCI Host Controller
Bus 003 Device 001: ID 1d6b:0002 Linux 5.4.125 ehci_hcd EHCI Host Controller
Bus 003 Device 002: ID 0403:6011 FTDI FT4232H MiniModule
Bus 004 Device 001: ID 1d6b:0001 Linux 5.4.125 ohci_hcd OHCI Host Controller
Bus 005 Device 001: ID 1d6b:0001 Linux 5.4.125 ohci_hcd OHCI Host Controller
Bus 006 Device 001: ID 1d6b:0001 Linux 5.4.125 ohci_hcd OHCI Host Controller