gpt4 book ai didi

usb - 关于 USB 的详细信息 - 到目前为止还没有运气

转载 作者:行者123 更新时间:2023-12-04 03:04:25 24 4
gpt4 key购买 nike

很长一段时间以来,我一直在寻找有关 USB 协议(protocol)和电缆如何工作的详细说明,但没有成功。我正在寻找关于 USB 的软件和硬件方面如何工作的详细但不过度复杂的解释。链接和解释将不胜感激。我真的没有想法了,所以如果你能帮助我,那就太好了。

这是我所知道的:

USB 硬件带有 4 条线路 - 5V 电源、地线和 2 条全双工线路。

连接时,设备可以要求指定数量的电流。

与传统的串行连接相比,USB 的传输速度相当快。

连接时,设备将向主机输出描述自身的描述符。这些描述符也将用于数据。

我不知道的是:

C/C++ 程序如何直接写入 USB 端口?它会写入端口中的地址吗?

某些设备如何将自己描述为 HID?

驱动程序如何工作?

其他一切...

谢谢!

最佳答案

鉴别
每个设备都有一个(唯一的)供应商和产品 ID。这些由 usb.org 提供(出售)以识别设备。您可以使用 libusbx 之类的库来枚举所有连接的设备,然后选择具有您要查找的供应商和产品 ID 的设备。
HID 描述符
HID 描述符的目的实际上是取消驱动程序。 HID 描述符是描述设备的通用方式,因此您无需在每个系统/架构/etc/的驱动程序上浪费时间。 (与 JVM 相同的概念。)
报告
您将使用输入、输出或功能报告来读取或写入您的设备。您在输入或功能报告上向您的设备发送一个流。我相信这通常是 8 个字节。其中只有一个是您要编写的单个字符。 HID 描述符包含整理报告所需的所有信息。尽管我正在努力寻找相关链接来澄清这一点。
潜在图书馆
为了保持开放的心态,这里列出了我熟悉的所有库以及一些关于它们的信息。
libusb-0.1
首先是 libusb-0.1。我相信这曾经是许多 Linux 内核和 Windows 的首选并内置于其中。它非常易于使用,并且有很多文档。但是,所有者从未更新,并且多年未编辑。它仅支持同步传输。 (如果发生错误,程序可以在等待传输时无限等待。)
libusbx
接下来是 libusbx。这是今天大多数人的建议,我同意。它是由那些对 libusb-0.1 的所有者感到沮丧的人发布的。该代码更轻量级、最新,重要的是不需要像 libusb-0.1 和 libusb-1.0 那样的 root 权限(稍后讨论)。它支持同步或异步传输。
libusb-1.0
然后是 libusb-1.0。这是多年来对 libusb-0.1 的第一次更新。它与 libusb-0.1 不兼容。这与 libusbx 在同一天发布,作为报复(我假设)并试图纠正缺乏更新内容并保护用户群。它支持同步或异步传输。
隐藏.h
最后,还有隐藏库。这是建立在 libusb 之上的另一个抽象层。但老实说,我认为这真的很令人困惑,而且它只会增加不必要的开销。
一些好的资源
Understanding HID Descriptors
Control Message Transfer Documentation (非常好的链接IMO)
Rolling Your Own HID Descriptor
Good Visual of HID Reports for Transfers
Great List of bmRequestType constants (您将需要这个或类似的)
A simple terminal app for speaking with DigiSpark using libusbx and libusb-0.1
我知道这不是您正在寻找的东西,但也许它会让您入门!

关于usb - 关于 USB 的详细信息 - 到目前为止还没有运气,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17679480/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com