在Linux中,GPIO是一种通用的输入输出接口,可以用来连接各种外设,如LED灯、按键、传感器等等,而IRQ中断线则是用来处理硬件中断的。因此,将GPIO引脚映射成IRQ中断线,可以使Linux内核更加高效地处理外设的输入输出。 在本文中,我们将详细介绍gpio_to_irq函数的原理、实现方法以及使用场景。 一、gpio_to_irq函数的原理 ...
就是因为很多平台代码都将gpio_to_irq实现成为了函数,而非宏定义,这样就只能进行动态引用。但是,这在驱动编写中也不是什么问题,在上面已经说过,只要在设备资源生效前(设备注册前)将其irq动态赋值好就可以了,现有的很多成熟平台也是这样做的,并没有问题。这里我探究这个问题只是因为自己的好奇心而已。 本文版权归作者...
int gpio_to_irq(unsigned int gpio); 给定的gpio必须已通过gpio_request()获得并首先置于输入模式。如果有关联的中断号,它将作为gpio_to_irq()的返回值传回;否则将返回负错误号。一旦以这种方式获得,中断号就可以传递给request_irq()以设置中断的处理。 最后,GPIO 子系统能够通过 sysfs 层次结构表示 GPIO 线,...
(1)函数原型: int gpiod_to_irq(const struct gpio_desc *desc); (2)头文件: #include <linux/gpio/consumer.h> (3)参数: desc:指向 GPIO 描述符的指针。 (4)函数功能: gpiod_to_irq 函数用于将 GPIO 描述符转换为中断号。 (5)返回值: 返回值为整型,表示中断号。 如果成功将GPIO描述符转换为中断...
结论:函数不能在结构体声明等代码中静态使用,即使函数内容再简单。只能以动态方式使用函数。在Linux内核的omap2平台代码中也印证了这一点,许多设备资源都是在初始化函数中(即资源生效前)进行gpio_to_irq的动态赋值。 宏定义 使用宏定义代替上述代码中的plus_one函数 ...
第131章 GPIO子系统API函数的引入 事实上,在前面中断课程中,已经简单接触到了GPIO子系统中的API函数,其中用来获取gpio中断编号的gpio_to_irq函数就属于GPIO子系统中的API函数,在本章节中将对GPIO子系统进行简单的介绍。 在目前的Linux内核主线中,GPIO(通用输入/输出)子系统存在两个版本,这里将两个版本区分为新版本...
如果配置位输入模式,则可以使用函数gpio_get_value来获取GPIO口的状态。 如果需要把引脚配置为中断功能,则我们需要使用函数irq = gpio_to_irq(gpio)来获得irq号,根据irq号来进行适当的中断配置。 通过上面两种方式,我们可以发现Pinctrl的方式,其设备树复杂,但API接口简单,只需要通过函数pinctrl_select_state选择设备树中...
在init函数里,使用gpio需要先请求一个并配置它的模式,使用gpio_request_one()函数,三个参数分别是gpio号、模式和名称。 使用函数enable_irq()使能中断,参数是中断号,gpio对应的中断号可以使用gpio_to_irq()获取。 调用request_irq()配置中断的回调函数、触发方式、名称和传入参数。
int gpio_to_irq(unsigned gpio) //gpio中断,当产生中断时调用handle函数 int request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags, const char * name, void * dev) 以上就是有关“常用gpio相关的函数”内容,更多MTK技术资料,可查看深圳市新移科技有限公司官网。新移科技是一家专业从...