Linux Gadget 串行驱动程序 v2.0

先决条件

小工具串行驱动程序的多个版本适用于 2.4 Linux 内核,但本文档假定您在 2.6 Linux 内核中使用 2.3 或更高版本的小工具串行驱动程序。

本文档假设您熟悉 Linux 和 Windows,并知道如何配置和构建 Linux 内核、运行标准实用程序、使用 minicom 和 HyperTerminal 以及如何使用 USB 和串行设备。还假设您将 Linux 小工具和 USB 驱动程序配置为模块。

使用 2.3 版驱动程序,主要和次要设备节点不再是静态定义的。基于 Linux 的系统应在 /sys 中安装 sysfs,并使用“mdev”(在 Busybox 中)或“udev”使 /dev 节点与 sysfs /sys/class/tty 文件匹配。

概述

小工具串行驱动程序是 Linux USB 小工具驱动程序,即 USB 设备端驱动程序。它运行在具有 USB 设备端硬件的 Linux 系统上;例如,PDA、嵌入式 Linux 系统或带有 USB 开发卡的 PC。

小工具串行驱动程序通过 USB 与主机 PC 上运行的 CDC ACM 驱动程序或通用 USB 串行驱动程序进行通信:

Host
 --------------------------------------
| Host-Side   CDC ACM       USB Host   |
| Operating |   or        | Controller |   USB
| System    | Generic USB | Driver     |--------
| (Linux or | Serial      | and        |        |
| Windows)    Driver        USB Stack  |        |
 --------------------------------------         |
                                                |
                                                |
                                                |
 Gadget                                         |
 --------------------------------------         |
| Gadget                   USB Periph. |        |
| Device-Side |  Gadget  | Controller  |        |
| Linux       |  Serial  | Driver      |--------
| Operating   |  Driver  | and         |
| System                   USB Stack   |
 --------------------------------------

在设备端Linux系统上,小工具串行驱动看起来就像一个串行设备。

在主机端系统上,小工具串行设备看起来像一个符合 CDC ACM 的类设备或一个具有批量输入和批量输出端点的简单的供应商特定设备,并且它与其他串行设备的处理方式类似。

主机端驱动程序可能是任何符合 ACM 标准的驱动程序,也可能是任何能够与具有简单批量输入/输出接口的设备通信的驱动程序。Gadget serial 已使用 Linux ACM 驱动程序、Windows usbser.sys ACM 驱动程序和 Linux USB 通用串行驱动程序进行了测试。

在小工具串行驱动程序和主机端 ACM 或通用串行驱动程序运行的情况下,您应该能够在主机和小工具端系统之间进行通信,就像它们通过串行电缆连接一样。

小工具串行驱动程序仅提供简单的不可靠数据通信。它还不能处理流量控制或普通串行设备的许多其他功能。

安装小工具串行驱动程序

要使用小工具串行驱动程序,您必须将 Linux 小工具端内核配置为“支持 USB 小工具”、“USB 外设控制器”(例如 net2280)和“串行小工具”驱动程序。配置内核时,所有这些都列在“USB 小工具支持”下。然后重建并安装内核或模块。

然后,您必须加载小工具串行驱动程序。要将其作为 ACM 设备加载(建议用于互操作性),请执行以下操作:

modprobe g_serial

要将其加载为特定于供应商的批量输入/输出设备,请执行以下操作:

modprobe g_serial use_acm=0

这还将自动加载底层小工具外围设备控制器驱动程序。每次重新启动小工具端 Linux 系统时都必须执行此操作。如果需要,您可以将其添加到启动脚本中。

您的系统应使用 mdev(来自 busybox)或 udev 来创建设备节点。设置完此小工具驱动程序后,您应该会看到 /dev/ttyGS0 节点:

# ls -l /dev/ttyGS0 | cat
crw-rw----    1 root     root     253,   0 May  8 14:10 /dev/ttyGS0
#

请注意,主编号(上面的 253)是系统特定的。如果您需要手动创建 /dev 节点,则要使用的正确编号位于 /sys/class/tty/ttyGS0/dev 文件中。

当您早期链接此小工具驱动程序时(甚至可能是静态链接),您可能希望设置一个 /etc/inittab 条目以在其上运行“getty”。/dev/ttyGS0 线路应像大多数其他串行端口一样工作。

