USB 虚拟串口

您所在的位置:网站首页 usb-slave接口 USB 虚拟串口

USB 虚拟串口

2024-01-21 09:26| 来源: 网络整理| 查看: 265

USB 虚拟串口简介 1. USB虚拟串口简介2.usb gadget 串口(serial)的配置和使用3.USB中CDC-ECM的了解和配置

1. USB虚拟串口简介

USB虚拟串口属于USB通信设备类。在物理层通过USB总线,采用虚拟串口的方式为主机提供一个物理串口。在系统内部,USB控制器提供了一个批量传输IN端点和一个批量传输的OUT端点,用于数据的接收和发送,模拟串口的RX和TX线。另外USB控制器还提供中断IN端点,发送当前串口的状态,实现对串口传输的控制。串口设备的数据,由系统的串口采集,在芯片内完成USB包的封装,通过USB总线上传至主机,再由相应的串口应用程序进行处理。对用户来说,看到的是基于串口的数据采集和传输,而实际上实现的是基于USB协议包的数据传输。

1.1 USB CDC协议简介 USB的CDC类是USB通信设备类(Communication Device Class)的简称。CDC类是USB组织定义的一类专门给各种通信设备(电信通信设备和中速网络通信设备)使用的USB子类。根据CDC类所针对通信设备的不同,CDC类又被分成以下不同的模型:USB传统纯电话业务(POTS)模型,USB ISDN模型和USB网络模型,其中USB传统纯电话业务模型又可分为直线控制模型(Direct Line Control Model)、抽象模型、电话模型,如图 1.1所示。本文讨论的虚拟串口就属于USB 传统纯电话业务模型下的抽象控制模型。

image.png

图 1.1 CDC分类

1.2 Linux下USB虚拟串口框架 如图 1.2所示,Linux实现了gadget.h定义的统一接口,然后上层的各种gadget driver(如serial.c等)调用这一套统一的接口可以去实现不同类型的功能,如USB串口、U盘、USB以太网等等。

image.png

图 1.2 USB虚拟串口框架

在Linux中通过USB虚拟的其他设备都需要经过Gadget层的绑定,最终与虚拟的相关设备进行绑定。 参考:https://blog.51cto.com/12572800/2043912

2.usb gadget 串口(serial)的配置和使用

简介 本篇文章主要是配置内核并使用 usb 的 gadget 的串口,即将带有usb口的linux平台,虚拟成一个串口设备。包括内核配置,加载和使用方法。最终在linux平台上会在创建出一个 /dev/ttyGS*节点。

具体操作 首先保证平台设备树中的相应的usb口的配置是slave模式,可以是 peripheral 模式,或者 otg。例子如下:

usb相关的节点中属性 dr_mode = “otg”; ,或者 dr_mode = “peripheral”;

然后配置menuconfig中的相关项,我配置成的是模块加载的形势

make menuconfig

Device Drivers > USB support > USB Gadget Support 在这里插入图片描述 make 时,生成的文件所在位置 drivers/usb/gadget/libcomposite.ko 和 drivers/usb/gadget/legacy/下的 u_serial.ko 和 drivers/usb/gadget/function/ 下的u_serial.ko usb_f_serial.ko usb_f_acm.ko。

在系统起来后分别按顺序加载

insmod libcomposite.ko insmod u_serial.ko insmod usb_f_serial.ko insmod usb_f_acm.ko insmod u_serial.ko

注:如果没有acm,需要配置上 menuconfig中的 > Device Drivers > USB support > USB Modem (CDC ACM) support 即使勾选上编译进内核了,仍然需要 usb_f_acm.ko 模块的加载。 让window识别可能还需要这个文件 linux-cdc-acm.inf ,这个文件是在内核源码的 Documentation\usb目录下,电脑识别后的现象是自动识别出了com口 在这里插入图片描述 波特率等的配置不影响通信, 当我们用串口助手打开并发送数据时,是自发自收,当我们在板子中向节点发送数据时,串口助手能收到自发自收 在这里插入图片描述 板子向电脑发送 在这里插入图片描述 在这里插入图片描述 /dev 下自动创建了设备节点,如果需要手动创建,需要查看下设备节点主设备号

