USB协议详解第1讲(核心概念通俗理解)
0.概括
USB协议学习中最重要几个概念如下,没有提及的就是对USB协议学习中不重要的或者编程不需要用到的。大家也不用着急,概念必须要学会,否则都不知道下面这些东西是什么还学什么通用串行总线协议,大家也不用怕,其实也没有那么高深莫测。
1.USB传输(Transfer)
2.USB传输中事务(Transaction)
3.USB事务中的包、包、包(Pack,重要的事情说3遍)
4.USB 主机
5.设备(Device)
6.配置(Configuration)
7.接口(Interface)
8.端点(Endpoint)
9.管道(Pipe)
10.USB各种各样非常重要的描述符(Descriptor)
1.USB传输(Transfer)
2.事务(Transaction)
3.包(Pack)的概念
USB传输、事务、包是从不同层次上去说明一次数据交互的三个概念。
举个例子可能更好些,"某领导和一个早起的程序员进行了一次交流,说了5件事"。
OK,其实这里的"这次交流"就相当于USB的一次传输,"说了5件事"就相当于这次传输过程中的5个事务,当然每件事肯定有若干句对话,就相当于每个事务里面的各种包。
其实通讯协议就是如此,都是从现实生活中抽象出来的,任何通讯协议都可以类比现实生活中人与人之间的交流方式。
4.USB 主机(Host)
形象比作公司领导。领导完完全全控制小弟,任何事情必须领导先发话了小弟才能说话,领导不发话,小弟憋死也不能说出来。任何事物都是USB主机发起的。
5.设备(Device)
形象比作小弟本人。设备里面存储有设备描述符表来描述设备的样子,每一个设备只能有一个设备描述符表。后期我会给大家看代码让大家看下是不是如此(STM32 USB和ZYNQ 7000 USB)
6.配置(Configuration)
对设备的配置,这种配置作为数据结构可以存在多个,主机可以控制设备选择哪个具体的配置,但是设备当前只能选择一个配置。我们来想想,一个领导招聘了一个小弟,可以让这个小弟去写代码(配置1),或者让这个小弟去画电路图(配置2)等等,我们就举两个例子说明问题。由上面我们可以知道,USB设备可能有一个或者多个配置,我们常见到的USB设备一般都只有一个配置。
7.接口(Interface)
好了,领导让这个小弟去写代码,可以只写C++软件,当然为了提高效率,有时候既要写C++软件,也要写C#软件,还得写Python软件。其实每个配置信息里面包含了接口的数量,一个接口就是一个功能,一个配置可以有多个接口(一个小弟可以会多种语言),也就是一个USB设备通过接口可以扩展多个功能。
8.端点(Endpoint)
一个接口完成一种功能,每种接口(功能)配有1个或者多个端点。 端点是主机与设备之间通讯数据的接收或来源,要实现通讯功能,接口必须有端点的配备才可以,主机要给设备发送数据,端点就是数据的接收器,主机要给设备要数据,端点就是数据的发送器,然后通过多个端点配合接收和发送各种数据实现某个接口的某种功能。所以大家注意了,端点的依附于接口上的。其实一个端点就是一段存放接收和发送数据的缓冲区。这段缓冲区有一定的属性,在USB设备中,我们用端点描述符来描述这段缓冲区的属性。后期看代码。
9.管道(Pipe)
主机和端点之间的数据传输就是通过管道,看不见摸不着,也没代码,给大家附个逻辑图看看。

10.USB各种各样非常重要的描述符
USB描述符可以说是很多学生头疼和理解不全面的问题,没关系,逐一攻破,别怕。USB描述符主要是对USB设备、USB配置、USB接口、USB端点、USB字符串(就是字符串而已)用数据结构的描述,主机会在枚举此设备的时候根据设备实现的描述符去确定设备到底是一个什么样的设备、设备需要的总线资源、和设备的通讯方式等等。在这里强调一点,因为设备类型不同还会有不同的其他描述符,如下图,HID类型的设备还会有HID描述符、报告描述符、物理描述符,这三个描述符后面在讲解HID设备的时候详细讲解,可谓HID核心的核心。

