news 2026/4/18 10:47:59

Linux USB HOST EXTERNAL VIRTUAL COM PORT

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux USB HOST EXTERNAL VIRTUAL COM PORT

目录

目录

前言

DTS配置的参考

内核配置的参考

USB Subsystem内核配置

USB Phy内核配置

USB Host Core驱动内核配置

USB EHCI驱动内核配置

芯片平台USB Host Controller驱动内核配置

USB HOST CDC ACM内核配置

验证测试的参考

总结


前言

USB虚拟串口(简称VCP,Virtual COM Port的缩写),它是利用USB的CDC(Communication Device Class)类来实现的一种通信接口,在物理层通过USB总线,采用虚拟串口的方式为主机提供一个物理串口。

在系统内部,USB控制器提供了一个批量传输IN端口和一个批量传输的OUT端点,用于数据的接收和发送,模拟串口的RX和TX线。另外USB控制器还提供中断IN端点,发送当前串口的状态,实现对串口传输的控制。

串口设备的数据,由系统的串口采集,在芯片内完成USB包的封装,通过USB总线上传到主机,再由相应的串口应用程序进行处理。对于用户来说,看到的是基于串口的数据采集和传输,而实际上实现的是基于USB协议包的数据传输。

在这里主要实现的是串口通信主机的功能,使用的是USB HOST CDC ACM(Abstract Control Model)驱动来实现。


DTS配置的参考

