ARM學習之中斷體系結構

2021-08-07 04:57:12 字數 1636 閱讀 6010

今天下午和晚上研究了一直在研究s3c2410中斷體系結構,雖然以前老師上課也接觸過,考試也考過,但仔細研究起來,還是有不少收穫的。現記述如下:

1.什麼是中斷?

答:中斷是cpu保證併發程式的一種機制。它使得cpu在執行程式的時候能夠響應異常的情況發生。

其實,在cpu在執行的過程中,如何知道各類外設發生了某些沒預期的事,比如說串列埠接受到了資料、usb介面中插入了裝置、按下了某個按鍵。有兩種方法,乙個是前面所說的中斷、另乙個就是輪詢方式。(就是不斷的while迴圈查詢)。從某種程度上說,這兩種方式其實是一樣的。前者是把查詢的時間跨度縮小到每條指令執行結束後,即當某事件發生時,硬體會設定某個暫存器;cpu在每執行完一條指令時,通過硬體檢視這個暫存器,來「查詢」是否有關注的事件發生。

2.s3c2440基本的中斷處理流程是什麼?

答:如下圖所示。

我是這樣簡單理解的:s3c2440有兩種型別的中斷源。子中斷源和普通中斷源。型別相似的子中斷源若有中斷請求發生,會聚合成乙個「大的」普通中斷源(不知道這樣形容,貼切不)。當然這是在子中斷源沒有被遮蔽的條件下。這個子中斷源的中斷請求要想成功,還是挺困難的,得經過兩道坎。首先,子中斷源遮蔽暫存器不能遮蔽它,然後中斷遮蔽暫存器也不能遮蔽它才有可能得到cpu的「眷顧」(當然,它還得和一大批同時請

求的其他請求源競爭)。 普通的中斷源相當於「妃子」,只要有請求,而且優先順序較高就能得到cpu的「青睞」。還有乙個皇后級別的中斷源,叫做快速中斷源。她比較牛x,只要請求,cpu就會「臨幸」。(好似宮鬥劇啊)。

3.當發生中斷後,具體我們該如何程式設計呢?

答:當乙個異常發生時,這時arm 的cpu將自動完成如下事情(要記住,是自動):

(1)、lr暫存器儲存目前指令的下一條指令位址。一般是(pc+4或pc+8)

(2)、將cpsr的值複製到spsr。

(3)、將cpsr的工作模式位設定為異常對應的工作模式。

(4)、轉去執行此異常對應的向量表中的相應指令(並不只是中斷處理函式)。

對於我們來說,我們需要在異常向量表對應的位址處完成以下事情:

(1)、儲存執行的環境。此處所說的執行環境指的是前一模式中的執行環境。雖然這是已經進入到異常模式,但是由於異常模式和普通的模式都共享一些暫存器,此處異常模式下的的這些暫存器還儲存的上前一模式中的資料,所以得儲存至堆疊。

(2)、進入isp函式。即自己所寫的中斷處理函式,處理中斷。

(3)、在中斷處理函式中,要判斷是哪個中斷源發出的請求(如果中斷源很明確,則不用判斷)、正式處理中斷請求(接受資料、傳送資料、點亮燈等等)、最後別忘了要清除中斷源。

(4)、中斷返回,恢復儲存的執行環境。

4.中斷向量表是什麼?

答:中斷向量表就是發生中斷後,cpu就會根據中斷向量表找到斷向量入口位址,在此位址上繼續執行。以前上課的時候,覺得好神秘,我去,硬體方式實現的中斷向量表。現在看看,其實也不是很難(至少arm9是這樣)。簡單來說,中斷向量表也不是乙個真正的表,它只是事先規定好了,如果發生這個中斷就去這個位址上繼續執行。看起來像是映**一張表,可以把它看成一張邏輯的表。 發生中斷後,cpu就去實現規定好的位址上繼續執行。所以呢,你就必須在這個位址上寫上你的中斷處理函式。如果這個位址上什麼也沒有,那麼程式就要死翹翹了。

ARM學習之中斷體系結構

1.什麼是中斷?答 中斷是cpu保證併發程式的一種機制。它使得cpu在執行程式的時候能夠響應異常的情況發生。其實,在cpu在執行的過程中,如何知道各類外設發生了某些沒預期的事,比如說串列埠接受到了資料 usb介面中插入了裝置 按下了某個按鍵。有兩種方法,乙個是前面所說的中斷 另乙個就是輪詢方式。就是...

ARM學習之ARM體系結構

本文主要針對arm cortex a9處理器的研究。arm採用的是32位的risc架構 資料型別 byte 位元組 8bit halfword 半字 16bit v4以上版本 word 字 32bit arm核心只提供fiq和irq兩種中斷向量。arm支援大端模式和小端模式兩種儲存方式。工作模式 u...

ARM體系結構

arm是 advanced risc machines 高階精簡指令系統處理器 的縮寫,是arm公司提供的一種微處理器智財權 ip 核 arm既可以認為是乙個公司的名字,也可以認為是對一類微處理器的通稱,還可以認為是一種技術的名字 arm微處理器的特點 1 體積小 低功耗 低成本 高效能 2 支援t...