XuSenfeng

个人站

复读了,更新随缘,有的文件不全或者图片缺失具体看我的笔记库(https://github.com/XuSenfeng/note)


USB

目录

USB

概念

通用串行总线, 可以扩展为多种的方式

USB1.0速度为1.5M, 之后提出USB1.1

USB2.0, 分为两个版本, 全速(FS)12M, 高速(HS)480M, STM32要使用PHY新品, FS有内部的PHY, HS只有部分有

USB3.0, 最高的速度5G

接口

  • 最常见的就是A口, 就是较大的方形口
  • 有四个触点, 两边长中间短, 当插入USB的时候会先供电,然后再接通数据线。拔出的时候先断开数据线,然后再断开电源线

QQ图片20220907105017

第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 —> USB Gadget Drivers (Mass Storage Gadget) --->(X) Mass Storage Gadget

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