我有几个分配给 gpios 的已注册中断以及用户空间中的应用程序。
如何通知应用程序发生了中断以及发生了哪个中断?
fasync 可能适用于这个目标,但我可以找到如何将信息从中断处理程序发送到用户空间应用程序的示例。
如果您能提供一些有用的示例,那就太好了。
提前致谢。
您不需要花哨的内核到用户空间的通信。用户空间应用程序可以使用 Sysfs 访问 GPIO。阅读有关它的内容Documentation/gpio.txt.
首先,像这样导出 GPIO 引脚(实际数量取决于您的设置):
# echo 23 > /sys/class/gpio/export
这将导出 GPIO 引脚 #23,从而创建/sys/class/gpio/gpio23
.
设定其方向:
# echo in > /sys/class/gpio/gpio23/direction
如果硬件 GPIO 控制器支持中断生成,则驱动程序也应该支持它,您将看到/sys/class/gpio/gpio23/edge
。写要么rising
, falling
or both
到此文件以指示将创建“用户空间中断”的信号沿。现在,要中断,请使用poll(2)系统调用/sys/class/gpio/gpio23/value
。然后,当poll
调用unblocks,读取新值(/sys/class/gpio/gpio23/value
),这将是'0'
or '1'
(ASCII)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)