gadget驱动框架(一)

news/2024/9/22 22:36:47/文章来源:https://www.cnblogs.com/linhaostudy/p/18397499

之前在linux移植udc驱动的时候,没有深入的理解整个gadget驱动框架,现在重新再屡屡gadget驱动,以便后期再次学习。本系列的文章以虚拟串口进行分析,相关源码均是基于linux4.19.123。

gadget驱动框架

gadget源码主要在:drivers/usb/gadget,以虚拟串口为例,对源文件做简单说明:
drivers/usb/gadget/function/*.c:实现具体的usb功能,有serial、video、audio等
drivers/usb/gadget/legacy/*.c:注册usb class驱动,往上与function衔接,往下与composite
drivers/usb/gadget/udc/*.c:usb device conctrl,与各IC相关,需各自实现;
drivers/usb/gadget/composite.c:复合设备,与硬件无关,往下与udc驱动衔接

Linux USB Gadget分三层架构,层次关系从上到下:
一层:USB Gadget功能层。BSP/Driver开发者通常是要实现这一层,从而实现一个具体的设备驱动,如Linux在此层实现了serial,mtp,mass_storage等。浏览参考关注此层代码时,会发现“composite”是此层的关键字,此层中关键的数据结构是:struct usb_composite_driver。这一层的驱动文件一般为:drivers/usb/gadget/function/*.c或drivers/usb/gadget/f_serial.c(传统Linux实现的USB转串口)。

二层:USB设备层。这一层是Linux内核开发维护者实现的,与我们没太大关系,不用我们操心,我们只关心其的一些接口就行。浏览参考关注此层时,会发现“gadget”是此层的关键字,此层的关键数据结构是:usb_gadget_driver,usb_composite_dev。这层主要的一个驱动文件为:driver/usb/gadget/composite.c

三层:USB设备控制器驱动层。这一层主要是与CPU、CPU USB控制器有关,与硬件紧密相关,这一层也比较头痛,主要它和USB控制器牵扯在一起,涉及有寄存器、时钟、DMA等等。但是这一层往往是由芯片厂商去实现。我们一般仅需在板级文件中处理好所需要的USB接口即可。这层的关键字就是“UDC”,主要驱动文件命名含“udc”关键字,一般与CPU或芯片厂商有关,如driver/usb/gadget/xxx_udc.c。

gadget驱动架构图

gadget驱动架构

gadget相关数据结构体关系

image

gadget驱动框架文章系列

主要结构体介绍相关文章:
1)gadget之composite
2)gadget之udc
3)gadget之usb_gadget
4)gadget之usb_function

驱动架构分析文章:
1)gadget驱动框架(一):本文章,主要介绍gadget基本框架、配置、系列文章的划分;
2)gadget驱动框架(二):主要介绍usb_gadget_driver、usb_composite_driver、usb_gadget、usb_udc等几个核心结构体的创建及注册。
3)gadget驱动框架(三):主要介绍usb_udc、usb_gadget_driver的绑定过程,及usb_function的匹配过程。
4)gadget驱动框架(四):主要介绍usb_function的注册、创建的过程。
5)gadget驱动框架(五):主要介绍虚拟串口的tty设备的注册、创建/dev/ttyGSx设备节点、tty相关接口的实现。
6)gadget驱动框架(六):主要介绍udc驱动枚举过程。

gadget驱动之serial内核配置

image

image

image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/792338.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Transfusion: Predict the Next Token and Diffuse Images with One Multi-Modal Model(2024,8)

Transfusion: Predict the Next Token and Diffuse Images with One Multi-Modal Model(2024,8) Paper TODO: 目前没有开源代码,实时关注一下official code,Meta的工作基本开源的.本文给出了一种新的T2I的方法. lucidrains的代码本质是将LLM的transformer和图像中的diffusion结…

代码整洁之道--读书笔记(1)

代码整洁之道简介: 本书是编程大师“Bob 大叔”40余年编程生涯的心得体会的总结,讲解要成为真正专业的程序员需要具备什么样的态度,需要遵循什么样的原则,需要采取什么样的行动。作者以自己以及身边的同事走过的弯路、犯过的错误为例,意在为后来者引路,助其职业生涯迈上更…

Towards Robust Blind Face Restoration with Codebook Lookup Transformer(NeurIPS 2022) | Codeformer

Towards Robust Blind Face Restoration with Codebook Lookup Transformer(NeurIPS 2022) 这篇论文试图解决的是盲目面部恢复(blind face restoration)问题,这是一个高度不确定的任务,通常需要辅助指导来改善从低质量(LQ)输入到高质量(HQ)输出的映射,或者补充输入中丢…

[MySQL]B+树能存储多少数据

MySQL中一个B+树能存储多少数据MySQL中InnoDB页的大小默认是16k。也可以自己进行设置。(计算机在存储数据的时候,最小存储单元是扇区,一个扇区的大小是 512 字节,而文件系统(例如 XFS/EXT4)最小单元是块,一个块的大小是 4KB。 InnoDB 引擎存储数据的时候,是以页为单位的…

基于 GoFrame 框架的 Go 项目打包成镜像,并上传至 Harbor 镜像库

本文通过将一个简单的 gf 项目推送到 harbor,简单介绍了整个流程和过程中用到的命令。〇、前言 在云服务时代最流行的部署方式就是容器部署,这也是最推荐的部署方式。 对于 GoFrame 框架就不多介绍了,直接来初始化一个 demo,备用。 // 初始化一个项目:gf-demo gf init gf-…

ChatOn安卓版(智能AI聊天机器人) v1.48.435-476 高级版

概述 ChatOn 构建于ChatGPT和GPT-4o之上,为用户提供市场上最优秀的中文AI聊天机器人。AI聊天机器人能够达到一个全新水平的仿人类互动:当你为某一场正式会议准备演讲,苦思动人的措辞,或寻求写作方面的帮助时,这款智能机器人和AI助手都会统统帮你搞定。 软件功能 1、AI 写…

JPEG格式研究——(2)JPEG文件格式

JPEG文件除了图像数据之外,还保存了与图片相关的各种信息,这些信息通过不同类型的TAG存储在文件中。 TAG JPEG通过TAG标记压缩书记之外的信息。所有的TAG都包含一个TAG类型,TAG类型大小为两个字节,位于一个TAG的最前面。TAG类型的第一个字节一定为0xFF 以下是部分常见的TAG…

【python】一篇搞懂多解释器与虚拟环境

一.同一PC上,python同时支持多个版本的解释器共存1.1:安装不同版本python解释器(参考百度资料)# python安装后,解释器目录介绍 C:\python39- python.exe [解释器]-Scripts- pip.exe- pip3.exe- pip3.9.exe- Lib- re.py- random.py 内置模块- site-packages- requests …

LeeCode-104. 二叉树的最大深度

要求给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 如下图所示的二叉树最大深度为5.解题思路与94题类似,采用递归调用遍历子节点。在基本结构中,节点的最大深度等于根深度(1)加上左右较大深度,左右较大的深…

# LeeCode-104. 二叉树的最大深度

要求给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 如下图所示的二叉树最大深度为5.解题思路与94题类似,采用递归调用遍历子节点。在基本结构中,节点的最大深度等于根深度(1)加上左右较大深度,左右较大的深…

遥感技术在环境监测中的应用:揭秘地球变化的天眼

当我们仰望星空,探索宇宙的奥秘时,别忘了脚下的这片土地同样蕴藏着无数未解之谜。遥感技术,这个听起来似乎遥不可及的名字,其实正是我们透视地球环境变化的“天眼”。今天将带大家一探遥感技术如何在环境监测中大显身手,帮助我们更精准地监测和评估这个星球的每一次呼吸与…

c#程序反编译

工具ilspy https://nchc.dl.sourceforge.net/project/ilspy.mirror/v9.0-preview2/ILSpy_binaries_9.0.0.7660-preview2-arm64.zip?viasf=1 visualstudio反编译方法将需要反编译的程序拖入ilspy 选择vs版本导出项目 右键项目→保存代码vs打开项目文件即可添加库方法反编译库,…