问题标签 [linux-device-driver]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4679 浏览

usb - 如何在 Linux 中开发 USB 大容量存储模拟器?

我是 USB 编程新手。我想在 Linux 中为 USB 大容量存储设备开发一个模拟器。如果您分享链接,我将不胜感激。

0 投票
6 回答
1029 浏览

io - 以零长度调用 write() 的后果是什么?

在 Linuxwrite()函数中相当高的级别,它过滤掉写入 0 长度缓冲区的请求。这是有道理的。谁愿意让操作系统浪费时间钻透层层以确定没有工作要做?

嗯……我。

它与Linux Kernel 中的 I2C 写确认轮询有关;并且发现如果握手错误时地址(在数据之前在总线上发送)将给出错误,则位碰撞 I2C 驱动程序将给出一个潜在有用的返回代码。

可以在地址之后发送虚拟数据,但不能使用我正在使用的设备。(也许我会尝试阅读......)。

所以问题是:如果内核允许零 (0) 长度写入,将会释放什么样的地狱?

0 投票
1 回答
2710 浏览

eclipse - linux usb-hid:将 libhid 库添加到 eclipse(C++) 或 netbeans IDE 或本机 input.h 或 hiddev.h?

我对libhid有疑问。

我发现有 2 方式 4 访问linux 中的 usb-hid

1) linux 默认库,如input.hhiddev.h和 ...

2)使用libhid

我发现 libhid 有些令人困惑并尝试使用 input.h 但我对那个 2 有问题。

我不知道如何从 ubuntu 获取有关我的设备的信息

我使用 open() 打开设备

然后使用 ioctl 获取信息

但它给了我错误的供应商和产品 ID

然后我尝试使用 libhid 但知道如何在 eclipse 或 netbeans 中使用 libhid (或任何其他库)

你能告诉我你是如何编译你的代码的,比如 eclipse 或 netbeans 或者只是使用终端和 gcc?或者如何使用 ioctl() 和 open() ?

我的整个示例代码:

0 投票
1 回答
2138 浏览

linux - 开放固件设备树概述/参考手册

我正在尝试为嵌入式 PowerPC 板设置驱动程序,而今天正确的方法是使用 OpenFirmware 设备树数据结构(.dtb 文件,从 .dts 文件编译而来)。创建树非常容易,但是如何让设备驱动程序找到它的节点和其中的数据?我还没有找到任何好的参考资料,像“Linux 设备驱动程序”这样的书籍在 x86 领域中的内容太多,对主要与基于 Power Architecture 的机器(Linux 内核中的 arch powerpc)相关的设备树有很大帮助术语)。

0 投票
6 回答
3469 浏览

linux - 我如何学习为 Linux 编写字符设备驱动程序?

如何在 Linux 中编写 char 设备驱动程序?

0 投票
2 回答
549 浏览

git - 外部可加载模块的 git commit 哈希

我正在 Linux 源代码树之外(以标准方式)开发一个 Linux 内核模块,并试图自动将驱动程序的 git commit 哈希包含在模块加载期间打印的版本字符串中。Makefile 使用命令计算 git 哈希

但这会获取 Linux 树的 git 哈希,而不是我的驱动程序。您能否告诉 git 在执行命令时查看特定目录,或者是否有更好的方法来解决此问题?

这是使用 git 1.5.4.5 和 Linux 2.6.28

0 投票
2 回答
1822 浏览

multithreading - Linux 内核线程之间的通信

我正在将一个应用程序/PCI 驱动程序从 vxWorks 移植到 Linux,如果可能的话,我希望保持相同的架构。当前驱动程序有 2 个使用消息队列相互通信的任务(线程)。是否有机制在内核线程之间进行通信?消息队列用于传递缓冲区地址和大小信息,因此任务可以使用 DMA 移动大量数据。

0 投票
1 回答
1213 浏览

linux - 编译linux内核时出错

我试图编译 linux 内核,但遇到了一些错误。在运行顶级 Makefile 时,我收到以下错误:-

在构建之前,我配置了使用 make oldconfig

似乎错误日志中的文件应该在配置期间生成。但不知何故,它们没有被生成,因此错误。搜索了网络,但仍然无法修复错误。我对内核编程很陌生。任何帮助将不胜感激。

谢谢。

0 投票
2 回答
4599 浏览

linux - Linux Kernel Module Programmers Guide 中 chardev.c 示例的问题

我从 lkmpg 编译并运行chardev.c示例,写入设备时收到意外错误:

模块写入函数如下所示:

我没有收到无效操作的预期错误,并且错误打印到 /var/log/messages。

我可以毫无问题地从设备读取,收到预期的结果:

设备 /dev/chardev 是使用以下命令手动创建的:

这是怎么回事?

- 编辑 -

显然,当我 mknod 创建设备时,它最终具有以下权限:

一旦我这样做sudo chmod a+w /dev/chardev了,司机就会按预期工作。

但是,人们说这样做是不正确的。

什么是正确的行动方针,为什么?

0 投票
1 回答
633 浏览

linux-kernel - 为外部内核模块运行 ctags(或从单独的相关项目中提取标签)

我正在构建一个“外部”模块(设备驱动程序),即它不在 Linux 内核源代码树中,而是在一个单独的不相关源代码树中。

我想使用 ctags 浏览通过头文件从内核中提取的变量/函数声明和定义。

例如假设我有:

并且我已经make tags为内核运行,那么如何对我的模块运行 ctags 以便它从不同目录树中有效的单独项目中获取标签,在这种情况下是 Linux 内核源代码?