一,中断原理及注册与系统架构
1,bootloader(启动装载)、linux内核(kernel)与文件系统(rootfs)。
2,应用工程师(c标准库函数, linux API应用实现,QT,miniGUI等)
3,固件工程师(linux移植, L设备驱动程序设计,Bootloader)
4,中断是由软件或者硬件触发的一种事件,引起CPU的注意力。
5,中断控制器:将所有中断发起的中断,通过中断控制器的变成,可以控制每个中断源的优先级,也可以关闭和打开一个中断的操作。
6,中断产生:在硬件电路中,中断产生只有两种:电平触发方式和边沿触发方式。
exp:ARM案例分析如下:(硬件中断流程)
GIC版本(V1---V4)
GICV1:最多支持8个PE:可处理多达1020个中断源:案例扩展支持:ARM Cortex-A5/A9/A7
GICV4:包括V1 V2 V3所有功能,直接注入虚拟中断:ARM cortex-A53 A74
7,硬件中断号(物理中断号),linux为系统中注册每一个中断源,都会分配一个唯一编号来识别此中断(IRQ编号)。
8,IRQ编号从0-31,那CPU收到中断之后,软件根据0-31中断号是分不清从哪一个终端过来,需要中断控制器本身的编号 + IRQ编号。
9,中断注册:linux中断子系统向驱动程序提供注册中断的API。 Request_irq(), request_threaded_irq()
10,中断子系统层次结构如下:
硬件封装层所使用的体系架构相关的源码,直接用struct irq_chip对中断控制器的接口抽象。
驱动开发不需要关注底层实现,只需要学会一部分API即可:
中断描述符(irq_desc)