cat /sys/class/tty/ttyGS0/dev

本文链接:https://blog.csdn.net/qqliyunpeng/article/details/105564974

3.USB中CDC-ECM的了解和配置

USB中典型类及子类: 在这里插入图片描述 以前接触过UVC,今天接触了CDC-ECM原理上是一样的,定义一套标准协议主从机都遵守了就不需要额外的驱动程序。

简单翻译(其实用Google的多一些)一下usbcdc11的第3.8.2关于CDC-ECM的章节。 3.8.2 Ethernet Networking Control Model

以太网控制模型是用在主从设备间的以太网帧数据的交换。通信类接口用于配置和管理以太网程序,程序中包含的“以太网控制模型”子类码是通信类接口描述定义。

数据接口则用于在USB总线上交换USB数据包,这些USB数以的包封装了完整的以太网包。CRC校验和不能包含在以太网收发数据包中。检验失败的帧数据不能再发送到主机。这意味着设备必须能够缓冲至少一个完整的以太网帧数据。 在这里插入图片描述 尽管USB虚拟网络接口通常一直保持连接状态,一些网络设备管理的要求,需要正确地初始化设备和主机网络堆栈两者。也可能是偶然的变化配置或状态,例如,增加组播过滤器。 这是有效的通信类接口与通信类子类乙太网路控制模型的唯一一类特定的请求代码列于表10。

在这里插入图片描述

Linux内核配置支持CDC-ECM:

Device Drivers ---> [*] Network device support ---> USB Network Adapters ---> Multi-purpose USB Networking Framework -*- CDC Ethernet support (smart devices such as cable modems)

匹配CDC-ECM设备的LOG信息:

usb 1-1: new full speed USB device using s3c2410-ohci and address 3

usb 1-1: New USB device found, idVendor=0bda, idProduct=8152

usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3

usb 1-1: Product: USB 10/100 LAN

usb 1-1: Manufacturer: Realtek

usb 1-1: SerialNumber: 00E04C36004F

usb 1-1: configuration #2 chosen from 2 choices

eth1: register ‘cdc_ether’ at usb-s3c24xx-1, CDC Ethernet Device, 00:e0:4c:36:00:4f

然后就完事了,它就是一个普通的网卡了。

总结:ECM的驱动源码文件是drivers/net/usb/cdc_ether.c。不需要添加Vid Pid等等任何操作就可以使用。cdc_ether.c与传统的以太网芯片的驱动程序并不一样,并不是实现xxx_open(),xxx_stop(),xxx_tx(), xxx_hard_header(), xxx_get_stats, xxx_tx_timeout()而是实现了:usbnet_generic_cdc_bind(), usbnet_cdc_unbind(), usbnet_cdc_bind(), usbnet_cdc_status()等4个API。

USB中典型类及子类2:

ClassDescriptionExample00h--01hAudioUSB Audio Card08hMass StorageUSB Flash(UPan)

For Audio Class:

```c Device Drivers ---> Sound card support---> Sound card support Advanced Linux Sound Architecture ---> [*] USB sound devices ---> USB Audio/MIDI driver then run `cat /proc/cards` you will see what like this $ cat /proc/asound/cards 0 [Intel ]: HDA-Intel - HDA Intel HDA Intel at 0xfebf4000 irq 44 1 [Set ]: USB-Audio - C-Media USB Headphone Set C-Media USB Headphone Set at usb-0000:00:1d.2-1, full speed $ the [Set] is a USB audio card.

参考:《基于USB+CDC的虚拟以太网接口研究与设计》 本文链接:https://blog.csdn.net/kangear/article/details/37605811



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3