注:以上讲的前3个概念是与USB数据传输相关的,后面的7个概念是和USB通用总线设计理念有关(也就是这7个概念让USB成为世界上最成功、最通用的串行总线)。
USB协议详解第1讲(核心概念通俗理解)的更多相关文章
- 【转载】TCP /IP协议详解
首先,TCP/IP不是一个协议,而是一个协议族的统称. 里面包括了IP协议,IMCP协议,TCP协议,以及http.ftp.pop3协议等等. TCP/IP协议分层 提到协议分层,我们很容易联想到IS ...
- DNS协议详解
DNS协议详解 简介 DNS(Domain Name System)域名系统,主要实现的功能是将域名转换成ip地址的一个服务.它是由一个分层的DNS服务器实现的分布式数据库,同时.他也是一个使得主机能 ...
- 高效开发之SASS篇 灵异留白事件——图片下方无故留白 你会用::before、::after吗 link 与 @import之对比 学习前端前必知的——HTTP协议详解 深入了解——CSS3新增属性 菜鸟进阶——grunt $(#form :input)与$(#form input)的区别
高效开发之SASS篇 作为通往前端大神之路的普通的一只学鸟,最近接触了一样稍微高逼格一点的神器,特与大家分享~ 他是谁? 作为前端开发人员,你肯定对css很熟悉,但是你知道css可以自定义吗?大家 ...
- TCP /IP协议详解【转】
转自:https://www.jianshu.com/p/0cf648510bce?utm_campaign=maleskine&utm_content=note&utm_medium ...
- RocketMQ详解(四)核心设计原理
专题目录 RocketMQ详解(一)原理概览 RocketMQ详解(二)安装使用详解 RocketMQ详解(三)启动运行原理 RocketMQ详解(四)核心设计原理 RocketMQ详解(五)总结提高 ...
- OSPF协议详解
CCNP OSPF协议详解 2010-02-24 20:30:22 标签:CCNP 职场 OSPF 休闲 OSPF(Open Shortest Path Fitst,ospf)开放最短路径优先协议,是 ...
- bt协议详解 DHT篇(上)
bt协议详解 DHT篇(上) 最近开发了一个免费教程的网站,突然产生了仔细了解bt协议的想法,这篇文章是bt协议详解系列的第三篇,后续还会写一些关于搜索和索引的东西,都是在开发这个网站的过程中学习到的 ...
- linux usb 驱动详解
linux usb 驱动详解 USB 设备驱动代码通过urb和所有的 USB 设备通讯.urb用 struct urb 结构描述(include/linux/usb.h ). urb 以一种异步的方式 ...
- HTTP协议详解以及URL具体访问过程
1.简介 1.1.HTTP协议是什么? 即超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准.从 ...
- (转)HTTP 协议详解(基础)
HTTP 协议详解 作者: 小坦克 来源: 博客园 发布时间: 2012-02-14 13:32 阅读: 95523 次 推荐: 99 原文链接 [收藏] 相关文章:HTTP 协议 ...
随机推荐
- 【云服务器】记录使用腾讯云服务器搭建个人blog网站-【1】服务器配置
服务器购买 第一次写博客,写的不好请见谅 腾讯云教育活动 配置还行,能搭建个网站了果断下单 选择系统 缺点(对我来说):参考于:人生不开窍:Windows Server各版本差异 不能安装window ...
- springboot3整合高版本spring data neo4j
本博客适用于springboo data neo4j 7.2.6版本,详情阅读官网https://docs.spring.io/spring-data/neo4j/reference/7.2/intr ...
- 浅谈Git架构和如何避免代码覆盖的事故
浅谈Git架构和如何避免代码覆盖的事故 Git 不同于 SVN 的地方在于, Git 是分布式的版本管理系统, 所有的客户端和服务器都保存了一份代码, 涉及到仓库仓之间的同步, 所以处理不当极易造成冲 ...
- docker centos8 java8 mysql8 部署springboot项目
docker centos8 java8 mysql8 部署springboot项目 一,用idea将springboot项目打成jar包 二,将打的jar包用xshell的rz上传到docker的c ...
- NVIDIA公司在实体机器人上的第一步尝试 —— Nova Cater AMR —— 九号机器人与英伟达联合开发的自动驾驶研发平台“Nova Cater AMR(简称:NC)”
相关: https://www.leiphone.com/category/robot/Hgy9i8azqGncESIB.html Nova Cater AMR是一款仓储运货机器人,可以应用在仓储物流 ...
- Redis源码安装(Linux环境)
下载源码: wget https://download.redis.io/redis-stable.tar.gz 解压: tar -xzvf redis-stable.tar.gz 编译&安装 ...
- 实验室服务彻底死机记录——硬件故障——主板pcie槽坏掉或显卡坏掉
2022年11月8日 后记(最新更新) 服务器送售后,售后给厂家技术打电话,厂家技术说可能是显卡的电源线松了,于是我们打开机箱把显卡的电源线紧了紧,然后神奇的事情发生了,故障解除了...... 一 ...
- Spring Boot 基于 SCRAM 认证集成 Kafka 的详解
一.说明 在现代微服务架构中,Kafka 作为消息中间件被广泛使用,而安全性则是其中的一个关键因素.在本篇文章中,我们将探讨如何在 Spring Boot 应用中集成 Kafka 并使用 SCRAM ...
- .NET静态代码编织——肉夹馍(Rougamo)4.0
肉夹馍(https://github.com/inversionhourglass/Rougamo),一款编译时AOP组件.相比动态代理AOP需要在应用启动时进行初始化,编译时完成代码编织的肉夹馍减少 ...
- .NET周刊【8月第1期 2024-08-04】
国内文章 EF Core性能优化技巧 https://www.cnblogs.com/baibaomen-org/p/18338447 这篇文章介绍了在代码层面上优化EF Core实例池和拆分查询的方 ...