访问Linux /dev/USB作为标准文件与USB设备通信

2023-11-21

我正在研究在 Linux 中与 USB 设备通信的方法,并且不想编写 Linux 内核驱动程序。我知道 libusb 存在并且是一个可以工作的用户空间库,但是我们的嵌入式设备不支持 usbfs (并且更改内核以添加支持确实很痛苦)。

所以我的问题基本上是这样的:是否可以/建议通过直接读写 /dev/USB 或与 USB 设备对应的 udev 文件来与 USB 设备通信,从而绕过对自定义 Linux 驱动程序和 usbfs 的需要?

我希望在 /dev/USB 或 udev 设备文件打开后,只需通过文件类型读/写命令直接读/写协议包,就可以使用 USB 设备协议进行通信。

请提出想法和建议。

跟进:

由于我需要与之通信的 USB 设备是 USB HID 类设备,因此我能够通过直接读取/写入 /dev/hidraw0 (或相应的 /dev/hidraw 设备)来使用 libudev 和标准 Linux USB HID RAW 驱动程序。没有必要为简单的 USB HID 设备编写自定义驱动程序。


吉姆,我不认为你可以逃避编写驱动程序的需要,而只需设法读取 USB 文件/dev。因为谁定义了当你做某件事时应该发生什么read()在 USB 设备文件上?谁定义了当您调用时应启动什么操作sysioctl()? 你的司机!换句话说,设备文件本身没有任何能力,除非它们得到底层驱动程序的支持。事实上,您可以将设备文件视为底层驱动程序的抽象!所以,没有驱动程序,没有使用设备文件:(

我建议您阅读以下有关如何编写驱动程序并了解 USB 内部结构的文章 -

  1. http://www.linux-usb.org/USB-guide/c15.html

  2. http://www.linuxjournal.com/article/4786(有点过时了)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

访问Linux /dev/USB作为标准文件与USB设备通信 的相关文章

  • 从 ttyUSB0 写入和读取,无法得到响应

    我对 Linux tty 不太有经验 我的环境是带有丰富 USB 串行的 Raspbian 什么有效 stty F dev ttyUSB0 38400 cu l dev ttyUSB0 s 38400 cu to dev ttyUSB0作品
  • 使用非规范地址检索内存数据会导致 SIGSEGV 而不是 SIGBUS

    我无法使用以下汇编代码产生 总线错误 这里我使用的内存地址不是合法的 规范地址 那么 我怎样才能触发该错误呢 我在带有 NASM 2 14 02 的 Ubuntu 20 04 LTS 下运行这段代码 但它会导致负载出现 SIGSEGV 分段
  • 如何获取 (Linux) 机器的 IP 地址?

    这个问题和之前问的几乎一样如何获取本地计算机的IP地址 https stackoverflow com questions 122208 get the ip address of local computer 问题 但是我需要找到一个的I
  • 为什么 fopen("any_path_name",'r') 不给出 NULL 作为返回值?

    在调试一些代码时 我得到如下内容 include
  • 在设备驱动程序中传递自定义标志以“打开”

    我需要将一些自定义标志传递给open 我的设备驱动程序的调用 我在LDD3中找到了这个例子 int dev open struct inode inode struct file filp if filp gt f flags O ACCM
  • 并行运行 shell 脚本

    我有一个 shell 脚本 打乱大型文本文件 600 万行和 6 列 根据第一列对文件进行排序 输出 1000 个文件 所以伪代码看起来像这样 file1 sh bin bash for i in seq 1 1000 do Generat
  • 如何让R使用所有处理器?

    我有一台运行 Windows XP 的四核笔记本电脑 但查看任务管理器 R 似乎一次只使用一个处理器 如何让 R 使用全部四个处理器并加速我的 R 程序 我有一个基本系统 我使用它在 for 循环上并行化我的程序 一旦您了解需要做什么 此方
  • 从 Xlib 转换为 xcb

    我目前正在将我的一个应用程序从 Xlib 移植到 libxcb 但在查找有关我有时使用的 XInput2 扩展的信息时遇到了一些麻烦 libxcb 中有 XInput2 实现吗 如果是的话 在哪里可以找到文档 目前我在使用此功能时遇到问题
  • Bash - 在与当前终端分开的另一个终端中启动命令的新实例

    我有一个简单的 bash 脚本 test sh 设置如下 bin bash args if args 0 check capture then watch n 1 ls lag home user capture0 watch n 1 ls
  • 为什么opencv videowriter这么慢?

    你好 stackoverflow 社区 我有一个棘手的问题 我需要你的帮助来了解这里发生了什么 我的程序从视频采集卡 Blackmagic 捕获帧 到目前为止 它工作得很好 同时我用 opencv cv imshow 显示捕获的图像 它也工
  • 使用 python 脚本更改 shell 中的工作目录

    我想实现一个用户态命令 它将采用其参数之一 路径 并将目录更改为该目录 程序完成后 我希望 shell 位于该目录中 所以我想实施cd命令 但需要外部程序 可以在 python 脚本中完成还是我必须编写 bash 包装器 Example t
  • 绕过 dev/urandom|random 进行测试

    我想编写一个功能测试用例 用已知的随机数值来测试程序 我已经在单元测试期间用模拟对其进行了测试 但我也希望用于功能测试 当然不是全部 最简单的方法是什么 dev urandom仅覆盖一个进程 有没有办法做类似的事情chroot对于单个文件并
  • 如何在 *nix 中登录时运行脚本?

    我知道我曾经知道如何做到这一点 但是 如何在 unix 中登录时运行脚本 bash 可以 From 维基百科 Bash http en wikipedia org wiki Bash 28Unix shell 29 当 Bash 启动时 它
  • 如何使用Android获取Linux内核的版本?

    如何在 Android 应用程序中获取 Linux 内核的版本 不是 100 确定 但我认为调用 uname r 需要 root 访问权限 无论如何 有一种不太肮脏的方法可以做到这一点 那就是 System getProperty os v
  • 如何让 Node.js 作为后台进程运行并且永不死掉?

    我通过 putty SSH 连接到 linux 服务器 我尝试将其作为后台进程运行 如下所示 node server js 然而 2 5 小时后 终端变得不活动 进程终止 即使终端断开连接 我是否也可以使进程保持活动状态 Edit 1 事实
  • x86-64 AMD 上 CALL 指令的操作数生成

    以下是示例程序 objdump 的输出 080483b4
  • 研究缓冲区溢出时应该使用哪些版本的 GCC 或标志?

    最近 作为计算机工程专业的本科生 我一直在研究缓冲区溢出 出于兴趣 我开始研究缓冲区溢出 但在尝试在我的计算机上用 GCC 4 9 1 在 Debian Jessie 中 编译的我自己的 C 程序中实现它们时遇到了困难 我听说较新的编译器中
  • 为 OpenWrt 编写和编译程序

    我有一个在 OpenWRT 下运行的具有 MIPS 架构的嵌入式设备 系统类型 MediaTek MT7628AN ver 1 eco 2机器 WRTnode2P 处理器 0CPU型号 MIPS 24KEc V5 5 我想通过我的电脑 ub
  • 从核心转储中获取堆栈跟踪

    如何从核心转储文件中获取堆栈跟踪 该文件大约 14 mb 是在我的应用程序退出并显示 分段错误 后生成的 我使用的是红帽 5 5 gdb usr bin myapp binary corefile 然后 使用以下之一 gdb bt gdb
  • 跨 CPU 内核的 rdtsc 精度

    我从一个线程发送网络数据包 并在运行于不同 CPU 核心上的第二个线程上接收回复 我的流程测量每个数据包发送和接收之间的时间 类似于 ping 我使用 rdtsc 来获得高分辨率 低开销的计时 这是我的实现所需要的 所有测量结果看起来都很可

随机推荐

  • 如何获得动词的过去式? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 获取动词过去式的最有效方法
  • 如何设置 .NET WindowsAuthentication - 当我希望它使用实际用户时,名称始终显示为“IIS APPPOOL\Classic .NET AppPool”

    我使用以下代码通过 Kerberos 进行身份验证 IntPtr logonToken WindowsIdentity GetCurrent Token string authenticationType WindowsAuthentica
  • C# 将 GMT 日期字符串解析为 DateTime

    我在用着http www eyecon ro bootstrap datepicker 插件选择日期 选择日期后我得到例如Fri Nov 01 2013 00 00 00 GMT 0100 1 如果我使用 format 设置插件 为什么我会
  • 覆盖 AngularJS URL 验证器

    AngularJS 接受这个作为有效的 URL var URL REGEXP ftp http https w 0 1 w S 0 9 w Django 接受这一点 regex re compile r http ftp s http or
  • Objective-C 中的字符串常量是如何存储/检索的?

    有人可以解释编译器在何处以及如何存储字符串常量以及运行时如何访问它们吗 首先是强制性的 你不应该关心编译器如何做到这一点 任何基于编译器如何执行此操作的行为都是对无法保证的事物的危险依赖 并且可能会根据编译器的优化方式而改变 不要基于此编写
  • jQuery 未按正确顺序执行?

    我最近开始使用 jQuery 今天注意到它对我的行为有一个奇怪的问题 据我了解 JavaScript 是单线程的 因此它的所有操作都应该以 FIFO 为基础运行 然而 对我来说情况似乎并非如此 请考虑以下事项 设置如下 HTML 3 div
  • IntelliJ 中关于 Groovy 类的“类已存在”错误

    在 IntelliJ 2016 2 及之前版本 中 我们将 Groovy 类标记为红色 并显示错误 类已存在 我认为我们可以排除存根生成的原因 因为它已被停用 可能是我们的星座引起的 我们已将编译的 groovy 和 java 类包含在注册
  • 为什么 Spring AOP 不在运行时编织外部 jar?

    我有一个基于 Spring 3 构建的 java 应用程序 该项目有另一个 jar 作为依赖项 该依赖项包含一个 org aspectj lang annotation Aspect类 可以说 com aspectprovider aspe
  • SonarQube 无法启动 MariaDB 10

    我在 CentOS 7 中使用 yum 安装了 MariaDB SonarQube 抛出此异常 org sonar api utils MessageException Unsupported mysql version 5 5 Minim
  • 正则表达式字边界和特殊字符

    我有一个正则表达式来转义搜索字符串中的所有特殊字符 这很好用 但是我似乎无法让它与单词边界一起工作 例如 用干草堆 add or add 和针 正则表达式 gi匹配 然而正则表达式 b gi没有 关于如何实现这项工作有什么想法吗 Using
  • 无法建立 SSL 连接,如何修复我的 SSL 证书?

    我试图wget到我自己的盒子 它不能是 wget 中的内部地址 另一位开发人员是这么说的 当我得到时 我得到这个 wget http example com 2013 03 01 15 03 30 http example com Reso
  • Java中的正则表达式用于验证用户名

    我正在尝试使用 Java 中的用户名链 规则如下 长度 gt 3 有效字符 a z A Z 0 9 点 破折号和下划线 有人可以帮我解决正则表达式吗 尝试这个正则表达式 a zA Z0 9 3
  • 使用 MVVM 上下文菜单项命令绑定 WPF

    我知道这个问题已经在许多网站和 StackOverFlow 中以不同的方式被问过很多次 但我找到的所有答案都没有帮助我 准确地说 我无法理解它们并在我的应用程序中实现 所以我想从我的应用程序中添加一些代码 以便你们可以更好地帮助我 问题陈述
  • python 中 Burrows-Wheeler 的性能问题

    我试图实施布罗斯 惠勒在Python中进行转换 这是在线课程的作业之一 但我希望我已经做了一些工作才有资格寻求帮助 该算法的工作原理如下 获取一个以特殊字符 在我的例子中为 结尾的字符串 并从该字符串创建所有循环字符串 按字母顺序对所有这些
  • 为什么inline-block会导致这个div有高度呢?

    jsFiddle Demo 我似乎无法弄清楚为什么使用display inline block会导致这个 div 当包含元素被隐藏时 元素以某种方式获得高度 这不会发生在display block html div style displa
  • 在 hadoop 中并行运行作业

    我是 hadoop 新手 我已经设置了一个 2 节点集群 如何在 hadoop 中并行运行 2 个作业 当我提交作业时 它们按照 FIFO 顺序一项一项地运行 我必须并行运行这些作业 如何实现这一目标 谢谢 MRK Hadoop 可以配置多
  • 为什么 WaitForMultipleObjects 在使用多个线程句柄时会失败?

    在下面的测试程序中 每个测试线程将其句柄添加到全局TThreadList当它开始执行时 并在执行即将结束时从同一列表中删除其句柄 此外 出于测试目的 每个线程确保在主线程锁定列表之前添加其句柄 以复制其句柄并开始等待它们完成 这些线程还确保
  • 使用 find 和 sed 将文件名添加到文件开头

    使用以下内容 我将文件名添加到每行的前面 并将输出发送到单个文件 ls while read file do sed e s file g file gt out done 我想执行同样的操作sed替换但使用find and exec or
  • Xcode 4.2 iOS 5:来自 UITableView 的多个 Segues

    我现在开始使用适用于 iOS5 的 Xcode 4 2 有一些更改 我现在遇到一个问题 我无法找到解决方法 我正在使用 UITablwView 做一个示例 该视图以编程方式填充了 2 个部分 第 1 部分仅包含 1 行 第 2 部分包含 3
  • 访问Linux /dev/USB作为标准文件与USB设备通信

    我正在研究在 Linux 中与 USB 设备通信的方法 并且不想编写 Linux 内核驱动程序 我知道 libusb 存在并且是一个可以工作的用户空间库 但是我们的嵌入式设备不支持 usbfs 并且更改内核以添加支持确实很痛苦 所以我的问题