4

我正在使用嵌入式 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 文件) .

新手有问题,望大家多多指教。

提前致谢

4

1 回答 1

0

有关如何执行此操作的示例,请参见this 。基本上,您缺少的是selectorpoll系统调用的使用。

于 2011-12-09T18:12:41.753 回答