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