首先在linux内核配置 USB support --->
USB Gadget Support --->
USB Gadget Drivers (Android Composite Gadget) --->
这些配置选项小白菜,就不多解释后,大佬们在网上都见过很多,当然还是Android Composite Gadget这个也是内层全志家做好的,在安卓层就有丰富的mtp,我在这里也是默认用的这个,编译烧录,接下来就是在根文件系统里也就是抛掉安卓层,在linux用户层操作mass_storage和acm功能了
enter acm mode
echo 0 > /sys/class/android_usb/android0/enable
echo 1D6b > /sys/class/android_usb/android0/idVendor
echo 0106 > /sys/class/android_usb/android0/idProduct
echo 1 > /sys/class/android_usb/android0/f_acm/instances(听大佬解释这个参数是实例化一个acm设备,最初没加这项时,上位机识别设备,但是显示是未知设备)
echo acm > /sys/class/android_usb/android0/functions
echo 1 > /sys/class/android_usb/android0/enable
enter mass_storage mode
echo 0 > /sys/class/android_usb/android0/enable
echo 1f3a > /sys/class/android_usb/android0/idVendor
echo 1000 > /sys/class/android_usb/android0/idProduct
echo /dev/mmcblk0p9 > /sys/class/android_usb/android0/f_mass_storage/lun/file(将想要作为mass_storage的功能的分区写入文件)
echo mass_storage > /sys/class/android_usb/android0/functions
echo 1 > /sys/class/android_usb/android0/enable
此外mass_storage功能使用的时候,我的上位机会识别出来三个盘符,这个是因为在下位机的/sys/class/android_usb/android0/f_mass_storage/lun lun1 lun2三个有些想只在上位机识别出一个盘符的小伙伴可以更改驱动文件
/drivers/usb/gadget/android.c文件里的mass_storage_function_init函数里的for(i=0;i<config->fsg.nluns;i++),具体的更爱有很多种,小白菜想的很简单就是自己的枚举出来的盘符是三个,只想用一个就让循环少执行两次就好了,嘿嘿
当然还有想使用其他功能的小伙伴,这个可以去看安卓层的init.usb.rc文件里的内容,我就是在哪里找的
离线
你的A33可以用摄像头和编解码库了吗?
没有,可以搞搞试试
离线