当前位置:   article > 正文

体验Linux USB 驱动_linux usb hub

linux usb hub

目录

一、USB OTG

二、I.MX6ULL USB 接口简介

硬件原理图

1、USB HUB 原理图

2 、USB OTG 原理图

三、使能驱动

1、打开 HID 驱动

2、 使能 USB 键盘和鼠标驱动

3 、使能 Linux 内核中的 SCSI 协议

 4、使能 U 盘驱动

四、测试u盘

五、 Linux 内核自带 USB OTG


        USB 是很常用的接口,目前大多数的设备都是 USB 接口的,比如鼠标、键盘、 USB 摄像
头等,我们在实际开发中也常常遇到 USB 接口的设备,来学习一下如何使能 Linux内核自带的 USB 驱动

一、USB OTG

        USB 分为 HOST(主机)和从机(或 DEVICE),有些设备可能有时候需要做HOST,有时候又需要做 DEVICE,配两个 USB 口当然可以实现,但是太浪费资源了。如果一个 USB 接口既可以做 HOST 又可以做 DEVICE 那就太好了,使用起来就方便很多。为此, USBOTG 应运而生, OTG 是 On-The-Go 的缩写,支持 USB OTG 功能的 USB 接口既可以做 HOST,也可以做 DEVICE。Mini USB 插头有 5 根线,其中一条就是 ID 线。 ID 线的高低电平表示 USB 口工作在 HOST 还是 DEVICE 模式:
ID=1: OTG 设备工作在从机模式。
ID=0: OTG 设备工作在主机模式。

二、I.MX6ULL USB 接口简介

        I.MX6ULL 内部集成了两个独立的 USB 控制器,这两个 USB 控制器都支持 OTG 功能。
I.MX6ULL 内部 USB 控制器特性如下:
①、有两个 USB2.0 控制器内核分别为 Core0 和 Core1,这两个 Core 分别连接到 OTG1 和OTG2。
②、两个 USB2.0 控制器都支持 HS、 FS 和 LS 模式,不管是主机还是从机模式都支持HS/FS/LS,硬件支持 OTG 信号、会话请求协议和主机协商协议,支持 8 个双向端点。
③、支持低功耗模式,本地或远端可以唤醒。
④、每个控制器都有一个 DMA

        每个 USB 控制器都有两个模式:正常模式(normal mode)和低功耗模式(low power mode)。
每个 USB OTG 控制器都可以运行在高速模式(HS 480Mbps)、全速模式(LS 12Mbps)和低速模式
(1.5Mbps)。正常模式下每个 OTG 控制器都可以工作在主机(HOST)或从机(DEVICE)模式下,每
个 USB 控制器都有其对应的接口。低功耗模式顾名思义就是为了节省功耗, USB2.0 协议中要
求,设备在上行端口检测到空闲状态以后就可以进入挂起状态。在从机(DEVICE)模式下,端口
停止活动 3ms 以后 OTG 控制器内核进入挂起状态。

硬件原理图

1、USB HUB 原理图

 I.MX6ULL 的 USB OTG2 扩展成了 4 路 HOST 接口,其中一路供 4G 模块使用,因此就剩下了三个通用的 USB A 插座,U10 就是 USB HUB 芯片 GL850G, GL850G 是一款符合 USB2.0 标准的 USB HUB 芯片,支持一拖四扩展,可以将一路 USB 扩展为 4 路 USB HOST 接口

2 、USB OTG 原理图

         开发板上还有一路 USB OTG 接口,使用 I.MX6ULL 的 USB OTG1 接口。此路 USB OTG 既可以作为主机(HOST),也可以作为从机(DEVICE),从而实现完整的 OTG 功能,左侧的为 Mini USB 插座,当 OTG 作为从机(DEVICE)的时候 USB 线接入此接口。右侧为 USB A 插座,当 OTG 作为主机的时候将 USB 设备插入到此接口中,另外开发板上集成了一个 USB HOST 接口

        主机(HOST)模式: 主机模式下必须将 Mini USB 线拔出来,将 USB 设备连接到对应的USB HOST 接口上。 Mini USB 线拔出来以后 USB_OTG_VBUS 就没有电压了,此时 USB_OTG1_ID线就被 R31 这个 100K 电阻下拉到地,因此 USB_OTG1_ID 线的电压就为 0,当 ID 线为 0 的时候就表示 OTG 工作在主机模式。

         从机(DEVICE)模式: USB_OTG_VBUS 是 Mini USB 的电源线,只有插入Mini USB 线以后 USB_OTG_VBUS 才有效(5V)。插入 Mini USB 线就表示开发板此时要做从机(此时不考虑接 OTG 线的情况), USB_OTG_VBUS 就是电脑供的 5V 电压,由于分压电阻 R111和 R31 的作用,此时 USB_OTG1_ID 的电压就是 4.5V 左右,很明显这一个高电平。当 ID 线为高的时候就表示 OTG 工作在从机模式

