具有多个串行端口的USB通信设备,可在所有平台上运行

Cra*_*een 7 embedded usb serial-port

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

我们有这个在Windows上工作.在嵌入式设备上,我们有多个CDC-ACM接口.USB描述符将其声明为复合设备(class = 0xEF,sub-class = 2,protocol = 1),并且每个虚拟串行端口都有一个"Interface Association Descriptor".在Windows上,我们使用INF文件为每个CDC-ACM控制接口(MI_00,MI_02等)安装usbser.sys.

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

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

SF.*_*SF. 3

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