The term "stack" refers to either the abstract data structure (not relevant for this), or to a collection of software that performs a specific function. In the case of a "USB stack", it's the collection of hardware, firmware, kernel modules, drivers, and user programs that allow communication over USB links.
The term "stack" is used because the software components are often layered on top of one another, each using the services of the layer(s) below it.
You may also hear about the "networking stack", or the "LAMP stack", or other similar phrases. Wikipedia has an article on Solution stack, which is the same idea.
它是通常由 USB 设备制造商或操作系统开发人员提供的框架,使其他开发人员能够集中精力重点关注其实现的核心,而不是担心正确实现较低级别的 USB。
对于 USB,本质上存在通信层(每个人对它们的称呼略有不同):
链路层(串行 IO) - 处理差分线路转换和信号发送,并将流解码为二进制数据,通常在硬件中
USB 数据包层 -处理 USB 数据包的结构
USB 所需功能 - 枚举、缓冲区、端点
USB 高级 API - 音频、HID 等,它们有自己的限制和需求。
它类似于现代操作系统的 TCP/IP 堆栈:
物理层(通常在以太网卡上的硬件中完成)
链路层(MAC 地址层,通常在以太网卡上的硬件中完成)
网络层(IP、路由)
传输层(TCP)
您的应用程序特定层(HTTP 堆栈等)。
USB stack, is just a phrase based on generic concept of 'software stack', such as TCP/IP stack, GSM stack, etc.
It's the framework, often provided by USB device manufacturers, or OS developers, that enables other developers to focus on the meat of their implementation, rather than worrying about implementing lower levels of USB correctly.
In case of USB, there are essentially layers of communication (everyone calls them slightly differently):
Link Layer (Serial IO) - deals with differential line transitions and signaling, and decode the stream to binary data, very often in hardware
USB Packet Layer - deals with structure of USB data packets
USB Required Functionality - enumeration, buffers, endpoints
USB higher level APIs - Audio, HID, etc, that have their own restrictions and needs.
It's similar to TCP/IP stack of a modern operating system:
Physical Layer (usually done in hardware on the ethernet card)
Link Layer (MAC address layer, often done in hardware on the ethernet card)
Network Layer (IP, routing)
Transport Layer (TCP)
Your application specific layers (HTTP stack, etc).
发布评论
评论(2)
术语“堆栈”指的是抽象数据结构(与此无关),或者是指执行特定功能的软件集合。就“USB 堆栈”而言,它是允许通过 USB 链路进行通信的硬件、固件、内核模块、驱动程序和用户程序的集合。
使用术语“堆栈”是因为软件组件通常彼此分层,每个组件都使用其下方层的服务。
您可能还会听说过“网络堆栈”、“LAMP 堆栈”或其他类似的短语。维基百科有一篇关于解决方案堆栈的文章,也是同样的想法。
The term "stack" refers to either the abstract data structure (not relevant for this), or to a collection of software that performs a specific function. In the case of a "USB stack", it's the collection of hardware, firmware, kernel modules, drivers, and user programs that allow communication over USB links.
The term "stack" is used because the software components are often layered on top of one another, each using the services of the layer(s) below it.
You may also hear about the "networking stack", or the "LAMP stack", or other similar phrases. Wikipedia has an article on Solution stack, which is the same idea.
USB 堆栈只是一个基于“软件堆栈”通用概念的短语,例如 TCP/IP 堆栈、GSM 堆栈等。
它是通常由 USB 设备制造商或操作系统开发人员提供的框架,使其他开发人员能够集中精力重点关注其实现的核心,而不是担心正确实现较低级别的 USB。
对于 USB,本质上存在通信层(每个人对它们的称呼略有不同):
它类似于现代操作系统的 TCP/IP 堆栈:
USB stack, is just a phrase based on generic concept of 'software stack', such as TCP/IP stack, GSM stack, etc.
It's the framework, often provided by USB device manufacturers, or OS developers, that enables other developers to focus on the meat of their implementation, rather than worrying about implementing lower levels of USB correctly.
In case of USB, there are essentially layers of communication (everyone calls them slightly differently):
It's similar to TCP/IP stack of a modern operating system: