我使用C++ library (easyBlack)通过/ dev / mem处理GPIO。
正如我在章节" 25.3.3中断特征"中看到的那样。 " AM335x SitaraTM处理器 - 技术参考手册"
为了在GPIO引脚上发生定义的事件(电平或逻辑转换)时向主机处理器产生中断请求,GPIO配置寄存器必须按如下方式编程:
•必须在GPIO_IRQSTATUS_SET_0和/或GPIO_IRQSTATUS_SET_1寄存器中启用GPIO通道的中断。
•必须在GPIO_LEVELDETECT0,GPIO_LEVELDETECT1,GPIO_RISINGDETECT和GPIO_FALLINGDETECT寄存器中选择输入GPIO触发中断请求的预期事件。
直到没事,但我能找到的所有文档都是基于linux内核头文件(" linux / gpio.h"和" linux / interrupt.h"),它似乎不能用于用户空间程序,只能用于模块。或examples使用内核驱动程序并在sysfs中监视状态文件以实现中断。这可能有效,但速度很慢,需要大量资源。
除了使用多线程查看是否更改所需引脚的值之外,还有其他选择吗? (这个其他库怎么样 - github.com/jackmitch/libsoc)
也许将easyBlack编译为内核模块?
谢谢!