【TINY4412】LINUX學習筆記:(3)中斷

【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) ,支持三種中斷類型:

  • SGISoftware Generated Interrupt
  • SPIShared Peripheral Interrupt:支持多處理器
  • PPIPrivate 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               //低電平觸發
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章