如果将 gadget serial 加载为 ACM 设备,则需要在主机端使用 Windows 或 Linux ACM 驱动程序。如果将 gadget serial 加载为批量输入/输出设备,则需要在主机端使用 Linux 通用串行驱动程序。按照以下相应说明安装主机端驱动程序。

安装 Windows Host ACM 驱动程序

要使用 Windows ACM 驱动程序,您必须拥有支持所有最新版本 Windows 的“linux-cdc-acm.inf”文件(随本文档提供)。

当小工具串行驱动程序已加载,并且 USB 设备通过 USB 电缆连接到 Windows 主机时,Windows 应该会识别小工具串行设备并要求驱动程序。告诉 Windows 在包含“linux-cdc-acm.inf”文件的文件夹中查找驱动程序。

例如,在 Windows XP 上,当首次插入 Gadget 串行设备时,“发现新硬件向导”会启动。选择“从列表或指定位置安装(高级)”,然后在下一个屏幕上选择“将此位置包含在搜索中”并输入路径或浏览到包含“linux-cdc-acm.inf”文件的文件夹。Windows 会抱怨 Gadget Serial 驱动程序未通过 Windows Logo 测试,但选择“仍然继续”并完成驱动程序安装。

在 Windows XP 中,在“设备管理器”(在“控制面板”、“系统”、“硬件”下)中展开“端口(COM 和 LPT)”条目,您应该会看到“Gadget Serial”列为其中一个 COM 端口的驱动程序。

要卸载“Gadget Serial”的 Windows XP 驱动程序,请右键单击“设备管理器”中的“Gadget Serial”条目,然后选择“卸载”。

安装Linux主机ACM驱动程序

要使用 Linux ACM 驱动程序,您必须将 Linux 主机端内核配置为“支持主机端 USB”和“USB 调制解调器(CDC ACM)支持”。

一旦加载了小工具串行驱动程序,并且使用 USB 电缆将 USB 设备连接到 Linux 主机,主机系统就应该能够识别小工具串行设备。例如,命令:

cat /sys/kernel/debug/usb/devices

应该显示类似这样的内容:

