主机控制器驱动负责控制插入其中的usb设备,usb设备驱动主要负责usb设备和主机的通信。 usb核心向上为设备驱动提供编程接口,向下为usb控制器驱动提供编程口,维护整个usb设备信息,完成设备热插拔控制,总线数据传输控制。 可以看到这种设备驱动、核心层、主机控制器驱动这种三层结构的驱动框架,与之前分析过linux系统下i2c子系统...
就我现在的理解来说,USB的驱动分为两块,一块是USB的bus驱动,这个东西,Linux内核已经做好了,我们可以不管,但我们至少要了解他的功能。形象得说,USB的bus驱动相当于铺出一条路来,让所有的信息都可以通过这条USB通道到达该到的地方,这部分工作由usb_core来完成。当USB设备接到USB控制器接口时,usb_core就检测该设...
本节只分析USB控制器作为Device时的驱动框架。 USB控制器作为Device时,驱动框架可分为5层。最上层的是Gadget Function驱动,代表了具体设备的驱动,如大容量存储设备驱动(U盘、移动硬盘等)、通讯类设备驱动(USB串口、USB虚拟网卡等)、UAC驱动(USB麦克风、USB声卡等USB音频类设备)。接下来是Gadget Funcation API层,该...
当USB总线驱动程序识别出设备后,会为其找到该USB设备驱动程序,如键盘,鼠标,U盘。 USB通信过程均为主从结构,USB主机发起通信请求,设备进行数据回复,USB设备不具备主动向主机通信的能力。 2、USB总线驱动框架 如上,我们大致了解了USB的简单通信过程,那么什么是USB总线驱动程序?什么是USB设备驱动呢? 2.1 USB的总线驱动...
USB控制器作为Device时,驱动框架可分为5层。最上层的是Gadget Function驱动,代表了具体设备的驱动,如大容量存储设备驱动(U盘、移动硬盘等)、通讯类设备驱动(USB串口、USB虚拟网卡等)、UAC驱动(USB麦克风、USB声卡等USB音频类设备)。接下来是Gadget FuncationAPI层,该层是一个抽象层,向上和向下提供统一的API,屏蔽了...
第一部分 USB驱动程序框架 app: --- USB设备驱动程序 // 知道数据含义 内核 --- USB总线驱动程序 // 1. 识别, 2. 找到匹配的设备驱…
Linux USB驱动框架分析(二) 好,了解过USB一些规范细节之后,我们现在来看看Linux的驱动框架。事实上,Linux的设备驱动,特别是这种hotplug的USB设备驱动,会被编译成模块,然后在需要时挂在到内核。要写一个Linux的模块并不复杂,以一个helloworld为例: #include ...
1、USB驱动引入 USB(全称 Universal Serial Bus,通用串行总线),已经成为PC及嵌入式设备中最常用、最便捷的通信接口。Linux USB子系统较为庞大,本文主要对Linux系统下的USB总线驱动框架进行概述,重点的细节待后续文章展开。 首先来看一个现象,插入USB设备后linux系统打印如下日志: ...
而这次我们来分析一下 Linux 内核源码中的一个 usb-skeleton(就是 usb 驱动的骨架 咯),自然,他定义的设备结构体就叫做 usb-skel: struct usb_skel { struct usb_device * udev; /* the usb device for this device */ struct usb_interface * interface; /* the interface for this device */ struct ...