如何知道linux中特定引脚的中断/ GPIO编号

时间:2012-06-26 17:17:19

标签: linux embedded arm embedded-linux interrupt

我正在做一个需要在Linux中处理中断的项目。

我正在使用的主板是基于三星(arm 11处理器)的s3c6410 MCU的ARM9Board,它具有以下I / O接口:

enter image description here

如图所示,我有外部中断的EINTx引脚和GPIO引脚作为GPIO引脚,我不介意使用其中任何一个,但我没有它们的数字!

对于EINTx引脚:

当我打电话

int request_irq(unsigned int irq, void (*handler)(int, struct pt_regs *), 
unsigned long flags, const char *device); 

我需要中断号将其作为函数的第一个参数传递,那么如何获得irq数,例如EINT16引脚?

对于GPxx引脚: 同样的故事,我需要GPIO pin nuumber将其传递给那些功能

int gpio_request(unsigned gpio, const char *label);
int gpio_direction_input(unsigned gpio);
int gpio_to_irq(unsigned gpio);

即如何知道GPP8引脚的GPIO编号?

我搜索了董事会文件和数据表,但它没有包含任何关于如何获得这些数字,任何想法或帮助的地方?

2 个答案:

答案 0 :(得分:8)

您正在使用的嵌入式Linux应具有GPIO驱动程序,该驱动程序具有GPIO引脚的#define语句。然后,您可以使用以下内容获取特定GPIO的IRQ编号:

irq_num = gpio_to_irq(S3C64XX_GPP(8));

以下文件中提供了对该特定芯片的Linux GPIO lib支持:

  

的linux /拱/臂/马赫 - S3C6400 /包含/马赫/ gpio.h

在那里,您将找到各种GPIO的所有#define语句。

请参阅其文档中有关GPIO约定的部分:

http://www.kernel.org/doc/Documentation/gpio/gpio.txt

答案 1 :(得分:0)

我在GPIO引脚上做了一些工作,但是它在不同的主板AM335x上。只是为了让你知道,很少有办法做到这一点。我们使用的方法之一是使用内存板访问(写入或读取)GPIO引脚。

这是一篇非常好的文章,可以帮助我完成工作。 Register access to the GPIOs of the Beaglebone via memory mapping