全志A20平臺增加USB掛載點

1) 查看硬件是否識別到設備
若插上有如下打印,表示識別到設備,sdb是爲識別到的設備分配的掛載文件
這裏寫圖片描述

2) 查看設備是否掛載到了不同的地方,本項目中,3個USB設備口是掛載在同一個文件目錄下,表示都是一個hub接出來的USB口,所以對應的GPIO口應該是一致的。
root@android:/sys/devices/platform # ls sw-ehci.1/usb2/2-1/
查看該文件,若USB口有設備則會分配一個設備文件如下圖這裏寫圖片描述

表示掛載了 2 3 4三個設備,如果去除一個則會刪除該設備文件
需要將查看到的設備掛載點寫到相應的文件中,mount上去。
若識別,不到查看,sysconfig.fex文件USBC的設置是否正確。GPIO口設置正確
a.修改android/device/softwinner/<方案>/vold.fstab 文件.
該文件定義了每個存儲設備的掛載點,其中每一行代表一個存儲設備,它的格式爲:
dev_mount <設備標籤> <掛載點> <分區個數(一般設爲auto)> <存儲設備在文件系統上
的路徑>, 中間用tab 制符號隔開那就添加這麼一句
dev_mount sata /mnt/sata auto /devices/platform/sw_ahci.0
假設我現在要在vold.fstab 中添加一個USB1 的設備的定義,就先打開板子的打印,輸入
logcat,然後在該USB1 的插口插入一個U 盤,這時會看到一個類似於如下的打印:
I/USB3G ( 90): event { ‘add’, ‘/devices/platform/sw-ehci.1/usb1/1-1/1-1.3’, ‘usb’, ”, 189, 3 }
I/USB3G ( 90): path : ‘/sys/devices/platform/sw-ehci.1/usb1/1-1/1-1.3’
I/USB3G ( 90): VID :size 5,vid_path ‘/sys/devices/platform/sw-ehci.1/usb1/1-1/1-1.3/idVendor’,VID
‘17ef
其中第一行的”/devices/platform/sw-ehci.1/usb1/1-1/1-1.3”就是該接口設備在文件系統上
的路徑,這樣就可以在vold.fstab 裏添加該設備的定義,如下:
dev_mount usbhost1 /mnt/usbhost1 auto /devices/platform/sw-ehci.1/usb1/1-1/1-1.3
這樣在USB1 設備插入時,會把它掛載到/mnt/usbhost1 路徑下。
如果上述步驟成功,插上U盤後,可以通過串口找到u盤的掛載目錄,進去掛載目錄,可以看到u盤的文件信息。
cd /mnt
進去usbhost0 1 2 3等目錄查看看(插上U盤),看看是否可以看得到文件,若看得到文件表示linux系統是可以mount上u盤,掛載點也正確。剩下的就是修改android上層的應用使其支持查看U盤。
注:全志有的平臺修改掛載點的文件是fstab.sun7i
PWD: \android\device\softwinner\xxxxxx (工程名)\fstab.sun7i
Board:\root\fstab.sun7i 需要切換到root用戶
樣例:

# Android fstab file.
#<src>                                         <mnt_point>  <type>  <mnt_flags and options>  <fs_mgr_flags>
# The filesystem that contains the filesystem checker binary (typically /system) cannot
# specify MF_CHECK, and must come before any filesystems that do specify MF_CHECK

/dev/block/by-name/system               /system             ext4    ro                                                                      wait
/dev/block/by-name/cache                /cache              ext4    noatime,nosuid,nodev,nomblk_io_submit,barrier=1                         wait,check
/dev/block/by-name/UDISK                /data               ext4    noatime,nosuid,nodev,nomblk_io_submit,barrier=1,noauto_da_alloc         wait,check,encryptable=/dev/block/by-name/databk
/devices/platform/sunxi-mmc.0/mmc_host  auto                vfat    defaults                                                                wait,check,voldmanaged=extsd:auto
/devices/platform/sunxi-mmc.3/mmc_host  auto                vfat    defaults                                                                wait,check,voldmanaged=sdcard:auto
/devices/platform/sw-ehci.1             auto                vfat    defaults                                                                wait,check,voldmanaged=usbhost:auto
/devices/platform/sw_hcd_host0          auto                vfat    defaults                                                                wait,check,voldmanaged=usbhost:auto
/devices/platform/sw-ohci.1             auto                vfat    defaults                                                                wait,check,voldmanaged=usbhost:auto
/dev/block/zram0 none swap defaults zramsize=134217728

b.修改android4.2\device\softwinner\<方案>\overlay\frameworks\base\core\res\res\xml 中的
storage_list.xml 文件,在這裏添加自己的在vold.fstab 中定義的USB 設備,可以仿照其他的來
寫,其中每個參數的含義在該文件頭有說明.該文件定義了上層應用讀取的設備列表.
c.修改android4.2\device\softwinner\<方案>\目錄下的init.sun7i.rc 文件,在
“on early-init”的地方添加創建這些掛載目錄的文件,如:
mkdir /mnt/usbhost0 0000 system system
mkdir /mnt/usbhost1 0000 system system
擴展:
USB Host和USB Device的區別
USB Host是指驅動過後,板子就可以連接USB接口連接的器件,讀取和裝載數據了。
USB Device是指驅動過後,板子可以當做一個USB移動設備,通過USB連接到電腦上,類似U盤
usb device controller是與usb host controller相對應的usb控制器,它主要實現usb client端的協議。
而usb device有兩種含義:從硬件角度看就是一個帶有usb client控制器的設備 ;從linux角度看,就是一個掛在usb總線上的一個普通意義上的設備,只不過它們的驅動是基於host驅動之上的。而host驅動主要實現usb host端的協議,usb device的驅動通過host驅動提供的API訪問遠端設備的“I/O”,從而實現對設備的控制。

後來linux又實現了usb client協議的驅動,這樣就可以在該協議驅動之上實現各種各樣的usb設備,這種設備的驅動通過usb client協議的驅動提供的API,將設備自身的“I/O”開放出來,給遠端的host訪問。由於內核已經使用了usb device這個名詞,所以爲了區別,稱這種設備爲gadget,其驅動爲gadget驅動。

對於一個帶有usb client controller的板子,如果基於該控制器實現了某種設備(如mass storage),那麼從這塊板子的角度看,這是一個usb gadget;如果用usb cable將這個板子與pc機連接起來,那麼在pc上就可以看到一個usb device。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章