USB
概念
通用串行总线, 可以扩展为多种的方式
USB1.0速度为1.5M, 之后提出USB1.1
USB2.0, 分为两个版本, 全速(FS)12M, 高速(HS)480M, STM32要使用PHY新品, FS有内部的PHY, HS只有部分有
USB3.0, 最高的速度5G
接口
- 最常见的就是A口, 就是较大的方形口
- 有四个触点, 两边长中间短, 当插入USB的时候会先供电,然后再接通数据线。拔出的时候先断开数据线,然后再断开电源线
第1根线为VBUS,电压为5V,第2根线为D-,第3根线为D+,第4根线为GND
使用的是差分信号
-
之后就是B口, 没用过方形
-
Mini USB接口, 较小的厚口
有5个触点,也就是5根线,线序从左往右依次是1~5。第1根线为VCC(5V),第2根线为D-,第3根线为D+,第4根线为ID,第5根线为GND
ID线存在使得可以实现OTG功能, 也就是既可以做主机, 也可以做从机, 最大的供电电流是500mA, 作为主机供电的时候一般需要专门的电源
-
Micro接口, 较小的扁口
-
Typec接口
拓扑结构
usb使用的是主从结构, 主机(HOST), 下面接多个设备, 键盘等叫做从机( device, slave)
可以使用USB HUB进行扩展USB接口, 6U只有两个控制器, 只能扩展数量, 不能扩展带宽, 最多支持128个地址, 0是默认的, 最多7层
USB OTG
同一个接口只能作为主机或只能作为从机
如果某一个接口, 可以在需要的时候进行转换, 就叫做OTG
ID线的高低电平表示USB口工作在HOST还是DEVICE模式:
ID=1:OTG设备工作在从机模式。
ID=0:OTG设备工作在主机模式。
支持OTG模式的USB接口一般都是MiniUSB或MicroUSB等这些带有ID线的接口
规格
OHCI、UHCI、EHCI和xHCI
- OHCI:全称为Open Host Controller Interface,这是一种USB控制器标准,厂商在设计USB控制器的时候需要遵循此标准,用于USB1.1标准。OHCI不仅仅用于USB,也支持一些其他的接口,比如苹果的Firewire等,OHCI由于硬件比较难,所以软件要求就降低了,软件相对来说比较简单。OHCI主要用于非X86的USB,比如扩展卡、嵌入式USB控制器
- UHCI:全称是Universal Host Controller Interface,UHCI是Inter主导的一个用于USB1.0/1.1的标准,与OHCI不兼容。与OHCI相比UHCI硬件要求低,但是软件要求相应就高了,因此硬件成本上就比较低
- EHCI:全称是Enhanced Host Controller Interface,是Inter主导的一个用于USB2.0的USB控制器标准。I.MX6ULL的两个USB控制器都是2.0的,因此兼容EHCI标准。EHCI仅提供USB2.0的高速功能,至于全速和低速功能就由OHCI或UHCI来提供
- xHCI:全称是eXtensible Host Controller Interface,是目前最流行的USB3.0控制器标准,在速度、能效和虚拟化等方面比前三个都有较大的提高。xHCI支持所有速度种类的USB设备,xHCI出现的目的就是为了替换前面三个
IMX6U
有两个USB接口, 都支持OTG, 一般都是使用一个作为OTG但是大部分情况使用作为从机, 烧写代码, 另一个连接HUB进行扩展, 集成了两个PHY芯片, 最高支持到480MHz
支持EHCI
驱动
HUB的驱动不需要自己编写, NXP默认使能了键盘鼠标
使能
键盘鼠标属于HID设备, 内核集成相关的驱动
Device driver –> HID support —> <*> Generic HID driver
U盘:
Device driver –> SCSI device support –><*> SCSI disk support
大容量设备
Device driver –> [*] USB support —> <*> EHCI HCD (USB 2.0) support
<*> USB Mass Storage support
使用
U盘, 挂载使用
mount /dev/sda1 /mnt/usb_disk/ -t vfat -o iocharset=utf8//挂载
sync //同步
cd/ //如果处于/mnt/usb_disk目录的话先退出来,否则卸载的时候提设
//备忙,导致卸载失败,切记!
umount /mnt/usb_disk //卸载
使用usb转串口模块, 直接插进去没有什么反应
在使用otg作为主机前需要修改设备树, 加入ID电气属性设置
模拟优盘
Linux下的SD卡, emmc的文件系统一般是ext4格式, 会提示格式化
Device driver –>[*] USB support —><*> USB Gadget Support —>
cd drivers/usb/gadget///进入gadget目录下
sudo cp libcomposite.ko /home/zuozhongkai/linux/nfs/rootfs/lib/modules/4.1.15/
sudo cp function/usb_f_mass_storage.ko /home/zuozhongkai/linux/nfs/rootfs/lib/modules/4.1.15/
sudo cp legacy/g_mass_storage.ko /home/zuozhongkai/linux/nfs/rootfs/lib/modules/4.1.15/
depmod
modprobe libcomposite.ko
modprobe usb_f_mass_storage.ko
modprobe g_mass_storage.ko file=/dev/sda1 removable=1
rmmod g_mass_storage.ko