【发布时间】:2011-06-22 14:42:21
【问题描述】:
在我的 AT91SAM9RL-EK ARM 板上,运行 Linux 2.6.30 buildroot,我有以下内容。
cat /proc/interrupts
CPU0
1: 6475 AIC at91_tick, rtc0, ttyS0
10: 11 AIC mmc0
13: 4 AIC atmel_spi.0
18: 23533 AIC tc_clkevt
20: 0 AIC atmel_tsadcc
22: 0 AIC atmel_usba_udc
23: 0 AIC atmel_lcdfb
24: 0 AIC AC97C
40: 1 GPIO atmel_usba_udc
47: 0 GPIO mmc0
64: 6 GPIO Right Click
65: 10 GPIO Left Click
右击和左击是我板上的按钮。现在我想修改按钮的中断处理程序(例如,它们在单击时给我一个输出)。
在哪里可以找到按钮的中断处理程序或驱动程序(或它们的源文件)?
或者我可以编写自己的驱动程序并为按钮注册它们(当我在用户空间中时)以及如何注册?
这是关于 PIO 的电路板指南中的一些数据
IO... Per.... Application Usage............................................ Pow. by
PB0 TXD3 USER’S PUSH BUTTON 1 PB0 as LEFT CLICK VDDIOP
PB1 RXD3 USER’S PUSH BUTTON 2 PB1 as RIGHT CLICK VDDIOP
【问题讨论】:
-
我们将不胜感激。在另一条评论中,您说“按钮工作正常”。很可能 GPIO 已经注册为输入设备,它们有一个自定义驱动程序,或者状态(和边缘触发)可通过 gpiolib (/sys/class/gpio) 提供给用户空间。
-
在 fs 上,gpio-keys 位于 /sys/bus/platform/devices/leds-gpio/ 和 sys/class/input/input0/ 但我不知道如何与他们
-
# ls input0: capabilities id name subsystem device input:event0 phys uevent event0 modalias power uniq -
好吧,我又聪明了一点。我可以轮询 /dev/input/event0 以读取按钮。但也许有更好的方法来代替轮询。
标签: c linux embedded arm interrupt