首页
学习
活动
专区
工具
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
您找到你想要的搜索结果了吗?
是的
没有找到
领券