android USB OTG功能实现

一个、检查HW概要,确认是否支持OTG特征(vbus无论是动力,IDDIG pin连接是否正确)
两、如果HW确认支持OTG特征,然后根据以下方法被打开USB OTG功能及实现山:
如何打开USB OTG特征:
1).于alps/mediatek/config/[project]/autoconfig/kconfig/project中打开CONFIG_USB_MTK_OTG和CONFIG_USB_MTK_HDRC_HCD
CONFIG_USB_MTK_OTG =y
CONFIG_USB_MTK_HDRC_HCD = y
2).在dws中设定OTG VBUS相应的输出控制pin配置为GPIO模式。var name为GPIO_OTG_DRVVBUS_PIN。再设定IDDIG pin默认模式为IDDIG,var name为GPIO_OTG_IDDIG_EINT_PIN
怎样实现挂载:
1).alps/mediatek/config/[project]/init.project.rc起始位置处加入例如以下内容
对于KK曾经的版本号:
on early-init
    mkdir /mnt/usbotg 0000 system system
对于KK(包括)以后的版本号:
#须要特别注意的是,这里是要另外加入on init,不是加在on early-init:
on init
    mkdir /mnt/media_rw/usbotg 0700 media_rw media_rw
    mkdir /storage/usbotg 0700 root root
...
#service加在on boot:
on boot
service fuse_usbotg /system/bin/sdcard -u 1023 -g 1023 -w 1023 -d /mnt/media_rw/usbotg /storage/usbotg
    class late_start
    disabled
#
# Connectivity related services (Begin)
#
2).fstab文件末尾加入例如以下一行
对于KK曾经的版本号:
改动alps/mediatek/config/[project]/vold.fstab
dev_mount usbotg /mnt/usbotg auto /devices/platform/mt_usb
对于KK(包括)以后的版本号:
改动alps/mediatek/config/[project]/fstab
/devices/platform/mt_usb auto vfat  defaults voldmanaged=usbotg:auto
3).storage_list.xml加入例如以下一个xml节点
对于KK曾经的版本号:
<storage android:mountPoint="/mnt/usbotg"
       android:storageDescription="@string/storage_external_usb"
       android:removable="true"
       android:primary="false" />
对于KK(包括)以后的版本号:
<storage android:mountPoint="/storage/usbotg"
       android:storageDescription="@string/storage_external_usb"
       android:removable="true"
       android:primary="false" />
备注:详细改动哪个路径下的storage_list.xml文件,须要依据ProjectConfig.mk中的resource_overlay_support的值来定
对于JB3下面版本号,
假设RESOURCE_OVERLAY_SUPPORT的值为generic  ==>>  则改动alps/mediatek/custom/[project]/resource_overlay/generic/frameworks/base/core/res/res/xml/storage_list.xml
假设RESOURCE_OVERLAY_SUPPORT的值为空  ==>> 则改动alps/framework/base/core/res/res/xml/storage_list.xml
对于JB3(包括)以上版本号,RESOURCE_OVERLAY_SUPPORT的值可依据须要配置为sd_in_ex_otg或sd_ex_otg。则无需再改动该文件
sd_in_ex_otg或sd_ex_otg分别表示内卡+外卡+otg或外卡+otg
相应文件分别在alps/mediatek/custom/common/sd_in_ex_otg/resource_overlay/generic/frameworks/base/core/res/res/xml/storage_list.xml或alps/mediatek/custom/common/sd_ex_otg/resource_overlay/generic/frameworks/base/core/res/res/xml/storage_list.xml


眼下USB OTG功能仅仅支持U盘(FAT格公式+分区)、Keyboard、Mouse、PTP device

版权声明:本文博客原创文章,博客,未经同意,不得转载。

原文地址:https://www.cnblogs.com/zfyouxi/p/4712799.html