T:  Bus=01 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#=  5 Spd=480 MxCh= 0
D:  Ver= 2.00 Cls=02(comm.) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=0525 ProdID=a4a7 Rev= 2.01
S:  Manufacturer=Linux 2.6.8.1 with net2280
S:  Product=Gadget Serial
S:  SerialNumber=0
C:* #Ifs= 2 Cfg#= 2 Atr=c0 MxPwr=  2mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=02 Prot=01 Driver=acm
E:  Ad=83(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
I:  If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=acm
E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

如果主机端 Linux 系统配置正确,ACM 驱动程序应该会自动加载。命令“lsmod”应该显示“acm”模块已加载。

安装 Linux 主机通用 USB 串行驱动程序

要使用 Linux 通用 USB 串行驱动程序,您必须将 Linux 主机端内核配置为“支持主机端 USB”、“USB 串行转换器支持”和“USB 通用串行驱动程序”。

一旦加载了小工具串行驱动程序,并且使用 USB 电缆将 USB 设备连接到 Linux 主机,主机系统就应该能够识别小工具串行设备。例如,命令:

cat /sys/kernel/debug/usb/devices

应该显示类似这样的内容:

T:  Bus=01 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#=  6 Spd=480 MxCh= 0
D:  Ver= 2.00 Cls=ff(vend.) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=0525 ProdID=a4a6 Rev= 2.01
S:  Manufacturer=Linux 2.6.8.1 with net2280
S:  Product=Gadget Serial
S:  SerialNumber=0
C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr=  2mA
I:  If#= 0 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=serial
E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

您必须加载 usbserial 驱动程序并明确设置其参数以配置它来识别小工具串行设备,如下所示:

echo 0x0525 0xA4A6 >/sys/bus/usb-serial/drivers/generic/new_id

传统方法是使用模块参数:

modprobe usbserial vendor=0x0525 product=0xA4A6

如果一切正常,usbserial 将在系统日志中打印一条消息,内容类似“Gadget Serial converter now equipped with ttyUSB0”。

使用 Minicom 或HyperTerminal 进行测试

一旦小工具串行驱动程序和主机驱动程序都安装完毕,并且 USB 电缆将小工具设备连接到主机,您就应该能够通过 USB 在小工具和主机系统之间进行通信。您可以使用 minicom 或 HyperTerminal 进行尝试。

在小工具端运行“minicom -s”以配置新的 minicom 会话。在“串行端口设置”​​下,将“/dev/ttygserial”设置为“串行设备”。将波特率、数据位、奇偶校验和停止位设置为 9600、8、无和 1——这些设置大多无关紧要。在“调制解调器和拨号”下,删除所有调制解调器和拨号字符串。

在运行 ACM 驱动程序的 Linux 主机上,以类似方式配置 minicom,但使用“/dev/ttyACM0”作为“串行设备”。(如果连接了其他 ACM 设备,请适当更改设备名称。)

在运行 USB 通用串行驱动程序的 Linux 主机上,以类似的方式配置 minicom,但使用“/dev/ttyUSB0”作为“串行设备”。 (如果连接了其他 USB 串行设备,请适当更改设备名称。)

在 Windows 主机上配置新的 HyperTerminal 会话以使用分配给 Gadget Serial 的 COM 端口。当 HyperTerminal 连接到 Gadget 串行设备时,“端口设置”​​将自动设置,因此您可以将它们保留为默认值——这些设置大多无关紧要。

在小工具端配置并运行 minicom,在主机端配置并运行 minicom 或 HyperTerminal 后,您应能够在小工具端和主机端系统之间来回发送数据。您在小工具端的终端窗口中输入的任何内容都应显示在主机端的终端窗口中,反之亦然。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/945741.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

初识 Conda:一站式包管理和环境管理工具

文章目录 1. 什么是 Conda?2. 为什么选择 Conda?3. Conda 的安装3.1 安装步骤(以 Miniconda 为例) 4. Conda 的核心功能4.1 包管理4.2 环境管理4.3 Conda Forge4.4 设置国内镜像 5. 常见使用场景5.1 数据科学项目5.2 离线安装5.3 …

docker 搭建集群

准备3台机器: #dockermaster 192.168.31.150 sudo hostnamectl set-hostname dockermaster #初始化主节点 docker swarm init --advertise-addr 192.168.31.150 #查看集群是否搭建成功 docker node ls #dockernode1 192.168.31.151 sudo hostnamectl set-hostname …

Kafka消息不丢失与重复消费问题解决方案总结

1. 生产者层面 异步发送与回调处理 异步发送方式:生产者一般使用异步方式发送消息,异步发送有消息和回调接口两个参数。在回调接口的重写方法中,可通过异常参数判断消息发送状态。若消息发送成功,异常参数为null;若发…

StarRocks 存算分离在得物的降本增效实践

编者荐语: 得物优化数据引擎布局,近期将 4000 核 ClickHouse 迁移至自建 StarRocks,成本降低 40%,查询耗时减半,集群稳定性显著提升。本文详解迁移实践与成果,文末附丁凯剑老师 StarRocks Summit Asia 2024…

微服务-1 认识微服务

目录​​​​​​​ 1 认识微服务 1.1 单体架构 1.2 微服务 1.3 SpringCloud 2 服务拆分原则 2.1 什么时候拆 2.2 怎么拆 2.3 服务调用 3. 服务注册与发现 3.1 注册中心原理 3.2 Nacos注册中心 3.3 服务注册 3.3.1 添加依赖 3.3.2 配置Nacos 3.3.3 启动服务实例 …

IDEA工具使用介绍、IDEA常用设置以及如何集成Git版本控制工具

文章目录 一、IDEA二、建立第一个 Java 程序三、IDEA 常用设置四、IDEA 集成版本控制工具(Git、GitHub)4.1 IDEA 拉 GitHub/Git 项目4.2 IDEA 上传 项目到 Git4.3 更新提交命令 一、IDEA 1、什么是IDEA? IDEA,全称为 IntelliJ ID…

kafka开机自启失败问题处理

前言:在当今大数据处理领域,Kafka 作为一款高性能、分布式的消息队列系统,发挥着举足轻重的作用。无论是海量数据的实时传输,还是复杂系统间的解耦通信,Kafka 都能轻松应对。然而,在实际部署和运维 Kafka 的…

二维数组综合

第1题 稀疏矩阵 查看测评数据信息 nm矩阵大部分元素是0的矩阵称为稀疏矩阵,假设有k个非0元素,则可把稀疏矩阵用K3的矩阵简记之,其中第一列是行号,第二列是列号,第三列是该行、该列下的非0元素的值。如:…

STM32-笔记20-测量按键按下时间

1、按键按下的时间-思路 我们先检测下降沿信号,检测到以后,在回调函数里切换成检测上升沿信号,当两个信号都检测到的时候,这段时间就是按键按下的时间,如图所示:>N*(ARR1)CCRx的值 N是在这段时间内&…

【网络协议】路由信息协议 (RIP)

未经许可,不得转载。 路由信息协议(Routing Information Protocol,简称 RIP)是一种使用跳数(hop count)作为路由度量标准的路由协议,用于确定源网络和目标网络之间的最佳路径。 文章目录 什么是…

PHP后执行php.exe -v命令报错并给出解决方案

文章目录 一、执行php.exe -v命令报错解决方案 一、执行php.exe -v命令报错 -PHP Warning: ‘C:\windows\SYSTEM32\VCRUNTIME140.dll’ 14.38 is not compatible with this PHP build linked with 14.41 in Unknown on line 0 解决方案 当使用PHP8.4.1时遇到VCRUNTIME140.dll…

blender中合并的模型,在threejs中显示多个mesh;blender多材质烘培成一个材质

描述:在blender中合并的模型导出为glb,在threejs中导入仍显示多个mesh,并不是统一的整体,导致需要整体高亮或者使用DragControls等不能统一控制。 原因:模型有多个材质,在blender中合并的时候,…

0xc0000020错误代码怎么处理,Windows11、10坏图像错误0xc0000020的修复办法

“0xc0000020”是一种 Windows 应用程序错误代码,通常表明某些文件缺失或损坏。这可能是由于系统文件损坏、应用程序安装或卸载问题、恶意软件感染、有问题的 Windows 更新等原因导致的。 比如,当运行软件时,可能会出现类似“C:\xx\xxx.dll …

wangEditor富文本插件在vue项目中使用和媒体上传的实现

wangEditor是前端一个比较流行的简洁易用,功能强大的前端富文本编辑器,支持 JS Vue React,提供了很多丰富的功能,下面手把手教你实现wangWditor富文本插件在vue项目中配置,保存、图片上传等功能。无脑ctrlc即可 基本功…

MySQL root用户密码忘记怎么办(Reset root account password)

在使用MySQL数据库的的过程中,不可避免的会出现忘记密码的现象。普通用户的密码如果忘记,可以用更高权限的用户(例如root)进行重置。但是如果root用户的密码忘记了,由于root用户本身就是最高权限,那这个方法…

C语言学习笔记(1)

在学习前,需要有一定的C语言基础。不必很深入,只需要知道函数,头文件,指针,数组等的概念就可以,但并非0基础笔记。 由于写到后面,不好编辑了,决定分成多篇写,请按编号学…

使用uWSGI将Flask应用部署到生产环境

使用uWSGI将Flask应用部署到生产环境: 1、安装uWSGI conda install -c conda-forge uwsgi(pip install uwsgi会报错) 2、配置uWSGI 在python程序的同一文件夹下创建 uwsgi.ini文件,文件内容如下表。 需要按照实际情况修改文件名称…

集成方案 | Docusign + 蓝凌 EKP,打造一站式合同管理平台,实现无缝协作!

本文将详细介绍 Docusign 与蓝凌 EKP 的集成步骤及其效果,并通过实际应用场景来展示 Docusign 的强大集成能力,以证明 Docusign 集成功能的高效性和实用性。 在当今数字化办公环境中,企业对于提高工作效率和提升用户体验的需求日益迫切。蓝凌…

CMS漏洞靶场攻略

DeDeCMS 环境搭建 傻瓜式安装 漏洞一:通过文件管理器上传WebShel 步骤⼀:访问目标靶场其思路为 dedecms 后台可以直接上传任意文件,可以通过⽂件管理器上传php文件获取webshell 登陆网站后台 步骤二:登陆到后台点击 【核心】 --》 【文件式…

1、Jmeter、jdk下载与安装

1、访问官网,点击下载Jmeter http://jmeter.apache.org/ 2、在等待期间,下载对应的Java https://www.oracle.com/cn/java/technologies/downloads/#jdk23-windows 3、全部下载好,先安装JDK ![在这里插入图片描述](https://i-blog.csdnimg…