中断驱动就是 获取外设的数据内容,通过中断信号进行获取
在驱动中设置外设为中断模式:当外设产生设定的特定信号(就是中断)
在驱动中实现中断处理操作(函数)
1)CPU初始化I/O并启动第一次I/O操作。
2)CPU去忙别的事情。
3)当I/O完成时,CPU将被中断。
4)CPU处理中断。
5)CPU恢复被中断的程序。
一、中断号
中断号就是一个号码,中断控制器管理所有中断的编号,外设连接的引脚就对应了引脚的中断控制器的中断号
驱动如何获取中断号:
1、宏定义
IRQ_EINT(中断号)
2、设备树中描述,然后再驱动中获取
arch/arm/boot/dts/exynos4412-fs4412.dts
在设备树中添加硬件信息(包括中断)
硬件:
key3 ------GPX1_2--------EINT10
在设备树中:arch/arm/boot/dts/exynos4x12-pinctrl.dtsi
gpx1: gpx1 {
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
interrupt-parent = <&gic>;
interrupts = <0 24 0>, <0 25 0>, <0 26 0>, <0 27 0>,
<0 28 0>, <0 29 0>, <0 30 0>, <0 31 0>;
#interrupt-cells = <2>;
};
在设备树中添加自己的硬件设备信息---添加key3节点-----描述当前设备的的信息内容(中断号)
arch/arm/boot/dts/exynos4412-fs4412.dts:实现硬件描述(中断号)
key3_node {
compatible = "key3";
interrupt-parent = <&gpx1>;
interrupts = <2 4>;//26
};
重新编译设备树
make dtbs
cp arch/arm/boot/dts/exynos4412-fs4412.dtb /tftpdir/
二、总结
- 中断驱动可以提高CPU的使用效率