![基于ARM9的中斷控制器的程序設計與實現(xiàn)_第1頁](http://file4.renrendoc.com/view/5774a1f9d5738273f5d84dd821a28271/5774a1f9d5738273f5d84dd821a282711.gif)
![基于ARM9的中斷控制器的程序設計與實現(xiàn)_第2頁](http://file4.renrendoc.com/view/5774a1f9d5738273f5d84dd821a28271/5774a1f9d5738273f5d84dd821a282712.gif)
![基于ARM9的中斷控制器的程序設計與實現(xiàn)_第3頁](http://file4.renrendoc.com/view/5774a1f9d5738273f5d84dd821a28271/5774a1f9d5738273f5d84dd821a282713.gif)
![基于ARM9的中斷控制器的程序設計與實現(xiàn)_第4頁](http://file4.renrendoc.com/view/5774a1f9d5738273f5d84dd821a28271/5774a1f9d5738273f5d84dd821a282714.gif)
![基于ARM9的中斷控制器的程序設計與實現(xiàn)_第5頁](http://file4.renrendoc.com/view/5774a1f9d5738273f5d84dd821a28271/5774a1f9d5738273f5d84dd821a282715.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
嵌入式系統(tǒng)開發(fā)與應用工程實習(報告)第22頁共21頁PAGE目錄1功能描述 11.1課題設計題目 11.2課程功能描述及任務要求 12基礎知識 12.1中斷流程 12.2數(shù)據(jù)結(jié)構(gòu) 22.2.1中斷優(yōu)先級產(chǎn)生模塊 22.2.2中斷優(yōu)先級 22.3寄存器工作原理 32.3.1程序狀態(tài)寄存器PSR 32.3.2中斷模式 32.3.3中斷請求寄存器 32.3.4中斷屏蔽寄存器 42.4實驗詳解 42.4.1源請求寄存器SRCPND 42.4.2中斷模式寄存器INTMOD 52.4.3中斷屏蔽寄存器INTMSK 52.4.4中斷請求寄存器INTPND 72.4.5中斷偏移寄存器INTOFFSET 72.4.6子中斷源請求寄存器SUBSRCPND 82.4.7子中斷屏蔽寄存器INTSUBMSK 82.5實驗環(huán)境 93系統(tǒng)設計 93.1系統(tǒng)總體設計 93.2主函數(shù)設計 103.3中斷處理函數(shù)設計 103.4中斷初始化及LED控制設計 123.5各種寄存器的設計 134實驗截圖 134.1硬件連接 134.2ADS中工程的相關(guān)配置 134.3AXD的相關(guān)配置 154.4工程JTAG調(diào)試執(zhí)行 175總結(jié) 19致謝 20參考文獻 211功能描述1.1課題設計題目《基于ARM9中斷控制器的程序設計與實現(xiàn)》1.2課程功能描述及任務要求這次的嵌入式系統(tǒng)實習,我們的選題是基于ARM9中斷控制器的程序設計與實現(xiàn)。課題要完成的功能是,通過產(chǎn)生不同的外部中斷控制發(fā)光二極管的亮滅,通過LED來指示發(fā)生了哪個外部中斷。要很好地完成本次實習,中斷控制的基本原理必須非常熟悉。S3C2410中斷控制器接收56個中斷源的中斷請求。中斷源由如DMA控制器、UART、IIC等內(nèi)部外設提供。這些中斷源中,UARTn和EINTn中斷是以或邏輯輸入到中斷控制器的。當從內(nèi)部外設和外部中斷請求引腳接收到多個中斷請求時,經(jīng)過中斷仲裁后,中斷控制器向ARM920T請求FIQ或者IRQ中斷。仲裁過程與硬件優(yōu)先級有關(guān),仲裁結(jié)果寫入中斷請求寄存器。中斷請求寄存器幫助用戶確定哪個中斷產(chǎn)生。課題設計的目的是,通過實習,使我們對基于ARM微處理器的嵌入式系統(tǒng)開發(fā)的過程有更多的解,更好地掌握嵌入式系統(tǒng)開發(fā)的知識。能夠針對某一嵌入式微處理器進行實際開發(fā),鍛煉實踐動手能力。并能夠熟練掌握ARM中斷處理過程,能夠在中斷處理程序控制跑馬燈,掌握ARM中斷控制器的工作機制及原理,熟悉JXARM2410的中斷處理的工作原理。2基礎知識2.1中斷流程圖2-12.2數(shù)據(jù)結(jié)構(gòu)2.2.1中斷優(yōu)先級產(chǎn)生模塊其中32個中斷請求的優(yōu)先級邏輯有由個rotationbased仲裁位組成:6個一級仲裁位和一個二級位,如圖2-2所示。圖2-22.2.2中斷優(yōu)先級每個仲裁器可以處理6個中斷請求,基于一位仲裁器模式(ARB_MODE)和兩位選擇信號(ARB_SEL):如果ARB_SEL位為00B,優(yōu)先級順序是:REQ0,REQ1,REQ2,REQ3,REQ4,andREQ5。如果ARB_SEL位為01B,優(yōu)先級順序是:REQ0,REQ2,REQ3,REQ4,REQ1,andREQ5.如果ARB_SEL位為10B,優(yōu)先級順序是:REQ0,REQ3,REQ4,REQ1,REQ2,andREQ5如果ARB_SEL位為11B,優(yōu)先級順序是:isREQ0,REQ4,REQ1,REQ2,REQ3,andREQ5.注意:REQ0總是具有最高優(yōu)先級,REQ5總是具有最低優(yōu)先級,改變ARB_SEL位只能改變REQ1-REQ4的優(yōu)先級。如果ARB_MODE位被置1,ARB_SEL不會自動改變,這會使仲裁器處于固定優(yōu)先級模式(注意即使處于這種模式,還是可以通過手動改變ARB_SEL位來配置優(yōu)先級)。如果ARB_MODE位被置1,ARB_SEL改變以變換優(yōu)先級,例如,如果REQ1被服務,ARB_SEL自動變成01把REQ1變?yōu)樽畹蛢?yōu)先級,ARB_SEL的詳細規(guī)則如下:如果REQ0或REQ5被服務,ARB_SEL位不會變?nèi)绻鸕EQ1被服務,ARB_SEL位置01B如果REQ2被服務,ARB_SEL位置10B如果REQ3被服務,ARB_SEL位置11B如果REQ4被服務,ARB_SEL位置00B2.3寄存器工作原理2.3.1程序狀態(tài)寄存器PSR如果PSR中的F位被置1,CPU不接收FIQ快速中斷,同樣如果I位PSR被置1,CPU不接收IRQ中斷,因此中斷控制器能夠通過將PSR的F和I位和相應的INTMSK中的位清零來接收中斷。2.3.2中斷模式ARM920T有兩種中斷模式:FIQ和IRQ。在中斷請求時所有的中斷源決定使用哪個模式。2.3.3中斷請求寄存器S3C2410有兩種中斷請求寄存器:源請求寄存器(SRCPND)和中斷請求寄存器(INTPND)。這些請求寄存器揭示了一個中斷是否正在請求。當中斷源請求中斷服務時SRCPND寄存器中的相應位肯定被置1,然而,中斷仲裁之后則只有INTPND寄存器的某1位被自動置1。即使該中斷被屏蔽,SRCPND寄存器中的相應位也會被置1,但是INTPND寄存器將不會改變。當INTPND寄存器的某位被置1,且I位或者F位清零時中斷服務即開始。SRCPND和INTPND寄存器能夠被讀和寫,因此服務函數(shù)必須通過向SRCPND和INTPND中相應位寫入“1”2.3.4中斷屏蔽寄存器通過中斷屏蔽寄存器的哪個屏蔽位被置1可以知道哪個中斷被禁止。如果INTMSK的某個屏蔽位為0,此中斷將會被正常服務。如果中斷源產(chǎn)生了一個請求,SRCPND中的源請求位被置位,即使相應屏蔽位為1。2.4實驗詳解中斷控制器有5個控制寄存器:源請求寄存器、中斷模式寄存器、屏蔽寄存器、優(yōu)先級寄存器和中斷請求寄存器。所有中斷請求首先寄存入SRCPND,它們基于中斷模式寄存器分為兩組:FIQ請求和IRQ請求。多IRQ的仲裁過程基于優(yōu)先級寄存器。2.4.1源請求寄存器SRCPNDSRCPND由32位組成,每一位與一個中斷源相關(guān)。如果某個中斷源產(chǎn)生中斷請求并等待中斷服務,某位將會被置1。相應地,寄存器也指出了哪個中斷源在請求服務。注意SRCPND中的每個位是由中斷源自動置位的,與INTMASK寄存器無關(guān)。此外,SRCPND寄存器不會被優(yōu)先級邏輯影響。在中斷服務函數(shù)中必須清零SRCPND的相應位,否則,中斷控制器會認為同一個源的另一個中斷,換句話說,如果SRCPND的某個位仍然為1,中斷控制器會認為又有一個有效的新的中斷在請求服務。清零相應位的時機由用戶需求決定。如果想要從同一個中斷源接收另外一個有效的中斷,應該在剛進入ISR的時候清零,然后使能中斷。可以通過向SRCPND寫入數(shù)據(jù)來清零某位,但是注意只有SRCPND中為1的位會被寫成寫入數(shù)據(jù)中的位,而SRCPND中為0的位不會改變(如圖2-3)。圖2-32.4.2中斷模式寄存器INTMOD此寄存器由32個對應每個中斷源的位組成。如果某位被置1,相應的中斷被設置為FIQ模式,否則,設置為IRQ模式。注意:只有1個中斷源能夠被設置為FIQ模式,因此INTMOD中只有1位能被置1。2.4.3中斷屏蔽寄存器INTMSK每個中斷源對應一個位,如果某位被置1,CPU不會響應相應的中斷請求(注意即使這種情況下,SRCPND的位還是會置1),如果被置0,相應中斷請求可以被響應。相關(guān)圖見圖2-4、圖2-5和圖2-6。圖2-4圖2-5圖2-62.4.4中斷請求寄存器INTPND每個位顯示了相應的中斷請求(沒有被屏蔽并等待中斷服務)是否具有最高的優(yōu)先級。由于INTPND寄存器處于優(yōu)先級邏輯之后,只有1位能被置1,只有這個中斷請求向CPU產(chǎn)生IRQ中斷。在中斷服務程序中,可以通過讀此寄存器來知道哪個中斷源正在被服務。同SRCPND寄存器一樣,寄存器必須在中斷服務程序中清零(SRCPND清零之后)。每個中斷源對應一個位,如果某位被置1,CPU不會響應相應的中斷請求,如果被置0,相應中斷請求可以被響應。(見圖2-7)圖2-7注意:1、如果FIQ模式中斷發(fā)生,INTPND的相應位不會turnon,因為INTPND寄存器僅在IRQ模式下有效。2、清除INTPND寄存器時的注意事項:INTPND寄存器通過寫1來清零某位。如果某位從1寫成0,INTPND寄存器和INTOFFSET寄存器可能有非期望值出現(xiàn)。因此,請不要向INTPND寄存器中為1的位寫入0,最方便的清除INTPND寄存器的方法就是向INTPND寄存器中寫入當前INTPND寄存器的值如:INTPND=INTPND。2.4.5中斷偏移寄存器INTOFFSETINTOFFSET寄存器中的值表示哪個中斷請求在INTPND寄存器之中。此位將會在清零SRCPND和INTPND之后自動清零。注意:FIQ中斷不影響此寄存器,因為它只在IRQ模式下有效。2.4.6子中斷源請求寄存器SUBSRCPND可以通過向SUBSRCPND寫入數(shù)據(jù)來清零某位,但是注意只有SUBSRCPND中為1的位會被寫成寫入數(shù)據(jù)中的位,而SUBSRCPND中為0的位不會改變。圖2-8顯示了寄存器的相關(guān)位。圖2-82.4.7子中斷屏蔽寄存器INTSUBMSK此寄存器有11位,每一位對應一個中斷源,如果某位被置1,說明此位對應的中斷請求不被CPU響應(注意即使在這種情況下,SUBSRCPND寄存器還是被置1的),如果屏蔽位為0,則相應中斷請求能被響應。圖2-92.5實驗環(huán)境軟件:ADS1.2環(huán)境;硬件:1、PC機,奔騰Ⅳ以上CPU,512MB以上內(nèi)存,80G以上硬盤;2、JXARM2410教學實驗平臺。3系統(tǒng)設計3.1系統(tǒng)總體設計系統(tǒng)總體設計流程,如圖3-1外部中斷2外部中斷2處理程序外部中斷3處理程序開始結(jié)束初始化中斷選擇中斷返回,繼續(xù)循環(huán)等待While循環(huán)等待圖3-13.2主函數(shù)設計主函數(shù)就是通過一個While(1)死循環(huán)來等待中斷的發(fā)生,main函數(shù)調(diào)用了一個delay延時子程序。相關(guān)代碼如下:#include"register.h" //包含register.h和comm_fun.h兩個頭文件#include"comm_fun.h"/*延時*/voiddelay(intmsec){ inti,j; for(i=1000;i>0;i--) for(j=msec*10;j>0;j--) /*donothing*/;}/*主函數(shù)*/intmain(){ while(1) //while函數(shù)死循環(huán)等待外部中斷的發(fā)生 {delay(5); //delay延時,但什么都不做,就是等待中斷的發(fā)生}return0;}3.3中斷處理函數(shù)設計當INTPND的某位被置1,且中斷模式寄存器中斷INTMOD的I位或者F位清零時,中斷服務即開始。在中斷處理函數(shù)中,必須通過向SRCPND和INTPND中相應位寫1來清除中斷請求條件,對于SRCPND,通過向相應位寫1來清除中斷請求條件。而對于INTPND來說,最好最方便的辦法就是向中INTPND中寫入當前INTPND的值,即INTPND=INTPND。相關(guān)代碼如下:#include"register.h" //包含register.h和comm_fun.h兩個頭文件#include"comm_fun.h"/*系統(tǒng)中斷處理函數(shù)*/voidhandle_irq(){unsignedlongirqOffSet=INTOFFSET;//通過中斷偏移寄存器//取得中斷信號,用irqOffSet存儲 if(2==irqOffSet) //如果是外部中斷2鍵被按下,則執(zhí)行下面的程序 { Led_Display(2);//調(diào)用sys_init.c中顯示LEDLed_Display()子程序 //LED2點亮delay(100); } elseif(3==irqOffSet) //如果是中斷3鍵被按下,則執(zhí)行下面的程序 { Led_Display(4); //調(diào)用sys_init.c中顯示LED的Led_Display()子程序 //LED3點亮 delay(100); } SRCPND&=(1<<irqOffSet); //清除中斷源,寫1清0 INTPND=INTPND; //清除中斷結(jié)果,寫1清0}3.4中斷初始化及LED控制設計中斷初始化,INTMSK的相應位如果置0,則允許中斷;如果相應位置1,即使發(fā)生了中斷,中斷控制器將屏蔽該中斷請求CPU不會響應該中斷。在中斷初始化函數(shù)中,將INTMSK2、3位置0,使能相關(guān)外部中斷。0x10000000對應的值的4、5、6、7位分別控制LED1、LED2、LED3、LED4的亮滅。LED初始化,傳入值15,即data=00001111B,執(zhí)行Led_Display()函數(shù)后,output_0x10000000最后的值為00001111B,此時4個LED燈均被點亮。當外部中斷2觸發(fā)時,Led_Display()函數(shù)的參數(shù)值為2時,data=00000010B,output_0x10000000最后的值為11011111B,此時第二個LED燈均被點亮。當當外部中斷3觸發(fā)時,Led_Display()函數(shù)的參數(shù)值為3時,data=00000011B,output_0x10000000最后的值為10111111B,此時第三個LED燈均被點亮。相關(guān)代碼如下:#include"register.h" //包含register.h和comm_fun.h兩個頭文件#include"comm_fun.h"unsignedcharoutput_0x10000000=0xff;externvoidLed_Display(intdata){ output_0x10000000&=(~0xf0); output_0x10000000|=(((~data)<<4)&0xf0); *((unsignedchar*)0x10000000)=output_0x10000000;}intled_init(){ Led_Display(15); delay(10); return0;}voidirq_init(){ INTMSK&=~(3<<2);}3.5各種寄存器的設計(1)LED控制寄存器和數(shù)據(jù)寄存器的定義#defineGPBCON (*(volatileunsignedlong*)0x56000010) #defineGPBDAT (*(volatileunsignedlong*)0x56000014) (2)中斷屏蔽寄存器、中斷請求寄存器、三種外部中斷寄存器的定義 #defineEINTMASK (*(volatileunsignedlong*)0x560000A4)#defineEINTPEND (*(volatileunsignedlong*)0x560000A8)#defineEXTINT0 (*(volatileunsignedlong*)0x56000088)#defineEXTINT1 (*(volatileunsignedlong*)0x5600008C)#defineEXTINT2 (*(volatileunsignedlong*)0x56000090)4實驗截圖4.1硬件連接通過ADT2000仿真器把計算機與JXARM9-2410-1ARM9嵌入式教學實驗平臺建立連接,打開試驗箱電源。4.2ADS中工程的相關(guān)配置(1)首先,打開ADS軟件,如圖4-1所示。圖4-1ADS軟件初始界面(2)打開工程,如圖4-2所示。圖4-2打開工程(3)設置工程。先點擊左邊的“ARMLinker”,然后選擇右邊的“Output”并在“ROBase”中設置為“0x30000000”,如圖4-3所示。圖4-3ARMLinker的Output選項卡配置(4)然后再點擊Layout頁,進行目標文件的設置。如圖4-4所示。圖4-4ARMLinker的Layout選項卡配置4.3AXD的相關(guān)配置(1)調(diào)試工程。從開始菜單啟動“AXDDebugger”。啟動后的界面如圖4-5所示。圖4-5ADX的初始界面(2)選擇“Options”菜單中的“ConfigureTarget···”,在彈出的對話框中選擇“Add”按鈕,保證ADTIDE已經(jīng)安裝,添加adtrdi列表文件。如圖4-6所示。圖4-6添加adtrdi列表文件(3)回到“ChooseTarget”對話框,在“TargetEnvironments”列表中選中剛才添加的列表文件,點擊“Configure”按鈕進行處理器類型、存儲器存儲方式等的配置。如圖4-7所示。圖4-7處理器類型等的配置(4)如果設置正確并且硬件連接正確,串口連接成功,將出現(xiàn)如圖4-8所示的提示。圖4-8串口連接成功4.4工程JTAG調(diào)試執(zhí)行(1)點擊ADS軟件中的Debug
按鈕,開始JTAG調(diào)試。如圖4-9所示。圖4-9開始調(diào)試(2)如果編譯成功,將出現(xiàn)如圖4-10所示的提示,程序運行正常,在斷點處停止。圖4-10開始執(zhí)行程序(3)點擊GO按鈕,跳過斷點,繼續(xù)執(zhí)行,如圖4-11所示。圖4-11執(zhí)行成功5總結(jié)我們的選題是基于ARM9中斷控制器的程序設計與實現(xiàn),任務下達之后,我們首先利用三天的時間進行了相關(guān)資料的學習,比如中斷的處理過程,跑馬燈的工作原理等。通過查找資料進一步的學習這些知識,我發(fā)現(xiàn)我們之前對于書本上的很多知識學得還不夠深入,離應用還差得很遠。接著,我們開始進行系統(tǒng)的需求分析,根據(jù)需求分析做了總體設計,有了
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 班級讀書日活動方案6篇
- 2024-2025學年四川省江油市太白中學高一上學期12月月考歷史試卷
- 2025年工程項目策劃安全生產(chǎn)合作協(xié)議書
- 2025年自動抄表系統(tǒng)項目立項申請報告模范
- 2025年工程機械部件項目立項申請報告模范
- 2025年眾籌平臺項目融資合同
- 2025年養(yǎng)殖園區(qū)合作經(jīng)營合作協(xié)議書
- 2025年農(nóng)村郵政服務合同樣本
- 2025年不銹鋼產(chǎn)品質(zhì)量保證合同
- 2025年麥田房產(chǎn)策劃交易保證金協(xié)議書
- 數(shù)字孿生水利工程建設技術(shù)導則(試行)
- 2022年版初中物理課程標準解讀-課件
- 2024年山東化工職業(yè)學院單招職業(yè)技能測試題庫及答案解析
- 方案偏離處理措施
- (2024年)剪映入門教程課件
- 《寵物飼養(yǎng)》課程標準
- 快餐品牌全案推廣方案
- 環(huán)境衛(wèi)生整治推進行動實施方案
- 口腔醫(yī)院感染預防與控制1
- 2024年同等學力英語真題解析
- 2023年中考英語二輪復習:動詞的時態(tài)(附答案解析)
評論
0/150
提交評論