【TINY4412】LINUX学习笔记:(3)中断
宿主机 : 虚拟机 Ubuntu 16.04 LTS / X64
目标板[底板]: Tiny4412SDK - 1506
目标板[核心板]: Tiny4412 - 1412
LINUX内核: 4.12.0
交叉编译器: arm-none-linux-gnueabi-gcc(gcc version 4.8.3 20140320)
日期: 2017-8-13 09:14:53
作者: SY
简介
ARM
中断控制器又称 GIC(Global Interrupt Controller)
,支持三种中断类型:
SGI
:Software Generated Interrupt
SPI
:Shared Peripheral Interrupt
:支持多处理器PPI
:Private Peripheral Interrupt
:支持单处理器独占
设备树
中断配置通过设备树方式:
keypad: keypad@100A0000 {
compatible = "samsung,s5pv210-keypad";
reg = <0x100A0000 0x100>;
interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clock CLK_KEYIF>;
clock-names = "keypad";
status = "disabled";
};
interrupts
字段表示中断配置,第1个字节表示全局共享中断
/* interrupt specifier cell 0 */
#define GIC_SPI 0
#define GIC_PPI 1
第2个字节表示中断号,在参考手册:9.2.2 GIC Interrupt Table
可以找到
第3个字节表示触发方式,和电路设计有关
#define IRQ_TYPE_NONE 0 //无中断
#define IRQ_TYPE_EDGE_RISING 1 //上升沿触发
#define IRQ_TYPE_EDGE_FALLING 2 //下降沿触发
#define IRQ_TYPE_EDGE_BOTH (IRQ_TYPE_EDGE_FALLING | IRQ_TYPE_EDGE_RISING) //上升沿或下降沿触发
#define IRQ_TYPE_LEVEL_HIGH 4 //高电平触发
#define IRQ_TYPE_LEVEL_LOW 8 //低电平触发