我正在使用一个带有嵌入式 Linux(内核 2.6.31)的系统。
内部是一颗AT91SAM9G20芯片,部分引脚转发到外部。
现在我想将它们用作 GPIO 输入。
我阅读了关于通过文件系统使用 GPIO 的 gpio.txt 文档,直到这里它都运行良好。我将一些开关连接到 gpio 引脚,我可以在
/sys/class/gpio/gpioX/value
中看到结果。但现在我想对变化做出反应,而不用忙着等待循环。 (即回声“按下 Switch1”)。
我想我在这里需要中断,但如果不编写自己的内核驱动程序,我无法找到如何使用它们。我对 Linux 和 C 比较陌生(我通常用 Java 编程),所以我也想通过 sysfs 处理中断。但我的问题是,在我的 GPIO 目录中没有“edge”文件(我猜是因为这是从内核版本 2.6.33+ 开始的)。是对的吗?我在那里有一个
uevent
文件,而不是“边缘”,gpio.txt
中没有描述。
在 gpio.txt 文档中提到了一个标准内核驱动程序:“gpio_keys”。可以用它来解决我的问题吗?
我想使用这个驱动程序比允许用户空间程序操纵内核任务要好。 我找到了很多用于编写自己的驱动程序的代码片段,但我什至无法找出要包含的 600 个
gpio.h
文件中的哪些,以及如何引用该库(交叉编译器无法找到 gpio. h 文件)。
新手提问,希望大家多多指教
提前致谢