Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何知道linux中特定引脚的中断/GPIO号_Linux_Embedded_Arm_Embedded Linux_Interrupt - Fatal编程技术网

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

如何知道linux中特定引脚的中断/GPIO号,linux,embedded,arm,embedded-linux,interrupt,Linux,Embedded,Arm,Embedded Linux,Interrupt,我正在做一个项目,我需要在Linux中处理一个中断 我使用的主板是基于三星公司的s3c6410 MCU(arm 11处理器),具有以下i/O接口: 如图所示,我有用于外部中断的EINTx引脚和作为GPIO引脚的GPxx引脚,我不介意使用它们中的任何一个,但我没有它们的编号 对于EINTx引脚: 当我打电话时 int request_irq(unsigned int irq, void (*handler)(int, struct pt_regs *), unsigned long flags

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

我使用的主板是基于三星公司的s3c6410 MCU(arm 11处理器),具有以下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 pin编号将其传递给这些函数的情况相同

int gpio_request(unsigned gpio, const char *label);
int gpio_direction_input(unsigned gpio);
int gpio_to_irq(unsigned gpio);
i、 我如何知道GPP8引脚的GPIO号


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

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

irq_num=gpio_to_irq(S3C64XX_GPP(8))

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

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

在这里,您可以找到各种GPIO的所有
#define
语句

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


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


这是一篇非常好的文章,可以帮助我使事情顺利进行

随板提供的内核在/drivers/GPIO处有一个GPIO驱动程序,但没有一个c文件有一个#define用于管脚,我找到了/include/linux/gpio.g,但它只包含gpio_request和gpio_to_irq等函数的声明,但没有定义它们。我已经更新了我的答案,提供了关于该板附带的发行版的具体信息。哇,非常感谢,先生。。我不知道他们是怎么把这些信息埋在内核那么深的地方的,但我想下次我应该做一个更难的搜索:)@embedded.kyle:我怎么知道这个函数类似于主板上的S3C64xxGPP()?@mps这真的取决于你使用的Linux发行版,所以你应该参考该发行版的文档。但是一般来说,您应该找到
gpio.h
文件,它应该告诉您需要知道的一切。我还更新了链接到
gpio.txt
,因为它被破坏了。这对你也应该有一些用处。