嵌入式Linux系统上的GPIO

时间:2011-12-09 13:37:12

标签: input embedded-linux interrupt gpio


我正在使用嵌入式Linux系统(内核2.6.31)。内置AT91SAM9G20芯片,部分引脚转发到外部。
现在我想将它们用作GPIO输入。
我阅读了关于通过文件系统使用GPIO的gpio.txt文档,这在这里工作得非常好。我将一些开关连接到gpio-pins,我可以在/ sys / class / gpio / gpioX / value中看到结果。但是现在我想在没有忙碌等待的情况下对变化做出反应。 (即回声“按下Switch1”)。我想我在这里需要中断,但是如果不编写我自己的内核驱动程序,我就无法找到如何使用它们。我是Linux和C的新手(我通常用Java编程),所以我也想通过sysfs来处理中断。但我的问题是,我的GPIO目录中没有“edge”文件(我想因为这只是内核版本2.6.33+)。是对的吗?而不是“边缘”我在那里有一个“uevent”文件,这在gpio.txt中没有描述
在gpio.txt文档中提到了一个标准内核驱动程序:“gpio_keys”。是否有可能将此用于我的问题?
我想使用此驱动程序比允许用户空间程序在Kerneltasks中操作更好。 我找到了很多用于编写自己的驱动程序的代码片段,但我甚至无法找出要包含的600个gpio.h文件中的哪个,以及如何引用该库(交叉编译器找不到gpio。 h文件)。

对不起newbe的问题,我希望你能给我一些建议。

提前致谢

1 个答案:

答案 0 :(得分:0)

有关如何执行此操作的示例,请参阅https://www.ridgerun.com/developer/wiki/index.php/Gpio-int-test.c。基本上,您遗漏的是使用selectpoll系统调用。