问题标签 [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.
linux - 为什么我不能在 Linux 2.6.26 中注册边沿触发中断?
第一次发帖,如有冒犯请见谅。
我正在为 2.6.22 到 2.6.26 的 MPC83xx 构建的 linux 内核上移植自定义 CPLD 驱动程序,并且收到了意外的糟糕消息。该驱动程序适用于 .22 内核,但 .26 内核在我调用 request_irq 时阻塞。有谁知道为什么行为会发生变化,或者更好的是,我需要做些什么来解决它?
我已经追踪到调用 kernel/irq/manage.c 的糟糕的来源,其中desc->chip->enable(irq)
调用了 in setup_irq()
,并且看起来启用的函数指针在调用ipic_set_irq_type()
arch/powerpc/sysdev/ 时被清除了ipic.c. 不幸的是,我不知道为什么。
我已经包含了 Oops 和复制问题的示例内核模块。
哎呀-
模块 -
谢谢您的帮助。几天来,我一直在努力解决这个问题,并对任何建议持开放态度。
linux-device-driver - 何时最好在 Linux 中实现 I2C 驱动模块
我目前正在处理在运行 Linux 的嵌入式系统中连接到 I2C 总线的两个设备。我正在为第一个设备(相机)使用现有驱动程序。对于第二个设备,我已经成功实现了一个用户空间程序,我可以通过它与第二个设备进行通信。到目前为止,这两种设备似乎可以愉快地共存。然而,几乎所有的 I2C 设备都有自己的驱动模块。因此,我想知道驱动模块的优点是什么。我看了下面的线程...
...但没有结论。
因此,与用户空间实现相比,编写 I2C 驱动程序模块有什么优势?
问候,斯特凡
linux - Linux 内核/驱动程序开发新手
最近,我开始开发运行 linux 的嵌入式设备的驱动程序。
到目前为止,我只阅读了有关 linux 内部结构的信息。
由于没有驱动程序开发方面的经验,我发现迈出第一步有点困难。
- 我已经下载了内核源代码(v2.6.32)。
- 我已阅读(略读)Linux 设备驱动程序 (3e)
- 我在 StackOverflow 上阅读了一些相关的帖子。
- 我知道 linux 有一个“单片”的方法。
- 我已经构建了内核(在 menuconfig 等中包含现有驱动程序)
- 我知道 kconfig 和 makefile 文件的基础知识,所以这应该不是问题。
有人可以描述内核源代码中各个目录的结构(即相互链接)吗?换句话说,给定一个源代码文件,
它会引用哪些其他文件来获取相关代码(“#include”-s 提供了部分想法)
有人可以帮助我获得更好的主意吗?
任何帮助将不胜感激
谢谢你。
linux-kernel - 是否可以从 Linux (ioctl) 的内核空间调用用户空间回调函数?
是否可以在 Linux 中扩展 ioctl 接口,以便用户空间应用程序可以向内核空间驱动程序发送指向函数的指针?
我特别想以用户可控的方式处理流,但在内核中进行处理。这些操作可以附加到内核模块,但这将使开发更容易,因为我不需要在开发过程中弄乱内核。
更具体地说,这将是一个过程:
- 驱动程序将数据读取到缓冲区。
- 数据由这些用户定义的函数处理。
- 完成了更多处理,可能使用一些硬件块。
- 数据由用户空间应用程序使用。
linux-device-driver - 如何在驱动程序代码中注册一个函数作为它的 ISR
根据我之前关于 Linux 内核开发的问题得到的反馈,
我编写了一个驱动程序(在 Linux 内核 v2.6.32 中),通过将其与现有驱动程序进行比较并大量“借用”其代码。司机注册很好。init() 和 probe() 工作正常。我还可以访问外围设备寄存器。:-)
但是我对IRQ/ISR有点模糊。外围设备是输入设备,并在 GPIO 引脚上引发中断。
我如何从当前状态继续处理 IRQ 并执行我的 ISR 功能?
linux - 如何在 linux 驱动程序中注册挂起回调?
我正在编写一个 linux 驱动程序,我想注册一个回调函数,以便在系统进入睡眠状态时调用。执行此操作的 api 是什么?
谢谢。
linux - Linux 键盘事件捕获 /dev/inputX
我试图捕捉键盘事件。例如,我想从头开始研究一个键盘记录器。经过2个小时的战斗,我发现了以下内容
但是当我试图
它什么也没有产生没有输出
经过多一点搜索现在我在想 Xorg 中的某些东西可能会阻止它。
那么还有更多信息吗?最后说我如何从该文件中读取输入?还是有其他方法可以捕获键盘事件?
networking - Depmod - rt73 模块中未解析的符号
我正在尝试在具有 2.4.37.9 内核的 Red Hat Linux 7.1 机器上为我的无线网卡 (D-Link DWL-G510) 安装 linux 驱动程序。我从sourceforge站点下载了串行猴子驱动程序,并且能够成功编译该模块。但是,每当我执行“make install”时,make 脚本都会执行“depmod -a”命令,然后会出现以下消息:“/lib/modules/2.4.37.9/extra/rt73.o 中的未解析符号”。
然后我执行了“depmod -e”命令来显示未解析的符号,它指示以下信息:
request_firmware_Rsmp_38ce5074
release_firmware_Rsmp_33934162
我对上述信息做了一个 grep,它显示没有引用它的源文件。我在谷歌上搜索它并没有返回任何结果。任何人都可以帮忙吗?
linux-kernel - Linux 设备驱动程序能否在 device_remove() 函数中等待 DMA 终止?
我为 PCI 设备编写了 Linux 设备驱动程序。该设备执行 DMA 操作。当 DMA 操作运行时程序崩溃时会出现问题。
实际上,当崩溃时,该device_remove()
函数被系统调用(就像close()
被调用一样)。该函数对 PCI 设备使用的内存区域进行清理,正确释放分配的内存。我的意思是它在正常情况下可以正常工作。
但是,如果 DMA 正在运行,当它实际终止时,它将无法执行 DMA 清理,因为它不再有权访问已释放的设备数据。一个简单的解决方案是在 close() 函数中等待。(这是我的理解,但也许DMA函数的最后一部分永远不会执行?)
device_remove()
为 DMA 实际终止设备驱动程序的(aka close()
) 功能而哀号是个好主意吗?有没有其他方法来处理这个问题?
linux - framebuffer not available
I am trying to run an application that uses framebuffer on 2.6.31-14-generic #48-Ubuntu.
All need to do is to install a framebuffer device to get rid of the following error.
I googled through and found some resources indicating to do that on Grub2 I got nothing though I followed them seamlessly.
Any ideas?
Thanks