全志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。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值