首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

5.分析内核中断运行过程,以及中断3大结构体:irq_descirq_chip、irqaction(详解)

本节目标:    分析在linux中的中断是如何运行的,以及中断3大结构体:irq_descirq_chip、irqaction 在裸板程序中(参考stmdb和ldmia详解): 1.按键按下, 2...., { r0-r12,pc }^ //^表示将spsr的值复制到cpsr,因为异常返回后需要恢复异常发生前的工作状态 在linux中: 需要先设置异常向量地址(参考linux应用手册P412): 在ARM...而linux内核中异常向量基地址是0xffff0000(虚拟地址), 位于代码arch/cam/kernel/traps.c,代码如下: void __init trap_init(void) {...*desc = irq_desc + irq; // irq_desc是个数组(位于kernel/irq/handle.c) if (irq >= NR_IRQS) desc = &bad_irq_desc...代码如下: desc->handle_irq(irq, desc);//相当于执行irq_desc[irq]-> handle_irq(irq, irq_desc[irq]); 它会执行handle_irq

1.5K80
您找到你想要的搜索结果了吗?
是的
没有找到

Linux系统驱动之GIC驱动程序对中断的处理流程

资料下载 coding无法使用浏览器打开,必须用git工具下载: git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git...多级中断控制器处理流程 参考资料: linux kernel的中断子系统之(七):GIC代码分析 使用逐步演进的方法才能形象地理解。 1....一级中断控制器处理流程 对于irq_desc,内核有两种分配方法: 一次分配完所有的irq_desc 按需分配(用到某个中断才分配它的irq_desc 现在的内核基本使用第1种方法。...假设要使用UART模块,它发出的中断连接到GIC的32号中断,分配的irq_desc序号为16 在GIC domain中会记录(32, 16) 那么注册中断时就是:request_irq(16, ......假设这4个irq_desc的序号为100~103,在GPIO domain中记录(0,100) (1,101)(2,102) (3,103) 对于KEY,注册中断时就是:request_irq(102

2.2K20
领券