读书笔记《Linux那些事儿之我是USB》

第一篇:Linux那些事儿之我是USB Core

  • USB诞生于inel
  • 产生是为了解决前期计算机并口串口的问题,实现一种解决速度,扩展性,易用性的通信方式。
  • 速度:usb2.0高速模式,480MB/s,USB3.0 480GB/s。
  • 支持热拔插
  • USB树形结构包括:USB控制器,USB设备,USB连接线(4根)
  • root hub:和控制器绑定在一起的hub
  • USB总线是一种轮询总线,数据传输必须主机发起,控制器初始化所有数据传输
  • 通信最基本的形式是通过Endpoint端点进行
  • 端点是通信的发起点或者接收点
  • 端点有方向,且仅能为in或者out,不存在双向。
  • 所有USB设备都具有端点0,有两个端点0,一个in 一个out
  • 高速设备最多15个in端点,15个out端点
  • USB端点有四种类型,对应四种传输方式:控制,中断,批量,等时。
  • 控制传输:配置设备,获取设备信息,USB插入时通过“控制端点0”进行设备的配置
  • 中断传输:固定速率传输小量数据,USB键盘鼠标。
  • 批量传输:传输大量数据,确保数据没丢失。U盘、
  • 等时传输:固定速率传输,稳定的视频语语音流发送等。
  • 主机和端点之间的数据传输通过pipe管道完成
  • 管道的一端是主机缓冲区,一端是设备上的端点。
  • 多个USB端点被捆绑为一个接口,一个接口对应一个驱动程序,实现一个功能,USB设备可以有多个接口。
  • 主机—》主机缓冲区-》管道—》设备端点—》设备接口
  • USB对外的窗口:sysfs可以认识每一个USB设备,包含设备描述符和接口描述符。
  • USB Root Hub:/sys/bus/usb/devices/usb1 
  • Linux内核USB驱动目录

(1)先关注Kconfig、Makefile、readme

(2)drivers/usb/core:是内核实现的一些核心功能及设备驱动会用到的公共函数。

(3)drivers/usb/host:主机控制器

(4)drivers/usb/gadget:配件,USB从设备驱动,做从。

(5)drivers/usb/gadget/udc:针对具体CPU平台的

(6)drivers/usb/storage:U盘存储设备的驱动

  • usbcore负责实现一些核心,为别的驱动程序提供服务,提供用户访问和控制硬件的接口,不考虑当前存在那种控制器。
  • 协议中规定,主机控制器驱动为USB软件最下层,HCD提供主机控制器的硬件抽象
  • usbcore负责将用户的请求映射到下层控制器中,用户不能直接访问主机控制器HCD。

你可能感兴趣的:(读书笔记《Linux那些事儿之我是USB》)