Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么是USB堆栈?_Usb - Fatal编程技术网

什么是USB堆栈?

什么是USB堆栈?,usb,Usb,我想知道USB堆栈的含义和一个例子。我学习了很多关于USB的知识,我读了一些书,比如简单地说USB,但是没有提到“USB堆栈”。术语“堆栈”指的是抽象数据结构(与此无关),或者是执行特定功能的软件集合。在“USB堆栈”的情况下,它是允许通过USB链路进行通信的硬件、固件、内核模块、驱动程序和用户程序的集合 之所以使用术语“堆栈”,是因为软件组件通常层叠在一起,每个组件都使用其下一层的服务 您还可能会听到“网络堆栈”或“灯堆栈”或其他类似短语。Wikipedia有一篇关于的文章,这也是同样的想法。

我想知道USB堆栈的含义和一个例子。我学习了很多关于USB的知识,我读了一些书,比如简单地说USB,但是没有提到“USB堆栈”。

术语“堆栈”指的是抽象数据结构(与此无关),或者是执行特定功能的软件集合。在“USB堆栈”的情况下,它是允许通过USB链路进行通信的硬件、固件、内核模块、驱动程序和用户程序的集合

之所以使用术语“堆栈”,是因为软件组件通常层叠在一起,每个组件都使用其下一层的服务


您还可能会听到“网络堆栈”或“灯堆栈”或其他类似短语。Wikipedia有一篇关于的文章,这也是同样的想法。

USB堆栈只是一个基于“软件堆栈”的一般概念的短语,如TCP/IP堆栈、GSM堆栈等

正是这个框架,通常由USB设备制造商或操作系统开发人员提供,使其他开发人员能够专注于其实现的具体内容,而不是担心正确实现较低级别的USB

对于USB,基本上有通信层(每个人对它们的称呼略有不同):

  • 链路层(串行IO)-处理差分线路转换和信令,并将流解码为二进制数据,通常在硬件中
  • USB数据包层-处理USB数据包的结构
  • USB必需功能-枚举、缓冲区、端点
  • USB高级API-音频、HID等,它们有自己的限制和需求
它类似于现代操作系统的TCP/IP堆栈:

  • 物理层(通常在以太网卡上的硬件中完成)
  • 链路层(MAC地址层,通常在以太网卡上的硬件中完成)
  • 网络层(IP、路由)
  • 传输层(TCP)
  • 应用程序特定的层(HTTP堆栈等)
所以它不仅仅指软件?正确,“堆栈”跨越不同的实现层,包括许多不同类型的组件,包括USB情况下的硬件。堆栈依赖于硬件吗?每个芯片都有不同的堆栈?不。堆栈的全部要点是硬件驱动程序(软件组件)是特定于硬件芯片的。不同的硬件芯片可能需要不同的硬件驱动程序,但重要的是堆栈的其余部分可以保持不变。