arm中斷是怎么實(shí)現(xiàn)的
首先,了解什么是中斷。中斷是指在CPU執(zhí)行某個(gè)程序時(shí),突然發(fā)生的一些事件需要CPU立即停止正在執(zhí)行的程序并去執(zhí)行該事件相應(yīng)的程序,這個(gè)過程叫做中斷。中斷是系統(tǒng)中一個(gè)重要的機(jī)制,能夠提高系統(tǒng)的實(shí)時(shí)性和可靠性。在ARM處理器中,中斷的實(shí)現(xiàn)主要涉及到下面的幾點(diǎn)。
一、中斷控制器
ARM系統(tǒng)中,中斷控制器是實(shí)現(xiàn)中斷的重要組成部分。中斷控制器的主要作用是監(jiān)控外部硬件中斷請求并向CPU發(fā)出中斷請求信號,同時(shí)還需要根據(jù)優(yōu)先級為CPU分配中斷請求。
ARM中斷控制器有兩種類型:簡單中斷控制器(Simple Interrupt Controller,簡稱SIC)和通用中斷控制器(Generic Interrupt Controller,簡稱GIC)。SIC適用于較為簡單的系統(tǒng),而GIC則適用于較為復(fù)雜的系統(tǒng),支持更多的中斷請求。具體地,GIC一般包含一個(gè)中央控制器,多個(gè)本地控制器和一個(gè)分配器。中央控制器負(fù)責(zé)處理高優(yōu)先級中斷故障,本地控制器負(fù)責(zé)處理本地外設(shè)的中斷,分配器負(fù)責(zé)將中斷請求分配給本地控制器。
二、中斷向量表
在ARM中,中斷向量表是用來存儲(chǔ)中斷服務(wù)例程(Interrupt Service Routine,簡稱ISR)的一組內(nèi)存區(qū)域。中斷向量表中有多個(gè)向量表項(xiàng),每個(gè)向量表項(xiàng)對應(yīng)一種中斷類型,其中存儲(chǔ)著相應(yīng)的中斷服務(wù)例程的入口地址。
中斷服務(wù)例程是中斷處理程序,用于響應(yīng)中斷事件。當(dāng)中斷請求發(fā)生時(shí),中斷控制器會(huì)向CPU發(fā)送中斷請求,此時(shí)CPU讀取中斷向量表中相應(yīng)的向量表項(xiàng)得到ISR的入口地址,然后跳轉(zhuǎn)到該地址執(zhí)行ISR。ISR會(huì)負(fù)責(zé)處理中斷事件,并將處理結(jié)果返回。
三、中斷的優(yōu)先級
在ARM中,設(shè)備的中斷請求有不同的優(yōu)先級,優(yōu)先級越高的請求將先被響應(yīng)。中斷優(yōu)先級是在編譯鏈接時(shí)靜態(tài)確定的,每個(gè)設(shè)備都有一個(gè)預(yù)設(shè)的中斷請求優(yōu)先級,這些優(yōu)先級由系統(tǒng)設(shè)計(jì)人員在初始化系統(tǒng)時(shí)進(jìn)行設(shè)置。
在中斷處理時(shí),如果有多個(gè)中斷同時(shí)發(fā)生,CPU會(huì)先執(zhí)行優(yōu)先級最高的中斷,而其他中斷則被掛起。一旦執(zhí)行完畢,CPU會(huì)返回到掛起的中斷程序中繼續(xù)執(zhí)行,如此循環(huán)直至所有中斷都被處理完畢。
四、中斷處理流程
當(dāng)外部設(shè)備發(fā)生中斷請求時(shí),中斷控制器會(huì)對請求進(jìn)行處理:
1、中斷請求的產(chǎn)生:外部設(shè)備發(fā)生某種事件的時(shí)候,向外部中斷控制器發(fā)出中斷請求。
2、中斷控制器的處理:中斷控制器接收到請求后,通過優(yōu)先級算法,確定優(yōu)先級最高的中斷,然后發(fā)送一個(gè)中斷請求到CPU。
3、中斷向量表的查詢:CPU響應(yīng)中斷請求后,根據(jù)請求所對應(yīng)的中斷類型,查詢中斷向量表得到對應(yīng)的ISR入口地址。
4、執(zhí)行ISR:CPU通過跳轉(zhuǎn)到ISR入口地址開始執(zhí)行ISR代碼,中斷服務(wù)例程開始處理中斷事件。
5、保存現(xiàn)場:ISR代碼中,對于需要暫停程序的部分,需要保存當(dāng)前程序現(xiàn)場以保證中斷處理結(jié)束后能正確恢復(fù)執(zhí)行的指令。
6、處理中斷:在ISR中,處理中斷的對應(yīng)邏輯,確定該中斷事件對應(yīng)的操作,并執(zhí)行相應(yīng)的操作完成該中斷的處理。
7、恢復(fù)現(xiàn)場:中斷處理結(jié)束后,ISR需要恢復(fù)保存的現(xiàn)場,以便中斷結(jié)束后程序能繼續(xù)執(zhí)行。
通過以上的流程,ARM的中斷處理功能才可以有效地響應(yīng)外部設(shè)備中斷請求,并完成對應(yīng)的中斷處理工作,起到保障系統(tǒng)實(shí)時(shí)性和可靠性的作用。
-
ARM
+關(guān)注
關(guān)注
134文章
9097瀏覽量
367560 -
中斷控制器
+關(guān)注
關(guān)注
0文章
59瀏覽量
9456
發(fā)布評論請先 登錄
相關(guān)推薦
評論