USB驱动开发基础

USB标准

  • USB1.0, 1996,低速1.5Mbps和高速12Mbps,USB1.1 iMac G3,Type A和Type B接口
  • USB 2.0 2000, 480Mpbs,Type A/B/C接口、Micro A/B
  • USB 3.0 5Gbps, 随着USB 3.2命名规定,现在也叫USB 3.2 Gen1
  • USB 3.1 10Gpbs,现在称为USB 3.2 Gen2
  • USB 3.2 USB 3.2 Gen2*2 10Gpbs
  • USB 4,基于雷电3协定,功率提升到240W, 40Gbps

USB接口类型TypeA/B/C

https://zhuanlan.zhihu.com/p/447595295

USB端点

端点可以看作是一个单向的管道,USB通讯的基本方式是通过端点完成的,端点有四种类型:

  • CONTROL控制:允许对USB设备的不同部分存取,常用来配置设备、获取关于设备的信息、发送命令到设备、获取设备的状态报告
  • INTERRUPT中断:创送少量的数据,固定传输速率,比如USB键盘和鼠标
  • BULK块:传送大量的数据,不能有数据丢失,比如打印机、存储器和网络设备上
  • ISOCHRONOUS同步:传送大量数据、但是数据不保证完成,比如实时数据采集设备,如音频或者视频

USB接口

USB端点被绑在接口中,USB接口只处理一类USB逻辑连接,每个USB驱动控制一个接口

USB配置

USB接口被捆绑到配置上,一个USB设备可能有多个配置并在它们之间转换

USB设备、端点、接口、配置关系

  • 设备通常有一个或者多个配置
  • 配置常常有一个或者多个接口
  • 接口常常有一个活动多个设置
  • 接口有零或者多个端点
    在这里插入图片描述

URB

USB Request Block,一个URB用来发送或者接受数据

URB声明周期

  • 被一个USB设备驱动创建
  • 安排一个特定的USB设备的特定端点
  • 被USB设备驱动提交给USB核心
  • 提交给被USB核心指定的USB主机控制器驱动
  • 被USB主机控制器处理,进行一次USB设备的传送
  • URB完成时,USB主机控制器驱动通知USB设备驱动

USB驱动总统框架在这里插入图片描述

从主机侧看:
USB主机控制器:负责协调主机和设备的通信
USB主机控制器驱动:控制插入的USB设备
USB核心:USB驱动管理和协议处理的主要工作,定义一些数据结构、宏和功能函数,向上为设备驱动提供编程接口、向下为USB主机控制器驱动提供编程接口,维护整个系统USB设备信息,完成设备热插拔控制,总线数据传输
USB设备驱动:控制USB设备如何与主机通信
从设备侧看:

  • UDC驱动程序直接访问硬件、控制USB设备和主机间的底层通信,向上提供与硬件相关操作的回调函数
  • Gadget Function API是UDC驱动程序回调函数的简单包装
  • Gadget Function驱动程序具体控制USB设备功能的实现,使设备表现出网络连接、打印机或者USB Mass Storage等特性

USB主机控制器驱动

OHCI:非PC系统上以及带有SiS和ALi芯片组的PC主板
UHCI:大多数其他主板上的USB芯片
EHCI:兼容OHCI和UHCI
xHCI:面向USB 3.0

USB的探测和断开函数

探测函数:设备插入时初始化硬件资源
断开函数:设备拔出时释放硬件资源
在这里插入图片描述

Gadget Function驱动

  • Ethernet over USB:驱动模拟以太网网口,例如CDC Ethernet、CDC Subset以及RNDIS
  • File-Backed Storage Gadget: 最常见的U盘功能实现
  • Serial Gadget: 串口,例如Generic Serial和CDC ACM规范实现
  • Gadget MIDI:暴露ALSA MIDI接口
  • USB Video Class Gadget驱动:让Linux系统成为另外一个系统的USB视频采集源
  • GadgetFS:Gadget文件系统

DMA

工作原理: DMA是一种数据传输方式,允许外部设备(如硬盘控制器、网络接口等)直接访问系统内存,而不需要CPU的直接干预。DMA控制器获得系统总线的控制权,通过将数据直接从外部设备传输到内存或从内存传输到外部设备,从而避免了CPU的中断和参与,提高了数据传输效率。
应用场景: 适用于需要大量数据传输或实时数据传输的场景,比如高速网络数据包处理、高性能存储设备等。DMA通常用于设备之间的数据传输,而不涉及CPU直接处理数据。

mmap

工作原理: mmap是一种内存映射技术,允许将文件或其他对象映射到进程的地址空间中。这样,进程可以直接通过访问内存来读写文件内容,而不需要通过传统的文件I/O调用。mmap允许文件数据在内存中进行缓存和访问,提高了文件访问速度。
应用场景: 主要用于文件I/O,可以加速对文件的访问。在许多情况下,将文件映射到内存中可以提高读写文件的效率,并允许以更直接的方式处理文件数据。

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

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

