10

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

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

在此处输入图像描述

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

对于 EINTx 引脚:

当我打电话时

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

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

对于 GPxx 引脚: 与我需要 GPIO 引脚编号将其传递给这些函数的情况相同

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

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

我搜索了董事会文件和数据表,但它不包含有关如何获取这些数字的任何内容,关于在哪里查找的任何想法或帮助?

4

2 回答 2

9

您使用的嵌入式 Linux 应该有一个 GPIO 驱动程序,其中包含#defineGPIO 引脚的语句。然后,您可以使用以下方式获取特定 GPIO 的 IRQ 编号:

irq_num = gpio_to_irq(S3C64XX_GPP(8));

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

linux/arch/arm/mach-s3c6400/include/mach/gpio.h

在那里你会找到#define各种 GPIO 的所有语句。

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

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

于 2012-06-26T17:45:17.667 回答
0

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

这是一篇非常好的文章,可以帮助我让事情正常进行。通过内存映射注册访问 Beaglebone 的 GPIO

于 2015-08-27T13:36:28.633 回答