随笔分类 -  Linux USB子系统

摘要:一.URT介绍前面介绍了Linux USB Gadget的软件结构与各软件层的整合过程。经过各种注册函数,Gadget功能驱动层,USB设备层与UDC底层结合在了一起形成了一个完整的USB设备。而这个设备已经准备好了接受主机的枚举。在介绍USB设备枚举之前。先熟悉一下各层通信所用的数据结构,在USB 阅读全文
posted @ 2021-02-04 17:02 luoyuna 阅读(3802) 评论(1) 推荐(0) 编辑
摘要:function目录汇集了很多功能层的功能接口(interface)的具体实现,我们这里分析UAC2.一.UAC2 function驱动分析代码位置 drivers\usb\gadget\function\f_uac2.c里面实现usb设置中的接口和端点相关功能。这里的DECLARE_USB_FUN 阅读全文
posted @ 2021-02-04 17:01 luoyuna 阅读(4587) 评论(0) 推荐(0) 编辑
摘要:本文分析的是linux-5.4.3 一.Gadget Audio设备驱动分析 drivers/usb/gadget/legacy/audio.c 因为项目的问题, 了解usb音频设备的工作原理,为啥它能让PC识别成“speak”或者“mic”,以及你能够播放录音。 主要涉及下面两个层次: Gadge 阅读全文
posted @ 2021-02-04 17:00 luoyuna 阅读(3223) 评论(0) 推荐(0) 编辑
摘要:一.概述Gadget USB设备控制器(UDC)驱动指的是作为其他USB主机控制器外设的USB硬件设备上底层硬件控制器的驱动,该硬件和驱动负责将一个USB设备依附于一个USB主机控制器上。例如,当某运行Linux系统的手机作为PC的U盘时,手机中的底层USB控制器行使USB设备控制器的功能,这时运行 阅读全文
posted @ 2021-02-04 16:59 luoyuna 阅读(7846) 评论(0) 推荐(0) 编辑
摘要:因为项目里面有USB音频外设,所以需要分析一下UAC驱动。USB Audio Class,USB音频类,一个像USB这样的通用数据接口,可以有很多种实现数字音频数据传输的方式。不同的开发者可以根据自己的喜好和需求,定义任意的控制方式,传输模式,音频格式等等参数。一.UAC驱动初始化分析 代码路径:s 阅读全文
posted @ 2021-01-15 14:34 luoyuna 阅读(6479) 评论(0) 推荐(0) 编辑
摘要:一.USB主机控制器HCD(Host Controller Device)简介USB的主机控制器(HCD),出现了多种不同的类型,即OHCI和UHCI,EHCI,和xHCI,不同USB控制器类型OHCI,UHCI,EHCI,xHCI的区别和联系USB采用树形拓扑结构,主机侧和设备侧的USB控制器分别 阅读全文
posted @ 2021-01-15 14:33 luoyuna 阅读(17364) 评论(0) 推荐(1) 编辑
摘要:本文分析的是linux-5.4.3一、Linux 下USB Hub热插拔处理1、 Linux下USB HUB的驱动的实现和分析: 在系统初始化的时候在usb_init函数中调用usb_hub_init函数,就进入了hub的初始化。 代码路径:drivers\usb\core\hub.c 在usb_h 阅读全文
posted @ 2021-01-15 14:32 luoyuna 阅读(11812) 评论(0) 推荐(1) 编辑
摘要:一.拓扑结构·之所以要规定这个树形拓扑结构是为了避免环形连接。·一条USB总线有且只有一个USBHost,对应一个RootHub·USB设备分为两类,Hub和Functions,Hub通过端口Port连接更多USB设备,Functions即USB外接从设备。·层次最多7层,且第7层不能有Hub,只能 阅读全文
posted @ 2021-01-15 14:30 luoyuna 阅读(5848) 评论(0) 推荐(0) 编辑
摘要:前面学习了USB驱动的一些基础概念与重要的数据结构,那么究竟如何编写一个USB 驱动程序呢?编写与一个USB设备驱动程序的方法和其他总线驱动方式类似,驱动程序把驱动程序对象注册到USB子系统中,稍后再使用制造商和设备标识来判断是否安装了硬件。当然,这些制造商和设备标识需要我们编写进USB 驱动程序中 阅读全文
posted @ 2020-12-30 17:42 luoyuna 阅读(4246) 评论(0) 推荐(0) 编辑
摘要:前面我们学习了USB 驱动的一个描述符,下面来学习 USB 驱动的几个重要数据结构 位于include\linux\usb.h一、struct usb_device 设备函数struct usb_device { int devnum; //devnum只是usb设备在一条usb总线上的编号.一条u 阅读全文
posted @ 2020-12-30 17:41 luoyuna 阅读(3403) 评论(0) 推荐(1) 编辑
摘要:一.基础概念在终端用户看来,USB设备为主机提供了多种多样的附加功能,如文件传输,声音播放等,但对USB主机来说,它与所有USB设备的接口都是一致的。一个USB设备由3个功能模块组成:USB总线接口、USB逻辑设备和功能单元:a -- 这里的USB总线接口指的是USB设备中的串行接口引擎(SIE); 阅读全文
posted @ 2020-12-30 17:39 luoyuna 阅读(4513) 评论(0) 推荐(0) 编辑