ARM中有5種異常模式,有7種中斷源。這7種中斷源中有些中斷是我們希望發生的,但有些中斷是我們不希望發生的。
我們希望發生的中斷:
軟中斷:屬于svc模式,通過SWI指令便可以產生軟中斷,進入到svc模式。
irq中斷:屬于irq模式,當產生普通的外部中斷時,處理器便進入到IRQ模式。
fiq中斷:屬于fiq模式,當產生高優先級外部中斷時,處理器便進入到FIQ模式。
我們不希望發生的中斷:
復位:屬于svc模式,當系統上電時便會產生復位中斷,系統進入到svc模式。復位中斷不需要中斷返回。
取指中止中斷:屬于abt模式,當預取指發生錯誤時,便產生取指中止中斷,進入到abt模式。
數據中止中斷:屬于abt模式,當訪問數據存儲器時,便產生數據中止中斷,進入到abt模式。
未定義指令中斷:屬于und模式,當執行到一條未定義指令時,便產生未定義指令中斷,系統進入到und模式。
中斷的優先級:
ARM中有6個優先級。各個中斷的優先級順序如下:(1 6 6s 5 2 4 3)
復位: 1數據中止中斷:2fiq中斷:3irq中斷:4預取址中止中斷:5未定義指令中斷和軟中斷:6
關于各種中斷在中斷返回時還需要給LR減去一個不同的偏移量的問題我覺得沒必要深入研究了,這還要涉及到ARM指令的流水線技術,平時寫中斷代碼都是用C寫的,沒必要知道這個。用到時再去查表即可。

處理器在進入異常和退出異常時所做的工作:
進入異常時:
1、將要返回處的地址保存在對應異常模式的LR中。(復位不需要保存返回地址)
2、將cpsr的內容復制到對應異常模式的spsr中。
3、強制修改cpsr的內容,進入到相應異常模式以及根據需要修改某些位。
4、強制PC從相應的中斷向量地址處進行取址。
注:以上這些步驟都是有cpu自動完成的,也就是當有中斷產生時,硬件就會自動完成上述步驟。
退出異常時:
1、將LR中保存的地址賦給PC。
2、將spsr的內容恢復給cpsr。
3、將irq中斷禁止位清零。
注:只需要在異常處理程序中寫一句返回指令(如上面的表4.1所示)即可全部實現上述的步驟。
上一篇:基于嵌入式ARM微處理器的指紋識別方案
下一篇:一種基于ARM S3C2410X和Linux的嵌入式網絡攝像機設計
推薦閱讀
史海拾趣
在穩固了國內市場地位之后,Danube開始將目光投向了全球市場。他們通過設立海外辦事處、與當地企業合作等方式,積極開拓國際市場。Danube的產品憑借其卓越的品質和創新的設計,逐漸在國際市場上嶄露頭角。同時,公司還根據不同國家和地區的市場需求,推出了定制化的產品和服務,進一步增強了其市場競爭力。這些努力讓Danube在全球電子行業中逐漸嶄露頭角,成為了一家備受矚目的企業。
隨著全球對環保問題的日益關注,ECLIPTEK公司積極響應環保號召,將綠色環保理念融入其產品研發和生產過程中。公司采用環保材料和清潔能源,減少生產過程中的廢棄物和污染物排放。同時,ECLIPTEK還積極參與環保公益活動,推動電子行業的可持續發展。
艾譜科公司的創立源于其創始人對電子行業未來發展的獨到見解。在21世紀初,隨著數字化和智能化技術的飛速發展,創始人意識到電子行業即將迎來一場技術革命。他帶領團隊深入研究新興技術,并成功開發出一款具有劃時代意義的電子元件——高效能芯片。這款芯片憑借其出色的性能和穩定性,迅速獲得了市場的認可,為艾譜科公司的發展奠定了堅實的基礎。
艾譜科公司深知技術創新的重要性。為了保持產品的競爭力,公司不斷加大研發投入,積極引進高素質人才,并與國內外知名科研機構建立合作關系。在研發團隊的努力下,艾譜科不斷推出具有創新性的產品,如低功耗處理器、高速數據傳輸模塊等。這些新產品不僅提升了公司的市場競爭力,也為客戶提供了更加優質的產品選擇。
艾譜科公司深知技術創新的重要性。為了保持產品的競爭力,公司不斷加大研發投入,積極引進高素質人才,并與國內外知名科研機構建立合作關系。在研發團隊的努力下,艾譜科不斷推出具有創新性的產品,如低功耗處理器、高速數據傳輸模塊等。這些新產品不僅提升了公司的市場競爭力,也為客戶提供了更加優質的產品選擇。
BoostDC/DC變換器電路以其固有的升壓特性和電路拓撲的簡單而受到重視,并得到越來越多的使用。在許多場合都要求在低輸入電壓的情況下,輸出盡可能高的直流電壓。傳統的BoostDC/DC變換器只具有(D:占空比)的升壓比,因此有時不得不采用附加電路 ...… 查看全部問答∨ |
在計算機整合制造業(CIM)或工業自動化(IA)領域,許多控制設備進行長距離的數據傳送時有困難,抗干擾性能不好,多臺下位機設備聯網工作時軟件上需要進行地址判斷。針對此,我們開發了基于局域網(以太網)的步進電機控制模塊。該網絡控制步進電機 ...… 查看全部問答∨ |
HTML+JavaScript編寫的網頁能不能實現UDP通訊 小弟想編寫一個網頁,而這網頁能調用Windows的Sorket API實現UDP通訊。因為要把它寫到芯片的RAM中,所以只能是一個幾兆的文件,而且不能用到C++或JAVA等要安裝的程序。不知道有沒有可能實現,謝謝大家的幫助。… 查看全部問答∨ |
BITMAP bm; GetObject((HBITMAP)hBitmap, sizeof(BITMAP), &bm); 為什么獲取的bm.bmBits總為0? 但是bm.width 等其他可以獲取到值,求教這是為啥? 哪出錯了?… 查看全部問答∨ |
嘿 各位: 我定義了一個結構的二維數組,然后用一個函數進行初始化,但是用tornado怎么也編譯不過,但是在vc++6.0上面可以成功。請問是什么原因呢? typedef struct ...… 查看全部問答∨ |
|
我打開IAR,建立工程,在器件選擇上,找了半天也沒有找到這個LPC810, -----IAR V6.4 只有自己做SCF文件了 大家都用什么作編譯器呢?… 查看全部問答∨ |
|
經過幾天調試,終于把下位機部分完成。感受如下: 1 CCS的編譯器有點不好用,調試的時候對時序影響很大,這點不如IAR。 2 樓主電腦性能不是很好,CCS太占內存,經常卡。 3 對MSP430FR5969芯片不是很熟悉,對有些關于功耗上的認識不足。 節 ...… 查看全部問答∨ |