我想开发一个包含USB Controller 的FPGA,其USB Controller 实现USB转串行协议(protocol)。 我认为 USB 转串口适配器很像键盘或鼠标。 但我发现情况恰恰相反。我测试的设备使用“供应商特定”协议(protocol)。 这意味着每个 USB 串行驱动程序都需要自己的驱动程序,这看起来效率很低。
对于大多数工程师来说这可能不是问题,因为他们可以从商店购买 USB 串行适配器,并且其供应商提供必要的软件。
但是如果我想在 FPGA 内部开发自己的 USB 转串口设备,我必须从头开始。我不想开发自己的协议(protocol)、自己的驱动程序。
是否有任何开放的 USB 转串口协议(protocol)(并且有 Linux 驱动程序可用),以便我可以在不侵犯他人权利的情况下实现?
重新发明轮子是没有意义的。 任何意见、建议将不胜感激。
谢谢!
秋-
最佳答案
您搜索 CDC 设备类别。如果您部署设备,通常会有设备(芯片)供应商提供的 VID&PID 组合,可以免费与产品一起使用。
您绝对应该为产品提供唯一的序列号(通常片上 ROM 中有硬闪存序列号),以便您的产品可以绑定(bind)到相同的设备路径(Windows 中的相同 COM#)。
设备配置由其描述符给出。通过描述符,您应该提供如上所述的序列号。 CDC 设备类具有最小的实现,其中包括一个用于线路配置的设置端点(大多数请求可以回复“不支持”)和两个用于数据输入和数据输出的批量端点。通过简约的实现,数据端点是原始数据 - PC 端发送的内容在设备端接收,反之亦然。但在此之上使用某些调制解调器协议(protocol)是没有障碍的。
尚未在 FPGA 上完成此操作,但在多个 MCU 上完成过。作为起点,我将为一些现代 MCU(例如 AVR)或一些小型 ARM(例如 NXP 11U 系列)下载 CDC 演示,以从中获取灵感。
Linux下对CDC设备类的支持很好,在开发过程中使用像lsusb
这样的实用程序非常有帮助。在 Windows 平台上,Win7 的情况要好得多,在 WinXP 下,您必须为每个 VID&PID 组合提供特定的 .inf 文件才能使用通用串行驱动程序,并且您的设备将显示为 COM#。
关于linux - USB串口驱动(通讯协议(protocol)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28424834/