2

需要你对 lirc 的帮助。我想使用 lirc 来解码 ir 信号。我正在使用基于 Cortex A8 和 2.6.37 内核的定制板,IR 是通过串行端口接收的。当我按下红外遥控器的按钮时,我可以看到 UART 中断正常出现。

但是,当我尝试使用 device=all 或 device=serial 运行配置脚本并按照 lirc.org 上的安装页面中所述运行 make 和 make install 时,它会向我发送内核配置无效的错误。

但是我仍然能够生成加载内核模块所需的 .ko 文件(lirc_dev 和 lirc_serial),但无法插入 lirc_serial 模块,因为我使用的是具有 mmio 的端口并且 lirc 使用的端口是 io 映射的。我的虚拟地址是 0xfa022000,物理地址是 0x48022000(使用 ttyO1)。我可以为这个地址使用 lirc 吗?我需要对代码进行任何更改吗?我也不能直接安装在我正在使用的板上,因为由于板上存在的东西很少,我无法在板上构建内核源代码。所以我在其他机器上运行设置并交叉编译 arm。所以我无法将配置文件放置在正确的位置,也没有创建节点(/dev/lirc0)。我应该手动创建节点还是插入模块来完成工作?在插入模块之前,我还需要将配置文件放在正确的位置吗?它还与内核版本有任何依赖关系吗?请建议我自己交叉编译和加载内核模块的步骤,并让我知道需要存在哪些所有 conf 文件或其他文件才能使事情正常工作。我真的非常感谢你的帮助。在过去的两周里,我一直在尝试。问候哈曼。我真的非常感谢你的帮助。在过去的两周里,我一直在尝试。问候哈曼。我真的非常感谢你的帮助。在过去的两周里,我一直在尝试。问候哈曼。

4

1 回答 1

0

如果 lirc_serial 加载成功,应该自动创建 /dev/lirc0。如果未创建,则模块未正确加载。

lirc_serial 确实适用于 mmio - 请参阅“iommap”模块的参数。您需要将其设置为 1 才能使 mmio 工作。

您还需要使用 'io' 和 'irq' 参数来设置您的地址和 irq。

我正在使用带有 Cortex A9 CPU 的 UDOO 板,并且可以从 /proc/tty/driver/IMX-uart 获取我的 mmio 和 irq 信息。

不过我的内核更新了——它是 3.0.35,我不确定所有这些是否适用于你的情况。

我最终能够加载 lirc_serial,但它仍然无法正常工作,所以我不得不将我的 IR 接收器直接连接到 GPIO 并基于 lirc_rpi 编写我自己的内核驱动程序以使其工作:http://funny-embeddings.blogspot .com/2013/12/udoo-adding-ir-and-building-lirc-kernel.html

于 2013-12-26T00:42:27.500 回答