RK3588S|设备树下中断的使用|POLL 轮询|内核定时器的简易使用

一、设备树下的中断使用

1.首先需要在设备树文件中添加对应代码,

设备树文件路径:/home/ttlion/tools/RK3588S/kernel/arch/arm64/boot/dts/rockchip

然后将编译内核,将生成的boot,img文件下载到板子上 。

2.包含相关头文件

#include <linux/of_irq.h>

 

 3.通过平台设备总线获取中断号

int platform_get_irq(struct platform_device *dev, unsigned int num)
函数参数
        struct platform_device *dev: 来自于(*probe)函数的第一个形参
        num: 索引号, 我们现在只有一个, 填 0
函数返回值
        就是中断号

 

4.通过中断号注册中断

int __must_check
devm_request_irq(struct device *dev, unsigned int irq, irq_handler_t handler,
unsigned long irqflags, const char *devname, void *dev_id)
函数参数
        struct device *dev: 存在于(*probe)的第一个形参
        irq: 中断号
        irq_handler_t handler: 中断服务函数
        irqflags: 中断触发标志
        devname: 无所谓尽可能有意义
        dev_id: 传入中断服务函数的参数

 

 中断服务函数:

 5.释放中断

void devm_free_irq(struct device *dev, unsigned int irq, void *dev_id)
函数参数
        struct device *dev: 存在于(*probe)的第一个形参
        irq: 中断号
        void *dev_id: 传递给中断服务函数的参数

 

指的注意的是我们获取中断号 用两种方式都可以获取

①通过gpio号可以获取中断号,他们对应的注册中断服务函数和注销函数使用也都不相同

②直接通过平台设备添加中断号

 irq.c

我们并没有生成硬件设备,也没有main函数,通过按键的下降沿进行检测按键是否按下,仅仅挂载irq.ko就可以实现按键检测。

#include <linux/module.h>
#include <linux/kernel.h>
//杂项驱动编程相关头文件
#include <linux/miscdevice.h>
#include <linux/fs.h>
#include <linux/of.h>
#include <linux/of_gpio.h>
//中断相关头文件
#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值