exynos4412中斷程式設計

2021-07-25 21:55:20 字數 2312 閱讀 3080

我們知道,arm核能處理的異常有7種,但僅僅區分異常的種類顯然不能夠滿足需求。拿手機來說,觸控螢幕和按下音量鍵可能都是irq異常,但是arm並不能將他們區分開,而事實的情況是針對這兩種中斷,我們的處理方式顯然不同,為此就需要在soc中整合中斷控制器(generic interupt controller),它的核心功能就是進行中斷的排程和管理。

exynos4412中每種中斷都有自己的id用以標識,exynos4412支援三類中斷:software generated interrupt (sgi),private peripheral interrupt (ppi)和shared peripheral interrupt (spi)。所有的中斷可以按照優先順序可以劃分為0~255級,和大多數晶元一樣,數字越小,中斷的優先順序越高,同時發生的時候優先順序更高的中斷會被優先處理,當然,soc對每個中斷都有乙個預設的優先順序。

sgi表示軟體生成中斷,即上圖中cpu和gic通過乙個暫存器進行互動,讓gic給cpu(們)傳送乙個中斷(和arm彙編中的swi不是一回事!)這個過程並沒有真正的外設來觸發中斷。sgi中斷具有邊沿觸發的屬性,在多核soc中,乙個cpu可以通過觸發sgi的方式和其他cpu互動。互動的形式有兩種:1-n,n-n。前者表示只有乙個cpu響應這個sgi,此時需要提供機制來確定到底的哪個cpu接收並響應這個sgi。後者表示所有的cpu都將接收到sgi,當乙個cpu收到這個sgi之後,這個sgi在這個cpu的pending狀態就被清除了,但是在其他cpu的pending狀態還會繼續維持。exynos4412支援最多16個sgi

ppi表示該中斷只會送給某乙個cpu來處理,這是乙個外設中斷,有邊沿觸發和平台觸發兩種觸發方式。exynos4412支援最多8個ppi中斷

spi和ppi一樣是外設中斷,不同的是這個中斷可以被gic排程給任何cpu來處理。exynos4412支援最多128個spi中斷

gic負責維護每個中斷的狀態標誌,exynos4412的中斷有四個狀態:inactive,pending,active,active and pending。

inactive即該中斷既不是pending狀態也不是active狀態。

pending表示乙個從中斷源傳送到gic的外設中斷或者乙個sig中斷正在等待被gic傳送到目標cpu.

active表示乙個中斷正在被cpu 響應。

active and pending表示cpu正在響應乙個中斷,而gic還用乙個來自同乙個中斷源的中斷在排隊.

原始碼參考上面的中斷響應結構圖,為了響應乙個中斷,首先應該在外設層進行設定,諸如中斷觸發條件,中斷連線管腳等,然後需要在gic層次進行設定,比如中斷的排程方法,最後在cpu層次進行設定,比如哪些中斷可以進入cpu,哪些不行。

程式設計使用的原理圖如下,程式的目的是按下乙個按鍵,就有乙個相應的led閃爍一下。需要參考的資料有原理圖、exynos4412晶元手冊:

/* 57號中斷(即eint[9],按鍵k2,參考原理圖和晶元手冊中斷號表)的中斷處理*/

void irq57_handler(void)

void irq58_handler(void)

void do_irq(void)

deprint("switch over\n");

//將中斷號告訴gic,表示中斷處理完畢,可以將下乙個pending的中斷送入

cpu0.icceoir = cpu0.icceoir & (~(0x3ff))|irq_id;

}int main()

Exynos4412 系統移植

移植要點 1 環境搭建 2 boot配置 移植 編譯及燒寫 3 kernel配置 移植 燒寫及除錯 4 根檔案系統的製作gcc編譯流程 預處理 編譯彙編 鏈結核心子系統 程序管理 記憶體管理 檔案系統 裝置管理 網路交叉編譯工具鏈安裝步驟 1 解壓gcc 4.6.4.tar.gz到 toolchai...

Exynos4412啟動過程分析

學習exynos4412啟動流程前,我們先看看三星4412晶元啟動框圖 我們從圖中可以看到4412內部有64k的rom和256k sram,在rom中已經固化好了一段 當硬體上電後首先執行的就是這段 這段 三星起名為blo irom boot 其作用是初始化sram,並將emmc中256k 拷貝到s...

Exynos4412晶元的時鐘管理單元

本章介紹exynos4412晶元的時鐘管理單元 cmu cmu控制鎖相環 pll 並為exynos4412晶元中的各個ip 匯流排和模組產生時鐘。它們還與電源管理單元 pmu 通訊,以便在進入某個低功耗模式之前停止時鐘,以通過時鐘切換來降低功耗。1.exynos4412晶元的時鐘體系介紹 不同的模組...