【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 //低電平觸發