我正在做一个项目,我需要在其中处理 Linux 中的中断。
我使用的电路板是 ARM9Board基于三星的s3c6410 MCU(arm 11处理器),具有以下I/O接口(interface):
如图所示,我有用于外部中断的 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 编号?
我搜索了董事会文件和数据表,但它不包含任何关于如何获得这些数字的信息,关于在哪里查看的任何想法或帮助?
最佳答案
您正在使用的嵌入式 Linux 应该有一个 GPIO 驱动程序,该驱动程序具有用于 GPIO 引脚的 #define
语句。然后,您可以使用类似以下内容获取特定 GPIO 的 IRQ 号:
irq_num = gpio_to_irq(S3C64XX_GPP(8));
该特定芯片的 Linux GPIO 库支持可在以下文件中找到:
linux/arch/arm/mach-s3c6400/include/mach/gpio.h
在那里你会找到各种 GPIO 的所有 #define
语句。
请参阅其文档中有关 GPIO 约定的部分:
关于linux - 如何知道 Linux 中特定引脚的中断/GPIO 编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11212637/