Linux驱动开发-中断处理模型笔记 5

这篇博客详细介绍了Linux驱动开发中的中断处理模型,包括概念解析、IRQ号分配、中断结构体、中断驱动设计函数、使能与屏蔽中断的函数以及编程套路。还特别提到了在TQ210开发板上的测试注意事项,强调了Linux中断处理流程的独立性和无干扰特性。
摘要由CSDN通过智能技术生成

中断处理模型

1、概念解析

a) I/O操作的不确定因素以及处理器和I/O设备之间速度不匹配,设备往往通过某种硬件信号异步唤起处理器的注意

b) 这些硬件信号就称为 中断,每个设备都被分配了一个相关的标示符,别称为中断请求号(IRQ)

c) 处理器检测到某一 IRQ 号对应的中断产生时,它将停止工作并启动IRQ所对应的中断服务程序

d) 共享中断:多个设备使用同一个中断源;注销区分用设备号dev_id和 服务函数区分,共享中断的多个设备在申请中断时都要使用SA_SHIRQ标志,而一个设备以SA_SHIRQ申请某中断成功的前提是之前申请该中断的所有设备也都以SA_SHIRQ标志申请

2、分配IRQ(中断)号

a) 现代设备可直接分配

b) TQ210的硬件中断号是从32开始的,0-31的中断号分配给软中断

c) 现代设备能够响应对IRQ的查询(系统启动过程中由BIOS分配)

d) 系统中活动的IRQ列表:/proc/interrupts 文件中由记录

3、中断结构体详解

a) struct irq_desc 中的主要成员

i.  * @irq_data: per irq and chip data passed down to chip functions

ii.  * @action: the irq action chain,/* IRQ action list */

1. struct irqaction {

    irq_handler_t handler; /*用户注册的中断处理函数放在这里*/

    unsigned long flags; /*中断模式*/

    void *dev_id; /*设备号*/

    struct irqaction *next; /*将共享中断连接成单向链表*/

    int irq; /*中断号*/

    irq_handler_t thread_fn;

    struct task_struct *thread;

    unsigned long thread_flags;

    unsigned long thread_mask;

    const char *name; /*中断设备名*/

    struct proc_dir_entry *dir; /*pointer to the proc/irq/NN/name entry*/

}

4、Linux 中断驱动设计函数解析

a) 头文件:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值