8 6 ARM介面程式設計 中斷GIC

2021-10-06 20:41:15 字數 2208 閱讀 4141

管理這些中斷源,中斷擴充套件

管理中斷的優先順序

管理中斷源,報告中斷id

管理中斷的響應,遮蔽某些中斷

記錄中斷,中斷掛起

外部中斷

k2 gpx1_1 按下 0 彈起 1

gic中斷源表: 中斷源 與 中斷id 和gic管腳 一一對應

1、配置gpio : gpx1_1 k2

gpx1con [7:4] = 0xf 配置gpx1_1管腳為中斷功能

2、ext_int41con 管腳中斷觸發模式選擇

[6:4] = 0x3 上公升沿觸發

3、ext_int41_mask

[1] = 0 使能gpx1_1管腳中斷

4、ext_int41_pend 中斷掛起暫存器

[1] 中斷掛起位,當中斷發生時,硬體會自動設定為1

在處理完中斷事件後需要手動清除掛起。向該位寫入1

5、gic配置: 查表 (中斷源表) 得到 中斷id和port

id 57 port 25

6、gic埠層:

1)icddcr gic總中斷 = 1,開啟

2)中斷掩碼暫存器icdiser1_cpu0 [25] = 1 開啟中斷id57

3)優先順序配置暫存器 0 最高優先順序 255最低優先順序icdipr14_cpu0 [15:8] = 0x00

4)中斷目標cpu配置暫存器icdiptr14_cpu0 [15:8] = 0x1 僅送cpu0

5)埠中斷掛起暫存器icdicpr1_cpu0 [25] 當該位為1時,中斷被掛起了,寫1到對應的位,清除對應中斷

7、配置cpu介面層:

1)iccicr_cpu0 = 1 使能cpu相應中斷

2)優先順序過濾暫存器:iccpmr_cpu0 = 255 優先順序高於該值都可以送入到cpu

3)icciar_cpu0 [9:0] 中斷id響應暫存器 :在中斷發生時可以通過讀該暫存器得到中斷id

4)icceoir_cpu0 cpu中斷清除暫存器:需寫入中斷id以清除對應中斷。

使用k2作為外部中斷

1、開啟start.s檔案中的 irq_handler: irq模式中斷的中斷跳轉函式

2、gpio 配置

1)配置gpx1_1為外部中斷模式 - gpx1.con |= 0xf << 4;

2)配置管腳為上公升沿觸發方式 ext_int41_con = ext_int41_con & ~(0x7 << 4) | 0x3<<4;

3)使能gpio管腳中斷 ext_int41_mask &= ~(1<<1);

3、gic配置

1. 開總中斷 icddcr = 1;

2. 使能埠中斷 icdiser.icdiser1 |= 1<<25;

3. 設定埠優先順序 icdipr.icdipr14 &= ~(0xff<<8);

4. 設定中斷送cpu0 icdiptr.icdiptr14 = icdiptr.icdiptr14 & ~(0xff<<8) | 0x1<<8;

5. 設定cpu0使能中斷 cpu0.iccicr = 1;

6. cpu0中斷優先順序過濾暫存器 cpu0.iccpmr = 255;

4、 處理irq異常 — 編寫中斷處理函式 do_irq

1)獲取中斷id int id = cpu0.icciar;

2)分析id並處理

if

(id ==57)

3)清除cpu中斷掛起 cpu0.icceoir = id;

ARM中斷處理之GIC

收藏一篇gic的文章 gic中斷.本章的主要內容如下 中斷處理 interrupthandling 主要描述 n gic如何識別中斷 n 軟體如何通過程式設計gic來配置和控制中斷 n gic處理任意cpu inte ce中斷的狀態機 n cpu的異常模式下如何與gic互動 優先化 prioriti...

8 8 ARM介面程式設計 PWM

使用pwm,輸出50hz 波形 蜂鳴器 gpd0 0 pwm0 f 100mhz 1 配置pwm0 tcfg0 7 0 預分頻暫存器 0 255 0xff tcfg1 3 0 固定分頻 1 2 4 8 16 0x4 tcon 4 0 不使能死區 3 1 使能自動過載 2 1 開啟輸出使能 1 1 手...

ARM2200下的中斷程式設計一

arm中斷程式設計 一 前言 中斷的基本概念 1.在arm 中最多有32 個中斷請求 2.16 個向量irq 中斷 16 個向量中斷的vic 中斷號已經有系統定義好了。在p208 中可檢視 16個向量中斷有16 個優先順序,可動態分配給中斷請求 3.可產生軟體中斷。4.中斷的優先順序資源 中斷的優先...