三、使能驱动

NXP 官方的 Linux 内核默认已经使能了 USB 键盘鼠标和  U 盘驱动

1、打开 HID 驱动

-> Device Drivers
      -> HID support

                -> HID bus support (HID [=y])
                        -> <*> Generic HID driver

2、 使能 USB 键盘和鼠标驱动

-> Device Drivers
        -> HID support
                -> USB HID support
                        -> <*> USB HID transport layer

3 、使能 Linux 内核中的 SCSI 协议

-> Device Drivers
        -> SCSI device support
                -> <*> SCSI disk support

 4、使能 U 盘驱动

-> Device Drivers
        -> USB support (USB_SUPPORT [=y])
                -> Support for Host-side USB (USB [=y])
                        -> <*> USB Mass Storage support

 注意 U 盘要为 FAT32 格式的!NTFS 和 exFAT 由于版权问题所以在 Linux下支持的不完善,操作的话可能会有问题,比如只能读,不能写或者无法识别等

编译内核用新的zImage和设备树启动开发板

四、测试u盘

插上u盘在开发版就会打印下面信息

进入dev目录就能看到这个目录

 

 /dev/sda 是整个 U盘, /dev/sda1 是 U 盘的第一个分区,我们一般使用 U 盘的时候都是只有一个分区。要想访问 U盘我们需要先对 U 盘进行挂载,理论上挂载到任意一个目录下都可以,这里我创建一个/mnt/usb_disk 目录,然后将 U 盘挂载到/mnt/usb_disk 目录下,命令如下

mkdir /mnt/usb_disk -p //创建目录
mount /dev/sda1 /mnt/usb_disk/ -t vfat -o iocharset=utf8 //挂载

-t 指定挂载所使用的文件系统类型,这里设置为 vfat,也就是 FAT 文件系统,“-o iocharset”设置硬盘编码格式为 utf8,否则的话 U 盘里面的中文会显示乱码 

 上图可以看到,挂载成功以后进入到/mnt/usb_disk 目录下能读能写

至此 U 盘就能正常读写操作了,直接对/mnt/usb_disk 目录进行操作就行了。如果要拔出 U盘要执行一个 sync 命令进行同步,然后在使用 unmount 进行 U 盘卸载,命令如下所示:

sync //同步
cd / //如果处于/mnt/usb_disk 目录先退出来,否则卸载的提示设备忙,导致卸载失败
umount /mnt/usb_disk //卸载

五、 Linux 内核自带 USB OTG

        这里因为开发板为了在板子上集成 OTG 的主机和从机接口对 ID 线做了修改,需要修改 ID 引脚的电气属性

        查阅原理图可以知道, USB OTG1 的 ID 引脚连接到了 I.MX6ULL 的 GPIO1_IO00 这个引
脚上, USB OTG 默认工作在主机(HOST)模式下,因此 ID 线应该是低电平。这里需要修改设备树中 GPIO1_IO00 这个引脚的电气属性,将其设置为默认下拉


 MX6UL_PAD_GPIO1_IO00__ANATOP_OTG1_ID 0x13058

就是将 GPIO1_IO00 复用为 OTG1 ID,并且设置电气属性为 0X13058,默认下拉,设备树修改好以后重新编译并用新的设备树启动系统,系统重启成功以后就可以正常使用 USB OTG1 接口, OTG 既可以做主机,也可以做从机,做主机的话测试,直接在开发板的 OTG HOST 接口上插入 USB 鼠标键盘、 U 盘等设备。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/263531
推荐阅读
相关标签
  

闽ICP备14008679号