1、常用到的名词:

  USB控制器:

  USB总线结构:根集线器、集线器、USB设备;

  USB主控制器驱动是不需要我们去写的,也不需要我们去移植。嵌入 式的USB主控制器都是集成到SOC内部,所以厂商会提供驱动

     USB的主控制器,分为UHCI、OHCI、EHCI和XHCI等

      

Android USB xHCI控制器 usb控制器是什么_Android USB xHCI控制器

    根集线器、集线器、控制器之间连接关系:设备经过集线器汇聚,根集线器可以连接设备,也可以连接集线器;控制器连接主机与根集线器;

    

Android USB xHCI控制器 usb控制器是什么_串口_02

 

     需要注意:我们需要做的是外围设备的驱动;但是外围设备基本会有相关的驱动,需要将外围设备与主机配合使用起来;

2、 基本硬件和基本概念(上和下两期)--掌握   

  1、USB设备支持热插拔;

  2、接口分为公口和母口:有A型的、B型的;

  3、USB接口定义:四根线电源正极(红)、电源地(黑)、数据D+(绿色)、数据D-(白色);传输差分信号;

3、USB协议:

  1、USB是英特尔、康柏、IBM、Microsoft等多家公司联合提出的。 USB协议中规定了USB的软件结构、硬件结构、数据传输等等

  2、 USB传输速率如下所示,不同版本的速度不一样:

    1、 USB1.0:1.5Mbps(192KB/s)低速(Low-Speed)500mA;

    2、 USB1.1:12Mbps(1.5MB/s)全速(Full-Speed)500mA

    3、USB2.0:480Mbps(60MB/s)高速(High-Speed)500mA

    4、 USB3.0:5Gbps(640MB/s)超速(Super-Speed)900mA

4、 USB常见驱动移植方式--先介绍实际驱动的移植,再介绍理论知识 •

  1 内核自带已经配置对应驱动--USB-HUB--熟练掌握 •

  2 内核自带但是没有配置--pl2303--熟练掌握 •

  3 内核没有驱动--ch34x(找驱动)--熟练掌握 •

  4 内核没有驱动+应用层需要移植对应软件--3G/4G和USB-WIFI--熟练掌握

5、USB转串口

  1、嵌入式的外围通常需要很多设备,但是串口数量有限,因此可以通过扩展USB接口,来连接设备;因此解决了,串口不够用的情况;

  2、USB转串口常使用的芯片:PL2303、CP210X和CH34X 

    PL2303和CP210X几乎所有内核都自带驱动 ,那么将驱动编辑进去就可以正常使用;

     CH34X的驱动部分内核自带,内核没有带,就需要寻找驱动,然后再做编译;

  3、在make menuconfig中配置驱动:

    -> Device Drivers – -> USB support (USB_SUPPORT [=y])  – -> USB Serial Converter support (USB_SERIAL [=y]) 

     USB接口插入模块,观察打印信息

    重新编译内核,烧写镜像,USB接口插入设备就会打印信息,查看 会生成新的设备节点/dev/ttyUSB*

    

Android USB xHCI控制器 usb控制器是什么_外围设备_03

6、内核中不带有驱动的设备:CH34x

 

  1、准备工作: 找到CH34X的Linux内核驱动源码 、 编译器(和内核编译器一致)、源码(通用) 、Makefile(指向编译过的内核目录)

   2、加载驱动:动态加载、测试

  3、USB设备没有驱动的时候,连接上设备会打印信息:idVentor厂商id、idProduct产品id;

  4、编译驱动可能出现的问题:

    1、驱动直接支持设备;

    2、 驱动需要添加idVendor和idProduct;

    3、驱动需要添加idVendor和idProduct,还要打补丁或者驱动中增加额外代码