/* usb20 host controller */ usb_1: usb1@YYYYYYYY { compatible = "xxx,xxx-usb"; reg = <0xYYYYYYYY 0xYYY>; interrupts = <GIC_SPI INT_USB20_HOST IRQ_TYPE_LEVEL_HIGH>; clocks = <&ahbX_gate 9>, <&ahbX_reset 9>; clock-names = "usb_gate", "usb_reset"; xxx,usbphy = <&usbphy_1>; dr_mode = "host"; /* 配置成了USB host模式 */ ...

内核配置的参考

USB Subsystem内核配置

CONFIG_USB_SUPPORT=y CONFIG_USB_ARCH_HAS_HCD=y

USB Phy内核配置

CONFIG_USB_PHY=y CONFIG_USB_NX_PHY=y

USB Host Core驱动内核配置

CONFIG_USB_COMMON=y CONFIG_USB=y CONFIG_USB_ANNOUNCE_NEW_DEVICES=y CONFIG_USB_DEFAULT_PERSIST=y

USB EHCI驱动内核配置

CONFIG_USB_EHCI_HCD=y CONFIG_USB_EHCI_ROOT_HUB_TT=y CONFIG_USB_EHCI_TT_NEWSCHED=y CONFIG_USB_EHCI_HCD_PLATFORM=y

芯片平台USB Host Controller驱动内核配置

CONFIG_USB_XXX=y CONFIG_USB_XXX_HOST=y CONFIG_USB_XXX_DEBUG=y

USB HOST CDC ACM内核配置

CONFIG_USB_ACM=y

验证测试的参考

1. 使用两个主控设备,例如使用两个开发板,其中一个配置成USB HOST CDC ACM,另外一个配置成USB Gadget CDC ACM(配置成工厂测试模式)。

2. 把USB Gadget CDC ACM的主控设备通过USB线接到USB HOST CDC ACM的主控设备上,此时查看USB HOST CDC ACM的主控设备是否产生`/dev/ttyACM*`的设备节点,例如:

# find / -name "*ACM*" /dev/ttyACM0 /sys/devices/platform/xxxxxxxx.usb1/xxx_hdc.1/usb2/2-1/2-1.2/2-1.2:1.0/tty/ttyACM0 /sys/class/tty/ttyACM0

3. USB HOST CDC ACM的主控设备向USB Gadget CDC ACM的主控设备发起请求,例如:

# echo "date set 2024-11-22 15:10:50" > /dev/ttyACM0 # date set ok

4. 观察USB Gadget CDC ACM的主控设备的日期时间是否被修改。


总结

USB虚拟串口HOST CDC ACM的作用,简单来说,就是‌让USB设备在主机上模拟出传统串口,实现高速、即插即用的串行通信‌。它属于USB通信设备类(CDC)的一个子类,通过抽象控制模型(ACM)在操作系统中创建虚拟串口,支持跨平台数据传输。

  • 核心作用
  1. 虚拟串口模拟‌:将USB设备映射为系统识别的串行端口(如/dev/ttyACM*),兼容传统串口应用。
  2. 高速数据传输‌:理论速率可达12Mbps,远超传统串口(如RS-232的115.2Kbps)。
  3. 即插即用‌:主流操作系统(Windows 7+、Linux和macOS)原生支持,无需额外驱动。
  4. 控制信号支持‌:管理RTS/CTS、DTR/DSR等硬件流控信号。
  • 技术实现
  1. 接口分离‌:通过控制接口(端点0)管理设备状态,数据接口(端点1/2)传输数据,支持双向通信。
  2. 跨平台兼容‌:遵循USB-IF标准,可在嵌入式系统、物联网设备等场景灵活应用。
  • 典型应用
  1. 嵌入式开发‌:如ARM板卡通过USB Gadget框架实现CDC ACM。
  2. 工业通信‌:替代传统串口,提升设备间通信效率。

总之,CDC ACM通过标准化和高效性,可成为现代串行通信的重要解决方案之一。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/14 15:02:06

3个关键步骤:用缠论Python框架打造稳健量化策略

3个关键步骤&#xff1a;用缠论Python框架打造稳健量化策略 【免费下载链接】chan.py 开放式的缠论python实现框架&#xff0c;支持形态学/动力学买卖点分析计算&#xff0c;多级别K线联立&#xff0c;区间套策略&#xff0c;可视化绘图&#xff0c;多种数据接入&#xff0c;策…

作者头像 李华
网站建设 2026/4/13 19:39:01

追书神器API完整指南:30万本小说免费接口快速搭建阅读应用

追书神器API完整指南&#xff1a;30万本小说免费接口快速搭建阅读应用 【免费下载链接】zhuishushenqi 追书神器 接口分析包装 项目地址: https://gitcode.com/gh_mirrors/zhu/zhuishushenqi 还在为开发小说应用找不到稳定数据源而烦恼吗&#xff1f;追书神器API项目为你…

作者头像 李华
网站建设 2026/4/18 8:37:51

Playback播放器:重塑跨平台视频播放新体验

Playback播放器&#xff1a;重塑跨平台视频播放新体验 【免费下载链接】playback Video player built using electron and node.js 项目地址: https://gitcode.com/gh_mirrors/pl/playback 在数字媒体内容爆炸式增长的今天&#xff0c;用户对视频播放器的需求已从简单的…

作者头像 李华
网站建设 2026/4/17 13:55:54

Python安装包冲突解决|Miniconda-Python3.11镜像环境隔离原理

Python安装包冲突解决&#xff5c;Miniconda-Python3.11镜像环境隔离原理 在数据科学、人工智能和机器学习项目日益复杂的今天&#xff0c;开发者常面临一个看似简单却极为棘手的问题&#xff1a;为什么昨天还能跑通的代码&#xff0c;今天却报错“模块找不到”或“版本不兼容”…

作者头像 李华
网站建设 2026/4/18 9:45:33

Netflix Conductor:微服务编排的终极解决方案

在当今复杂的微服务架构中&#xff0c;如何高效协调数十个甚至上百个服务间的协作关系&#xff1f;Netflix Conductor作为一款强大的微服务编排引擎&#xff0c;为企业级分布式系统协调提供了革命性的解决方案。这款工作流引擎能够将繁琐的服务调用转化为清晰可控的业务流程&am…

作者头像 李华
网站建设 2026/4/18 9:44:20

Emgu CV跨平台图像处理完整指南:从零开始掌握计算机视觉技术

Emgu CV跨平台图像处理完整指南&#xff1a;从零开始掌握计算机视觉技术 【免费下载链接】emgucv Emgu CV is a cross platform .Net wrapper to the OpenCV image processing library. 项目地址: https://gitcode.com/gh_mirrors/em/emgucv 想要在.NET生态系统中构建专…

作者头像 李华