1. 程式人生 > >android USB OTG功能實現

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