gpt4 book ai didi

embedded - 具有多个串行端口的 USB 通信设备,适用于所有平台

转载 作者:行者123 更新时间:2023-12-02 21:41:26 26 4
gpt4 key购买 nike

我们有一个通过 USB 连接到 PC 的嵌入式设备,它有多个虚拟串行端口 (CDC-ACM)。

我们可以在 Windows 上使用此功能。在嵌入式设备上,我们有多个CDC-ACM接口(interface)。 USB 描述符将其声明为复合设备(类 = 0xEF,子类 = 2,协议(protocol) = 1),并且每个虚拟串行端口都有一个“接口(interface)关联描述符”。在 Windows 上,我们使用 INF 文件为每个 CDC-ACM 控制接口(interface)(MI_00、MI_02 等)安装 usbser.sys。

但是,正如我们发现的,这种方法似乎不适用于 Mac。我发现通过将其更改为“通信”类(类 = 2,子类 = 0,协议(protocol) = 0)并删除 IAD,我可以让它在 Mac 和 Linux 上工作。 (对于 Linux,使用 Ubuntu 进行测试,我发现这适用于 Ubuntu Linux 内核 2.6.35-28 或更高版本。对于早期内核,只有第一个串行端口可以工作。)但是,这种方法不适用于 Windows。

什么方法可以制作一个具有多个虚拟串口的USB设备,可以在Windows、Mac和Linux上运行?我认为我更喜欢尽可能使用 CDC-ACM 标准的解决方案,并尽可能避免编写自己的驱动程序选项。

最佳答案

我能想到的一种方法是,该设备将自己呈现为一个 USB 集线器,并连接有多个单独的单串行端口设备。这虽然不漂亮,但非常防弹。

关于embedded - 具有多个串行端口的 USB 通信设备,适用于所有平台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5508304/

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