Linux设备驱动 - 中断

1,思路

  • 按键按下(产生了中断)→跳转到异常向量入口,执行中断函数

  • 中断函数要做什么:
    1.保护现场
    2.执行中断处理函数
    3.恢复现场
    我们需要做什么?
    学会使用中断注册函数,了解注册中断相关的函数和结构体

  • 中断注册函数:request_irq的5个参数

  • request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags, const char *name, void *dev)
    在这里插入图片描述
    参数1:irq,中断号。(和平台架构相关,结合datasheet以及平台文件)
    参数2:中断处理函数
    参数3:中断标记。上升/下降沿,高/低电平……
    参数4:中断名字。cat /proc/interrupts
    参数5:使用设备的设备结构体或者NULL。free_irq
    free_irq(irq,*dev_id)

request_irq的调用

4412上外部中断号如何对应:(IRQ_EINT(x)和datasheet对应)
HOME和BACK
EXYNOS4_GPX1[1]和EXYNOS4_GPX1[2]
→KP_COL[1]和KP_COL[2]
→XEINT_9和XEINT_10
IRQ_EINT(9)和IRQ_EINT(10)

准备工作:
在平台文件中注册设备:keyirq
添加:
struct platform_device s3c_device_keyirq_ctl = {
.name = “keyirq”,
.id = -1,
};
&s3c_device_keyirq_ctl,

重新编译烧写内核
发布了31 篇原创文章 · 获赞 9 · 访问量 2348

猜你喜欢

转载自blog.csdn.net/m0_46291920/article/details/104577269