學習ARM開發(18)

上一次已經了解ARM的中斷處理過程,並且可以設置中斷函數,那麽它這樣就可以工作了嗎?答案是否定的。因爲S3C44B0還有好幾個寄存器是控制中斷是否打開的。 這幾個寄存器如下:

1. 程序狀態寄存器(CPSR).

這個寄存器裏有兩位可以控制是否回應FIQ或IRQ中斷的設置。如果把這兩位全部置1,就全部不回應中斷了。後面會用到這兩位來關中斷的,在RTOS裏就需要使用到這兩位關中斷作爲臨界區。

2. 中斷控制寄存器(INTCON)

這個寄存器只使用到低3位:0,1,2。
第0位設置爲1時,不使用FIQ的中斷;設置爲0時,就是使用FIQ的中斷。
第1位設置爲1時,不使用IRQ的中斷;設置爲0時,就是使用IRQ的中斷。
第2位設置爲1時,使用非向量的方式IRQ中斷,設置爲0時使用向量方式IRQ中斷。

3. 中斷模式寄存器(INTMOD)

這個寄存器設置26個中斷源使用中斷的方式。當相應位設置爲0時,就表示使用IRQ中斷方式,當相應位設置爲1時,就表示使用FIQ的中斷方式。

4. 中斷屏蔽寄存器(INTMSK)

這個寄存器是用來指定那位可以回應中斷的。其中第26位比較特別的,它是全局中斷屏蔽位。如果設置它爲1,就全部中斷都不回應了。0到25位就是26個中斷源的屏蔽位,如果設置爲1,就表示不回應中斷,設置爲0就表示回應中斷。

5. 清除中斷位寄存器(I_ISPC)

當中斷發生之後,還想再次發生中斷。那麽就需要清除相應的中斷位,這時就使用I_ISPC中斷寄存器。
當設置這個寄存器相應位爲1時,就清除了相應的中斷位,下一個中斷到來時,就可以再次回應了。

通過設置上面幾個中斷寄存器,就可以讓S3C44B0的中斷工作了。中斷是非常重要的,一定要熟練地使用。不管什麽樣的CPU,都是使用這樣的東西。中斷是現代高速CPU與低速設備之間對話的機制,沒有這個機制,就根本不能讓高速的CPU高效地工作了。

 

更多相關文章
  • 學習ARM開發(6)上一次,說到要學習ARM彙編,好,現在就開始.目前我的引導程序是在UBOOT1.1.2上修改過來的,大家可以下載UBOOT的源程序,也許你們會問在那裏有下呢?這個問題不用我回答了,用GOOGLE,直接找u-boot,就可以找到了.由于這個引導程序是從u-boot1.1.2修改過來 ...
  • 學習ARM開發(5)蔡軍生 2005/07/16 寫于深圳上一次說到要學習UBOOT的代碼,但在看之前,首先要知道目標機器的編程資源,這裏的資源,是指S3C44B0所提供的運行程序的資源,對任何嵌入式軟件開發,都首先要對硬件有一個很好的了解,這跟PC機的編程是大不一樣的.因爲PC機都已經發展了30多 ...
  • 對于希望學習ARM彙編的同學而言, 購買ARM開發板進行板上實測無疑是一個有效的方法,不過購買ARM開發板需要一筆費用,而且每次測試都需要連接開發板,比較麻煩.如果有一個ARM的模擬器就好了,抱著這樣的想法在網上找了一下,發現了Skyeye,還是我們中國人開發的.通過Skyeye,可以直接在一台PC ...
  • 學習ARM開發(9)上一次把引導的彙編看完,已經准備C的運行環境,下面就開始學習C的源程序,從start.S文件裏到跳文件lib_arm/board.c裏運行./*引導程序從彙編start.S裏跳到這裏執行.蔡軍生 2005/07/19*/void start_armboot (void){    ...
  • 學習ARM開發(3)上一次說到裝好LINUX後,就要裝開發環境了,因爲編譯在LINUX下,當然是用GCC,但這個GCC跟LINUX本身帶的又不一樣.目標代碼是ARM,而LINUX帶的,一般是I386的目標代碼.因此,一定要安裝ARM的編譯器.到網上下載 arm-elf-tools-20030314. ...
  • 學習ARM開發(2)今天是星期天,剛好在家裏休息.又是學習ARM的大好時機了.早上起得很早,因爲都想著怎麽樣搞好這個ARM開發環境,總是心急的.搞得睡覺,也睡不好.立即把電腦打開,爲了更加快點,把家裏兩台電腦都打開,用一台比較快的電腦裝LINUX.目前因爲兩台電腦都已經安裝WINDOWS系統,又裝了 ...
  • 第12期師徒架構學習班開始報名我們社區開展一個師徒性質的培訓班,深入學習java架構.類似大學導師帶研究生的學習模式,適合在職者.導師給學生安排課題.分享視頻資料,學生通過參考資料學習並完成作業.我們的教學方法是以自學爲主,輔導爲輔助,在實踐中積累經驗掌握原理.主要方向是JAVA架構,深層次java ...
  • 第11期導師架構學習班開始報名我們社區開展一個師徒性質的培訓班,深入學習java架構.類似大學導師帶研究生的學習模式,適合在職者.導師給學生安排課題.分享視頻資料,學生通過參考資料學習並完成作業.我們的教學方法是以自學爲主,輔導爲輔助,在實踐中積累經驗掌握原理.主要方向是JAVA架構,深層次java ...
  • 學習過osgi 發布bundle 先按模塊把專案拆分出來分成一個一個的bundle,依賴其他包也是通過bundle.如果bundle與bundle之間有業務關系就采用spring(具體名字有點忘了...) 提供一個服務出來.所有bundle采用virgo服務熱部署....最後運行起來. 每個bund ...
一周排行