相关文章

CUDA学习笔记9——CUDA 共享内存 / Shared Memory

由于共享内存拥有仅次于寄存器的读写速度,比全局内存快得多。因此,能够用共享内存访问替换全局内存访问的场景都可以考虑做对应的优化。 不利用共享内存的矩阵乘法 不利用共享内存的矩阵乘法的直接实现。每个线程读取A的一行和B的一列,并计…

mac电脑系统活动监控:iStat Menus 中文 for Mac

iStat Menus是一款Mac操作系统上的系统监控工具,它提供了实时的系统状态和性能数据,让用户可以方便地监控和管理自己的电脑。iStat Menus以菜单栏图标的形式显示各种系统指标,用户可以轻松访问和查看这些信息。 以下是iStat Menus软件的一些…

SpringBoot:异步任务基础与源码剖析

官网文档:How To Do Async in Spring | Baeldung。 Async注解 Spring框架基于Async注解提供了对异步执行流程的支持。 最简单的例子是:使用Async注解修饰一个方法,那么这个方法将在一个单独的线程中被执行,即:从同步执…

windows11上enable WSL

Windows电脑上要配置linux(这里指ubuntu)开发环境,主要有三种方式: 1)在windows上装个虚拟机(比如vmware)。缺点是vmware加载ubuntu后系统会变慢很多,而且需要通过samba来实现window…

百望云杨正道:数电时代 CFO如何带领企业完成财税数字化转型

百望云杨正道:数电时代 CFO如何带领企业完成财税数字化转型 谁是企业数字化转型的操盘手?数字时代如何通过数智变革帮助企业降本增效,做厚企业价值? 近日,由财能科技主办的“2023财能书院CFO年度论坛”在北京隆重举行…

绝地求生:PGC 2023 赛事直播期间最高可获:2000万G-Coins,你还不来吗?

今年PGC直播期间将有最高2000万G-Coin掉落,究竟花落谁家咱们拭目以待 公告原文:Watch PGC 2023 Live And Earn G-Coins! 如何赚取高额G-Coin? Throughout the PGC 2023, an astounding 20,000,000 G-Coins will be up for grabs as part of …

Navicat 技术指引 | 适用于 GaussDB 的用户权限设置

Navicat Premium(16.2.8 Windows版或以上) 已支持对 GaussDB 主备版的管理和开发功能。它不仅具备轻松、便捷的可视化数据查看和编辑功能,还提供强大的高阶功能(如模型、结构同步、协同合作、数据迁移等),这…

【Skynet 入门实战练习】游戏模块划分 | 基础功能模块 | timer 定时器模块 | logger 日志服务模块

文章目录 游戏模块基础功能模块定时器模块日志模块通用模块 游戏模块 游戏从逻辑方面可以分为下面几个模块: 注册和登录网络协议数据库玩法逻辑其他通用模块 除了逻辑划分,还有几个重要的工具类模块: Excel 配置导表工具GM 指令测试机器人…

微服务学习(十二):安装Minio

微服务学习(十二):安装Minio 一、简介 MinIO 是一款基于Go语言发开的高性能、分布式的对象存储系统。客户端支持Java,Net,Python,Javacript, Golang语言。MinIO系统,非常适合于存储大容量非结构化的数据,例如图片、视…

VR直播如何打破视角壁垒,提升观看体验?

随着数字技术的不断发展,直播行业也发生了新的变革,VR直播也成为了直播行业中新的趋势,那么VR直播是如何打破视角壁垒,提升观看体验的呢? 杭州亚运会那几天,多项比赛热火朝天,无论你是参赛队伍的…

第十五届蓝桥杯(Web 应用开发)模拟赛 1 期-大学组(详细分析解答)

目录 1.动态的Tab栏 1.1 题目要求 1.2 题目分析 1.3 源代码 2.地球环游 2.1 题目要求 2.2 题目分析 2.3 源代码 3.迷惑的this 3.1 题目要求 3.2 题目分析 3.3 源代码 4.魔法失灵了 4.1 题目要求 4.2 题目分析 4.3 源代码 5.燃烧你的卡路里 5.1 题目要求 5.2…

读像火箭科学家一样思考笔记07_探月思维

1. 挑战“不可能”的科学与企业 1.1. 互联网 1.1.1. 和电网一样具有革命性,一旦你插上电源,就能让自己的生活充满活力 1.1.2. 互联网的接入可以帮助人们摆脱贫困,拯救生命 1.1.3. 互联网还可以提供与天气相关的信息 1.2. 用廉价、可靠的…