




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、目錄第1章 實驗要求3第2章 預備知識4一、 ADS1.2安裝4二、 ADS1.2 下使用 Wiggler電纜調(diào)試5三、 配置 ads1.2軟件6四、 H-JTAG 驅(qū)動程序的使用8第3章 S3C2410A實驗24實驗一 ADS1.2開發(fā)環(huán)境創(chuàng)建與簡要介紹24一、 實驗?zāi)康?4二、 實驗內(nèi)容24三、 實驗設(shè)備24四、 實驗步驟24五、 實驗步驟32實驗二 ARM的I/O接口實驗34一、 實驗?zāi)康?4二、 實驗內(nèi)容34三、 實驗設(shè)備34四、 實驗原理34五、 實驗步驟36六、 參考程序36實驗三 ARM 的中斷實驗37一、 實驗?zāi)康?7二、 實驗內(nèi)容37三、 實驗設(shè)備37四、 ARM 的中斷原理
2、37五、 三星的 2410 ARM 處理器的中斷的使用37六、 中斷編程實例31七、 實驗步驟32八、 分析理解32實驗四 ARM的UART實驗34一、 實驗?zāi)康?4二、 實驗內(nèi)容34三、 實驗設(shè)備34四、 UART的工作原理34五、 實驗步驟39六、 分析理解39實驗五 ARM的A/D接口實驗40一、 實驗?zāi)康?0二、 實驗內(nèi)容40三、 實驗設(shè)備40四、 實驗原理401 / 51五、 實驗步驟44六、 分析理解44實驗六 鍵盤接口和七段數(shù)碼管的控制實驗45一、 實驗?zāi)康?5二、 實驗內(nèi)容45三、 實驗設(shè)備45四、 實驗原理45五、 實驗步驟49六、 分析理解49七、 要求50 第1章 實驗要
3、求ARM實驗室是電子信息科學與技術(shù)的專業(yè)實驗室。旨在培養(yǎng)學生對嵌入式系統(tǒng)設(shè)計和開發(fā)的能力,使學生加深對嵌入式系統(tǒng)設(shè)計思想的理解,掌握ARM實驗平臺進行程序設(shè)計、開發(fā)的技巧和方法,進而增強學生的實踐能力和動手能力,提高其創(chuàng)新意識。 實驗室還為大學生電子設(shè)計大賽,電子類學生的畢業(yè)設(shè)計、課程設(shè)計以及科研訓練提供實驗環(huán)境。利用嵌入式實驗開發(fā)系統(tǒng)。實驗要求在實驗過程中,要求學生做到:(1)預習實驗指導書有關(guān)部分,認真做好實驗內(nèi)容的準備,就實驗可能出現(xiàn)的情況提前作出思考和分析。(2)仔細觀察上機編程時出現(xiàn)的各種現(xiàn)象,記錄主要情況,作出必要說明和分析。(3)認真書寫實驗報告。實驗報告包括實驗?zāi)康暮鸵螅瑢嶒?/p>
4、情況及其分析,寫出程序設(shè)計說明,給出源程序框圖和清單。(4)遵守機房紀律,服從輔導教師指揮,愛護實驗設(shè)備。(5)實驗課程不遲到,如有事不能出席,所缺實驗一般不補。實驗的驗收將分為兩個部分。第一部分是上機操作,包括檢查程序運行和即時提問。第二部分是提交書面的實驗報告。第2章 預備知識一、 ADS1.2安裝1. 打開安裝光盤的 ads1.2文件夾,雙擊 SETUP.EXE,進行安裝,按默認設(shè)置,也可適當更改安裝路徑。 2. 安裝完成后,出現(xiàn)一個添加 licence的界面, 3. 選中 ADS1.2目錄下的 crack 文件夾中的 licence.dat文件,點下一步,直至結(jié)束。至此,完成軟件的安裝
5、。二、 ADS1.2 下使用 Wiggler電纜調(diào)試1. 安裝 Rdi.dll 將文件夾下的 Rdi.dll 、 dev.ini 、dev文件夾一同拷貝到 xx:Program FilesARMADSv1_2Bin目錄下(推薦目錄) ; 2安裝并口驅(qū)動1) 運行GiveIOInstaller.exe2) 選擇Install Service三、 配置 ads1.2軟件 打開 AXD,選擇菜單”options”中的”configuer target”,如下圖:點擊”ADD”,再彈出的列表框中找到開始拷貝的 RDI.dll,如下圖:打開后再點擊 Configure 進行配置,點擊”O(jiān)K”,如果此時連
6、接了 Wiggler 電纜和實驗箱,即可進入正確的調(diào)試模式,如下圖:四、 H-JTAG 驅(qū)動程序的使用1. 安裝操作說明首先,將 H-JTAGv2.0.exe 應(yīng)用程序雙擊,安裝。2. 安裝到你的 C 盤或 D 盤的 program files 下,安裝成功后,在桌面上會出現(xiàn)圖 1 左下方的圖標 H-JTAG。連上 wiggler電纜,雙擊圖標 H-JTAG,彈出圖 1 的右面的對話框。3. 若檢測,連接成功,最小化 H-JTAG。到開始/程序/ARM Developer Suite 1.2 目錄下打開 ADS1.2 的調(diào)試器 AXD。將彈出圖 8。點擊,深色處,之后點擊 OK。 (注意,這步
7、前,應(yīng)該正確安裝 H-JTAG V2.0.exe 程序)第3章 S3C2410A實驗實驗一 ADS1.2開發(fā)環(huán)境創(chuàng)建與簡要介紹一、 實驗?zāi)康? 熟悉ADS1.2開發(fā)環(huán)境,正確使用仿真調(diào)試電纜進行編譯、下載、調(diào)試。2 了解ARM匯編語言的基本框架,學會使用ARM的匯編語言編程。3 了解ARM C語言的基本框架,學會使用ARM的C語言編程二、 實驗內(nèi)容1 學習ADS1.2開發(fā)環(huán)境2 用匯編語言編寫一個簡單的應(yīng)用程序3 用C語言編寫一個簡單的應(yīng)用程序三、 實驗設(shè)備1 EL-ARM-830+教學實驗箱, PC機,仿真調(diào)試電纜。2 ADS1.2集成開發(fā)環(huán)境,仿真調(diào)試電纜驅(qū)動程序四、 實驗步驟1 ADS1
8、.2下建立工程1) 運行ADS1.2集成開發(fā)環(huán)境(CodeWarrior for ARM Developer Suite),點擊File|New,在New對話框中,選擇Project欄,其中共有7項,ARM Executable Image是ARM的通用模板。選中它即可生成ARM的執(zhí)行文件。同時,如圖2-1-1圖2-1-1還要在,Project name欄中輸入項目的名稱,以及在Location中輸入其存放的位置。按確定保存項目。2) 在新建的工程中,選擇Debug版本,如圖2-1-2,使用Edit|Debug Settings菜單對Debug版本進行參數(shù)設(shè)置。圖2-1-23) 在如圖2-1-
9、3中,點擊Debug Setting 按鈕,彈出2-1-4圖,選中Target Setting圖2-1-3圖2-1-4項,在Post-linker欄中選中ARM fromELF項。按OK確定。這是為生成可執(zhí)行的代碼的初始開關(guān)。4) 在如圖2-1-5中,點擊ARM Assembler ,在Architecture or Processer 圖2-1-5 欄中選ARM920T。這是要編譯的CPU核。5) 在如圖2-1-6中,點擊ARM C Compliler ,在Architecture or Processer欄中選ARM920T。這是要編譯的CPU核。圖2-1-66) 在如圖2-1-7中,點擊
10、ARM linker ,在outpur欄中設(shè)定程序的代碼段地址,以及數(shù)據(jù)使用的地址。圖中的RO Base欄中填寫程序代碼存放的起始地址,RW Base欄中填寫程序數(shù)據(jù)存放的起始地址。該地址是屬于SDRAM的地址。圖2-1-7圖2-1-8在options欄中,如圖2-1-8,Image entry point要填寫程序代碼的入口地址,其他保持不變,如果是在SDRAM中運行,則可在0x300000000x33ffffff中選值,這是64M SDRAM的地址,但是這里用的是起始地址,所以必須把你的程序空間給留出來,并且還要留出足夠的程序使用的數(shù)據(jù)空間,而且還必須是4字節(jié)對齊的地址(ARM狀態(tài))。通常
11、入口點Image entry point 為0x30000000,ro_base也為0x30000000。在Layout欄中,如圖2-1-9,在Place at beginning of image框內(nèi),需要填寫項目的入口程序的目標文件名,如,整個工程項目的入口程序是2410init.s,那么應(yīng)在Object/Symbol處填寫其目標文件名2410init.o,在Section處填寫程序入口的起始段標號。它的作用是通知編譯器,整個項目的開始運行,是從該段開始的。圖2-1-97) 在如圖2-1-10中,即在Debug Setting對話框中點擊左欄的ARM fromELF項,在Output fi
12、le name欄中設(shè)置輸出文件名*.bin,前綴名可以自己取,在Output format 欄中選擇Plain binary,這是設(shè)置要下載到flash中的二進制文件。圖2-1-10中使用的是test.bin.圖2-1-108) 到此,在ADS1.2中的基本設(shè)置已經(jīng)完成,可以將該新建的空的項目文件作為模板保存起來。首先,要將該項目工程文件改一個合適的名字,如S3C2410 ARM.mcp等,然后,在ADS1.2軟件安裝的目錄下的Stationary 目錄下新建一個合適的模板目錄名,如,S3C2410 ARM Executable Image,再將剛剛設(shè)置完的S3c2410 ARM.mcp項目文
13、件存放到該目錄下即可。這樣,就能在圖2-1-10中看到該模板。9) 新建項目工程后,就可以執(zhí)行菜單Project|Add Files把和工程所有相關(guān)的文件加入,ADS1.2不能自動進行文件分類,用戶必須通過Project|Create Group來創(chuàng)建文件夾,然后把加入的文件選中,移入文件夾。或者鼠標放在文件填加區(qū),右鍵點擊,即出!如圖2-1-11圖2-1-11先選Add Files,加入文件,再選Create Group,創(chuàng)建文件夾,然后把文件移入文件夾內(nèi)。讀者可根據(jù)自己習慣,更改Edit|Preference窗口內(nèi)關(guān)于文本編輯的顏色、字體大小,形狀,變量、函數(shù)的顏色等等設(shè)置。如圖2-1-1
14、2。圖2-1-122. ADS1.2下仿真、調(diào)試在ADS1.2下進行仿真調(diào)試,首先需要一根仿真調(diào)試電纜。其驅(qū)動程序的安裝和使用在光盤中的實驗軟件ARM9_RDI中,里面有相關(guān)的文檔。在連上調(diào)試電纜后,給實驗箱上電,打開調(diào)試軟件AXD Debugger。點擊File|load image 加載文件ADS.axf(實驗程序HARDWAREADS實驗三ADSADS_data目錄下)。打開超級終端,設(shè)置其參數(shù)為:波特率為115200,數(shù)據(jù)位數(shù)8,奇偶校驗無,停止位無1,數(shù)據(jù)流控無。點擊全速運行,出現(xiàn)圖2-1-13的界面:圖2-1-13在最后介紹調(diào)試按鈕,上圖,左起第一個是全速運行,第二個是停止運行,第
15、三個跳入函數(shù)內(nèi)部,第四個單步執(zhí)行,第五個跳出函數(shù)。到此,開發(fā)環(huán)境就全部介紹完了,這是 ARM的開發(fā)基礎(chǔ)。1 ARM使用C語言編程是大勢所趨在應(yīng)用系統(tǒng)的程序設(shè)計中,若所有的編程任務(wù)均由匯編語言來完成,其工作量巨大,并且不易移植。由于ARM的程序執(zhí)行速度較高,存儲器的存儲速度和存儲量也很高,因此,C語言的特點充分發(fā)揮,使得應(yīng)用程序的開發(fā)時間大為縮短,代碼的移植十分方便,程序的重復使用率提高,程序架構(gòu)清晰易懂,管理較為容易等等。因此,C語言的在ARM編程中具有重要地位。2 ARM C語言程序的基本規(guī)則在ARM程序的開發(fā)中,需要大量讀寫硬件寄存器,并且盡量縮短程序的執(zhí)行時間的代碼一般使用匯編語言來編寫
16、,比如ARM的啟動代碼,ARM的操作系統(tǒng)的移植代碼等,除此之外,絕大多數(shù)代碼可以使用C語言來完成。C語言使用的是標準的C語言,ARM的開發(fā)環(huán)境實際上就是嵌入了一個C語言的集成開發(fā)環(huán)境,只不過這個開發(fā)環(huán)境和ARM的硬件緊密相關(guān)。在使用C語言時,要用到和匯編語言的混合編程。當匯編代碼較為簡潔,則可使用直接內(nèi)嵌匯編的方法,否則,使用將匯編文件以文件的形式加入項目當中,通過ATPCS的規(guī)定與C程序相互調(diào)用與訪問。ATPCS,就是ARM、Thumb的過程調(diào)用標準(ARM/Thumb Procedure Call Standard),它規(guī)定了一些子程序間調(diào)用的基本規(guī)則。如寄存器的使用規(guī)則,堆棧的使用規(guī)則,
17、參數(shù)的傳遞規(guī)則等。在C程序和ARM的匯編程序之間相互調(diào)用必須遵守ATPCS。而使用ADS的C語言編譯器編譯的C語言子程序滿足用戶指定的ATPCS的規(guī)則。但是,對于匯編語言來說,完全要依賴用戶保證各個子程序遵循ATPCS的規(guī)則。具體來說,匯編語言的子程序應(yīng)滿足下面3個條件: 在子程序編寫時,必須遵守相應(yīng)的ATPCS規(guī)則; 堆棧的使用要遵守相應(yīng)的ATPCS規(guī)則; 在匯編編譯器中使用-atpcs選項。基本的ATPCS規(guī)定,請詳見提供的相關(guān)PDF文檔。匯編程序調(diào)用C程序匯編程序的設(shè)置要遵循ATPCS規(guī)則,保證程序調(diào)用時參數(shù)正確傳遞。在匯編程序中使用IMPORT偽指令聲明將要調(diào)用的C程序函數(shù)。在調(diào)用C程
18、序時,要正確設(shè)置入口參數(shù),然后使用BL調(diào)用。3 C程序調(diào)用匯編程序匯編程序的設(shè)置要遵循ATPCS規(guī)則,保證程序調(diào)用時參數(shù)正確傳遞。在匯編程序中使用EXPORT偽指令聲明本子程序,使其他程序可以調(diào)用此子程序。在C語言中使用extern關(guān)鍵字聲明外部函數(shù)(聲明要調(diào)用的匯編子程序)。在C語言的環(huán)境內(nèi)開發(fā)應(yīng)用程序,一般需要一個匯編的啟動程序,從匯編的啟動程序,跳到C語言下的主程序,然后,執(zhí)行C程序,在C環(huán)境下讀寫硬件的寄存器,一般是通過宏調(diào)用,在每個項目文件的Startup2410/INC目錄下都有一個2410addr.h的頭文件,那里面定義了所有關(guān)于2410的硬件寄存器的宏,對宏的讀寫,就能操作24
19、10的硬件。具體的編程規(guī)則同標準C語言。4 簡單的小例子下面是一個簡單的小例子IMPORT MainAREA a ,CODE, READONLY;ENTRY LDR R0, =0x01d00000LDR R1, =0x245STR R1 , R0 ;把0x245放到地址0X01D00000 BL Main ;跳轉(zhuǎn)到Main()函數(shù)處的C/C+程序END ;標識匯編程序結(jié)束 以上是一個簡單的程序,先寄存器初始化,然后跳轉(zhuǎn)到Main()函數(shù)標識的C/C+代碼處,執(zhí)行主要任務(wù),此處的 Main是聲明的C語言中的Main()函數(shù)。五、 實驗步驟1 本實驗僅使用實驗教學系統(tǒng)的CPU板,串口。在進行本實驗
20、時,LCD電源開關(guān)、音頻的左右聲道開關(guān)、AD通道選擇開關(guān)、觸摸屏中斷選擇開關(guān)等均應(yīng)處在關(guān)閉狀態(tài)。2 在PC機并口和實驗箱的CPU板上的JTAG接口之間,連接仿真調(diào)試電纜,以及串口間連接公/母接頭串口線。3 檢查連接是否可靠,可靠后,接入電源線,系統(tǒng)上電。4 打開ADS1.2開發(fā)環(huán)境,從里面打開C.mcp項目文件,進行編譯。5 編譯通過后,進入ADS1.2調(diào)試界面,加載C_DataDebug中的映象文件程序映像C.axf。6 打開/實驗軟件/tools/目錄下的串口調(diào)試助手工具,配置為波特率為115200,校驗位無,數(shù)據(jù)位為8,停止位為1。不要選十六進制顯示。之后,在ADS調(diào)試環(huán)境下全速運行映象
21、文件,應(yīng)出現(xiàn)圖2-3-1 界面。本程序連續(xù)發(fā)送55。圖2-3-1下邊分析一下主程序的源碼。在C程序前的部分為系統(tǒng)的初始化,這在后邊BOOTLOADER的章節(jié)里,要詳細介紹。#include ".incconfig.h" /嵌入包括硬件的頭文件unsigned char data; /定義全局變量void Main(void)Target_Init(); /目標板初始化,定義串口的硬件初始化在/target.c中定義 Delay(10); /延時 data = 0x55; /給全局變量賦值 while(1) Uart_Printf("%x ",data);
22、 /串口0輸出 Delay(10); 把data = 0x55;語句中的0x55,換成其他8位數(shù),重新編譯,下載,看看串口工具上輸出是什么內(nèi)容。實驗二 ARM的I/O接口實驗一、 實驗?zāi)康? 了解S3C2410的通用I/O接口2 掌握I/0功能的復用并熟練的配置,進行編程實驗二、 實驗內(nèi)容1 利用ADS1.2編譯,在實驗箱的CPU板上點亮LED燈LED1、LED2,并輪流閃爍!2 keil( mdk 4.12) 點亮LED燈LED1、LED2,并輪流閃爍!三、 實驗設(shè)備1 EL-ARM-830+教學實驗箱,仿真調(diào)試電纜。2 ADS1.2集成開發(fā)環(huán)境,仿真調(diào)試驅(qū)動程序。3 kiel +Prote
23、us軟件。四、 實驗原理S3C2410 CPU 共有117個多功能復用輸入輸出口,分為8組端口:l 4個16位的I/O端口 (PORT C、PORT D、PORT E、PORT G)l 2個11位的I/O端口 (PORT B 和PORT H)l 1個8位的I/O端口(PORT F)l 1個23位的I/O端口(PORT A)這些通用的GPI/O接口,是可配置的, PORTA除功能口外,它們僅用作輸出使用,剩下的PORTB、PORTC、PORTD、PORTE、PORTF、PORTG均可作為輸入輸出口使用。配置這些端口,是通過一些寄存器來實現(xiàn)的,這些寄存器均有各自的地址,位長32位。往該地址中寫入相
24、應(yīng)的數(shù)據(jù),即可實現(xiàn)功能及數(shù)據(jù)配置。現(xiàn)用G口舉例說明。對于G口如表2-1、表2-2、表2-3,表2-1RegisterAddressR/WDescriptionReset ValueGPGCON0x56000060R/WConfigure the pins of port G0x0GPGDAT0x56000064R/WThe data register for port GUndefinedGPGUP0x56000068R/WPull-up disable register for port G0xF800Reserved0x5600006CReserved表2-2Port GSelectabl
25、e Pin FunctionsGPG15Input/outputEINT23nYPONGPG14Input/outputEINT22YMONGPG13Input/outputEINT21nXPONGPG12Input/outputEINT20XMONGPG11Input/outputEINT19TCLK1GPG10Input/outputEINT18GPG9Input/outputEINT17GPG8Input/outputEINT16GPG7Input/outputEINT15SPICLK1GPG6Input/outputEINT14SPIMOSI1GPG5Input/outputEINT1
26、3SPIMISO1GPG4Input/outputEINT12LCD_PWRENGPG3Input/outputEINT11nSS1GPG2Input/outputEINT10nSS0GPG1Input/outputEINT9GPG0Input/outputEINT8表2-3GPGDATBitDescriptionGPG15:015:0When the port is configured as input port, data from external sources can be read to the corresponding pin. When the port is config
27、ured as output port, data written in this register can be sent to the corresponding pin. When the port is configured as functional pin, undefined value will be read.表2-4GPGUPBitDescriptionGPG15:015:00: The pull-up function attached to to the corresponding port pin is enabled.1: The pull-up function
28、is disabled.(GPG15:11 are "pull-up disabled" state at the initial condition.)也就是說,在地址0x56000060中,給32位的每一位賦值,那么,在CPU的管腳上就定義了管腳的功能值。當G口某管腳配置成輸出端口,則在GPDAT對應(yīng)的地址中的對應(yīng)位上,寫入1,則該管腳輸出為高電平,寫入0,則該管腳輸出為低電平。若配置為功能管腳,則該管腳變成具體的功能腳。其他端口配置請參見PDF文擋。在程序中對GPI/O各寄存器的讀寫實現(xiàn),是通過給宏賦值實現(xiàn)的。這些宏在2410addr.h中定義;具體如:。#defin
29、e rGPGCON (*(volatile unsigned *)0x56000060)/G control#define rGPGDAT (*(volatile unsigned *)0x56000064)/ G data#define rGPGUP (*(volatile unsigned *)0x56000068)/Pull-up control G因此,配置端口G,在程序中也就是用如下語句即可:rGPGCON = rGPGCON & 0xFFFF0FFF | 0x00050000;/配置第8、第9位為輸出管腳rGPGDAT = rGPGDAT & 0xFCFF|0x01
30、00;/配置第8位輸出為高電平,第9位輸出低電平。rGPGDAT = rGPGDAT & 0xFCFF|0x0200;/配置第8位輸出為低電平,第9位輸出高電平。#define rGPGCON (*(volatile unsigned *)0x56000060) /Port G control#define rGPGDAT (*(volatile unsigned *)0x56000064) /Port G data#define rGPGUP (*(volatile unsigned *)0x56000068) /Pull-up control Gint i;int main(voi
31、d)rGPGCON = rGPGCON & 0xfff0ffff | 0x00050000;for(;)rGPGDAT = rGPGDAT & 0xfcff | 0x200;for(i=0;i<10000;i+); /延時rGPGDAT = rGPGDAT & 0xfcff | 0x100;for(i=0;i<10000;i+); /延時其他的各功能寄存器在2410addr.h中也都有相應(yīng)的定義,參照該做法,即可把GPI/O管腳配置成輸入輸出端口,也可把管腳配置成所需的功能管腳。五、 實驗步驟1. 本實驗使用實驗教學系統(tǒng)的CPU板,在進行本實驗時,LCD電源
32、開關(guān)、音頻的左右聲道開關(guān)、AD通道選擇開關(guān)、觸摸屏中斷選擇開關(guān)等均應(yīng)處在關(guān)閉狀態(tài)。2. 在PC機并口和實驗箱的CPU板上的JTAG接口之間,連接仿真調(diào)試電纜。3. 檢查連接是否可靠,可靠后,接入電源線,系統(tǒng)上電。4. 打開ADS1.2開發(fā)環(huán)境,從里面打開IO.mcp項目文件,進行編譯。5. 編譯通過后,進入ADS1.2調(diào)試界面,加載實驗程序IO_DataDebug中的映象文件程序映像IO.axf。6. 在ADS調(diào)試環(huán)境下全速運行映象文件。觀察CPU板左下角的LED1、LED2燈輪流的的閃爍!這是對GPGIO口操作的結(jié)果。具體實現(xiàn)見程序。六、 參考程序void Main(void) int i;
33、Target_Init();rGPGCON = rGPGCON & 0xfff0ffff | 0x00050000;while(1) for(i=0;i<2000000;i+); /延時 rGPGDAT = rGPGDAT & 0xfcff | 0x0200; for(i=0;i<2000000;i+); /延時 rGPGDAT = rGPGDAT & 0xfcff | 0x100;實驗三 ARM 的中斷實驗一、 實驗?zāi)康?1. 掌握 ARM9 的中斷原理,能夠?qū)?S3C2410 的中斷資源及其相關(guān)中斷寄存器的進行合理配置2. 掌握對 S3C2410 的中斷
34、的編程的方法二、 實驗內(nèi)容 1. 學習響應(yīng)外部中斷請求的配置方法,并通過響應(yīng)定時器中斷,執(zhí)行中斷 服務(wù)子程序使 CPU 板上的 LED 指示燈 LED1、LED2 閃爍。三、 實驗設(shè)備 1. EL-ARM-830+教學實驗箱,PentiumII 以上的 PC 機,仿真調(diào)試電纜。2. PC 操作系統(tǒng) WINXP 或 WIN7,ADS1.2 集成開發(fā)環(huán)境, 仿真調(diào)試驅(qū)動程序四、 ARM 的中斷原理在 ARM 中,有兩類中斷,一類是 IRQ,一類是 FIQ,IRQ 是普通中斷,F(xiàn)IQ 是快速中斷,在進行大批量的復制、數(shù)據(jù)轉(zhuǎn)移等工作時,常使用此類中斷。FIQ 的優(yōu)先級高于 IRQ。同時,它們都屬于 A
35、RM 的異常模式,當一旦有中斷發(fā)生,不管是外部中斷,還是內(nèi)部中斷,正在執(zhí)行的程序都會停下,PC 指針進而跳入 異常向量的地址處,若是 IRQ 中斷,則 PC 指針跳到 0x18 處,若是 FIQ 中斷,則跳到 0x1C 處。異常向量地址處,一般存有中斷服務(wù)子程序的地址,所以,接下來 PC 指針跳入中斷服務(wù)子程序中。當完成中斷服務(wù)子程序后,PC 指針會返回到被打斷的程序的下一條地址處,繼續(xù)執(zhí)行程序。這就是 ARM 中斷操作的基本原理。但是,通常由于生產(chǎn) ARM 處理器的各廠家都集成了很多中斷請求源,比如,串口中斷、AD 中斷、外部中斷、定時器中斷、DMA 中斷等等,所以,很多中斷可能同時請求中斷
36、,因此,為區(qū)分它們,更準確的完成任務(wù),這些中斷都有相應(yīng)的優(yōu)先級別,以及當發(fā)生中斷時,它們都有相應(yīng)的中斷標志位,通過在發(fā)生中斷是判斷中斷優(yōu)先級,和訪問中斷標志位的狀態(tài)來識別到底哪一個中斷發(fā)生了。五、 三星的 2410 ARM 處理器的中斷的使用首先,ARM920T CPU 的 PSR 寄存器中的 F 位為 1,則 CPU 不會響應(yīng)中斷控 制器的 FIQ 中斷,同樣,ARM920T CPU 的 PSR 寄存器中的 I 位為 1,則 CPU 也 不會響應(yīng)中斷控制器的 IRQ 中斷,為使 CPU 響應(yīng)中斷,須在啟動代碼中將其設(shè) 為 0,以及使 INTMSK 寄存器中的相應(yīng)位置 0。S3C2410A 共
37、有 56 個中斷源,有 26 個中斷控制器,外部中斷 EXTIN823 共 用一個中斷控制器,外部中斷 EXTIN47 共用一個中斷控制器,9個UART中斷分成 3 組,共用 3 個中斷控制器,ADC 和觸摸屏共用一個中斷控制器。見表 2-中斷的優(yōu)先級是由主組號和從 ID 號的級別控制的。中斷優(yōu)先級產(chǎn)生模塊如下圖所示:圖 2-6-1從上圖可以看出,中斷優(yōu)先級產(chǎn)生模塊共有 7 個判優(yōu)器,每個判優(yōu)器是否 使能由寄存器 PRIORITY6:0決定,每個判優(yōu)器下面有 46 個中斷源,這些中 斷源對應(yīng)著 REQ0REQ5 這 6 個優(yōu)先級,這些優(yōu)先級由寄存器 PRIORITY20:7的 相應(yīng)位決定。要正
38、確使用 S3C2410 的中斷控制器,必須設(shè)置如下的寄存器,如下表 2-6- 1 所示:表 2-6-1SRCPND0x4a000000R/W中斷源掛起寄 存 器 , 當 中 斷 產(chǎn) 生后,相應(yīng)位置位INTMOD0x4a000004R/W中斷模式寄存器,設(shè)定 IRQ 或 FIQ模式INTMSK0x4a000008R/W中斷屏蔽寄存器,如果相應(yīng)位置位則該中斷被屏蔽PRIORITY0x4a00000cR/W中斷優(yōu)先級控制寄存器,設(shè)置中斷優(yōu)先級INTPND0x4a000010R/W中斷掛起寄存器,相應(yīng)位對應(yīng)正在執(zhí)行的中斷服務(wù)INTOFFSET0x4a000014R中斷源請求偏移寄存器25第三章 S3C
39、2410A 實驗SUBSRCPND0x4a000018R/W子中斷源掛起寄存器INTSUBMSK0x4a00001cR/W子中斷屏蔽寄存器中斷掛起寄存器主要是提供哪個中斷有請求的標志寄存器,相應(yīng)位置 1,則說明有該中斷請求產(chǎn)生。若相應(yīng)位為 0,則無該中斷請求產(chǎn)生。 中斷模式寄存器主要是配置該中斷是 IRQ 型中斷,還是 FIQ 型中斷。中斷屏蔽寄存器的主要功能是屏蔽相應(yīng)中斷的請求,即使中斷掛起寄存器的相應(yīng)位已經(jīng)置 1,若中斷屏蔽寄存器相應(yīng)位置 1,則中斷控制器屏蔽該中斷請求,也無法讓 CPU 響應(yīng)該中斷。INTPND 為向量 IRQ 中斷服務(wù)掛起狀態(tài)寄存器,當向量 IRQ 中斷發(fā)生時,該寄存器
40、內(nèi)只有一位被設(shè)置,即只有當前要服務(wù)的中斷標志位置位。通過讀它的值,就能判斷出哪個中斷發(fā)生了。在 INTPND 中相應(yīng)位寫入數(shù)據(jù),就能清除掉中 斷掛起寄存器中的中斷請求標志位,以使 CPU 不再響應(yīng)中斷,其實,CPU 響應(yīng) 中斷是看中斷掛起寄存器中的請求標志位有沒有置位,若置位,又屏蔽位打開, ARM920T 的 PSR 的 F 或 I 為也打開,那么,CPU 就響應(yīng)中斷,否則,有一個條件 不成立,則 CPU 無法響應(yīng)中斷。1. SRCPND源中斷指示寄存器SRCPND 寄存器 32 位中的每一位對應(yīng)著一個中斷源,每一位被設(shè)置為 1, 則相應(yīng)的中斷源產(chǎn)生中斷請求并且等待中斷被服務(wù)。因此,這個寄存
41、器表明了 哪個中斷源在等待中斷請求被處理。注意,SRCPND 寄存器的每一位是由中斷源 自動設(shè)置的,而不管 INTMSK 寄存器中的屏蔽位是否置 1。另外,SRCPND 寄存 器不影響中斷控制器的優(yōu)先級邏輯。在指定中斷源的中斷服務(wù)程序中,SRCPND 寄存器相對應(yīng)的位必須被清除,這樣才可以正確響應(yīng)來自同一中斷源的中斷請求。如果從 ISR 返回而沒有清除 相應(yīng)的位,也就是RCPND 寄存器中的對應(yīng)的位還是1,那么就會一直響應(yīng)這個中斷請求。 SRCPND 中相應(yīng)的中斷位清除的時間依賴于用戶的需求,如果想要從同一中斷源接收另一次有效的中斷請求,你在第一次就應(yīng)該清除相應(yīng)的位,并且使能 中斷。用戶可以通
42、過向SRCPND寄存器的相應(yīng)位寫“1”,這樣可以清除該位。下表為 SRCPND 寄存器的地址和位定義說明RegisterAddressR/WDescriptionReset ValueSRCPND0X4A000000R/WIndicatetheinterruptrequest status.0=Theinterrupthasnot been requested.1 = The interrupt source hasasserted the interrupt request.0x000000002. INTMOD中斷模式寄存器中斷模式寄存器(INTMOD )的 32 位中的每一位對應(yīng)一個中斷
43、源, 當INTMOD 的每一位都設(shè)置位1, 則 ARM 內(nèi)核將以 FIQ 模式相應(yīng)中斷,否則將以IRQ 模式相應(yīng)中斷。INTMOD 寄存器的定義如下表:RegisterAddressR/WDescriptionReset ValueNTMOD0X4A000004R/WInterrupt mode regiseter.0 = IRQ mode 1 = FIQ mode0x000000003. INTPND中斷請求寄存器中斷請求寄存器 32 位中的每一位對應(yīng)著相應(yīng)的中斷請求, 經(jīng)過優(yōu)先級邏 輯后, INTPND 寄存器只能有一位被設(shè)置為 1,并且向 ARM 產(chǎn)生中斷請求。在 IRQ 中斷服務(wù)子程序
44、,能夠讀取這個寄存器的值來決定 32 個中斷源的那一個 中斷被服務(wù)。同SRCPND寄存器,在中斷服務(wù)子程序里,這個寄存器的相應(yīng)位需要被清 除。我們可以向 INTPND 寄存器寫一個數(shù)據(jù)1,來清除寄存器的指定位。4. INTMSK中斷屏蔽寄存器在INTMSK 寄存器中,32 位依次對應(yīng)著每個中斷源,如果指定位被設(shè)為 1, ARM 將不響應(yīng)中斷源的中斷請求(注意,即使在 SRCPND 相應(yīng)的位被置位 1 的 條件下也不響應(yīng)) 。如果屏蔽位為 0,則中斷請求可以被響應(yīng)。5. PRIORITY 優(yōu)先級寄存器RegisterAddressR/WDescriptionReset ValuePRIORITY
45、0x4A00000CR/WIRQ priority control register0x7FPRIORITYBitDescriptionInitialStateARB_SEL620:19Arbiter 6 group priority order set00 = REQ 0-1-2-3-4-501 = REQ 0-2-3-4-1-510 = REQ 0-3-4-1-2-511 = REQ 0-4-1-2-3-5ARB_SEL518:17Arbiter 5 group priority order set00 = REQ 1-2-3-401 = REQ 2-3-4-110 = REQ 3-4-1
46、-211 = REQ 4-1-2-3ARB_SEL416:15Arbiter 4 group priority order set00 = REQ 0-1-2-3-4-5 01 = REQ 0-2-3-4-1-510 = REQ 0-3-4-1-2-5 11 = REQ 0-4-1-2-3-5ARB_SEL314:13Arbiter 3 group priority order set00 = REQ 0-1-2-3-4-5 01 = REQ 0-2-3-4-1-510 = REQ 0-3-4-1-2-5 11 = REQ 0-4-1-2-3-5ARB_SEL212:11Arbiter 2 g
47、roup priority order set00 = REQ 0-1-2-3-4-5 01 = REQ 0-2-3-4-1-510 = REQ 0-3-4-1-2-5 11 = REQ 0-4-1-2-3-5ARB_SEL110:9Arbiter 1 group priority order set00 = REQ 0-1-2-3-4-5 01 = REQ 0-2-3-4-1-510 = REQ 0-3-4-1-2-5 11 = REQ 0-4-1-2-3-5ARB_SEL08:7Arbiter 0 group priority order set00 = REQ 1-2-3-4 01 =
48、REQ 2-3-4-110 = REQ 3-4-1-2 11 = REQ 4-1-2-3ARB_MODE66Arbiter 6 group priority rotate enable0 = Priority does not rotate1 = Priority rotate enable27第三章 S3C2410A 實驗ARB_MODE55Arbiter 5 group priority rotate enable0 = Priority does not rotate1 = Priority rotate enableARB_MODE44Arbiter 4 group priority
49、rotate enable0 = Priority does not rotate1 = Priority rotate enableARB_MODE33Arbiter 3 group priority rotate enable0 = Priority does not rotate1 = Priority rotate enableARB_MODE22Arbiter 2 group priority rotate enable0 = Priority does not rotate1 = Priority rotate enableARB_MODE11Arbiter 1 group pri
50、ority rotate enable0 = Priority does not rotate1 = Priority rotate enableARB_MODE00Arbiter 0 group priority rotate enable0 = Priority does not rotate1 = Priority rotate enable6. INTOFFSET中斷偏移寄存器中斷偏移寄存器 INTOFFSET 中的值顯示了 INTPND 寄存器中哪一個 IRQ 的 中斷請求,這個位在清除 SRCPND 和 INTPND 后將自動清除。7. S3C2440A 子中斷列表8. SUBSR
51、CPND次級源中斷指示寄存器9. INTSUBMSK次級中斷屏蔽寄存器 表 2-6-2第三章 S3C2410A 實驗2910. EXTINTn外部中斷控制寄存器 n外部中斷控制寄存器可以控制外部中斷信號有效方式, 外部中斷信號有效 方式可以設(shè)置為電平觸發(fā)和邊沿觸發(fā),具體內(nèi)容見下表。EXTERNAL INTERRUPT CONTROL REGISTER (EXTINTn)The 24 external interrupts can be requested by various signaling methods. The EXTINTn configures the signaling met
52、hod between the level trigger and edge trigger for the external interrupt request, and also configures the signal polarity.To recognize the level interrupt, the valid logic level on EXTINTn pin must be retained at least for 40ns because of the noise filter (EINT15:0).EXTINT0BitDescriptionEINT730:28S
53、et the signaling method of the EINT7.000 = Low level 001 = High level 01x = Falling edge triggered10x = Rising edge triggered11x = Both edge triggered30S3C2410 實驗指導書EINT626:24Set the signaling method of the EINT6.000 = Low level 001 = High level01x = Falling edge triggered 10x = Rising edge triggered11x = Both edge triggeredEINT522:20Set the signaling method of the EINT5.000 = Low level 001 = High level01x = Falling edge triggered 10x = Rising edge triggered11x = Both edge triggeredEINT418:16Set the signa
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 股權(quán)估值調(diào)整與投資決策支持服務(wù)合同
- 網(wǎng)絡(luò)游戲角色形象版權(quán)保護代理協(xié)議
- 安徽省阜陽市、亳州市部分學校2024-2025學年高二下學期3月月考英語試卷
- 2024至2030年中國茶葉烘干機市場調(diào)查研究報告-市場調(diào)查研究報告-市場調(diào)研
- 藥品使用協(xié)議書模板
- 草種廠家供貨合同協(xié)議
- 節(jié)能廣告機銷售合同協(xié)議
- 花椒種植合同協(xié)議書模板
- 蛋糕店合伙協(xié)議書合同
- 營業(yè)執(zhí)照貸款合同協(xié)議
- 快餐店管理系統(tǒng)的設(shè)計與實現(xiàn)畢業(yè)設(shè)計
- 電動給水泵技術(shù)規(guī)范
- 三筆字訓練教程課件
- 船舶關(guān)鍵性設(shè)備和系統(tǒng)檢測要點(甲板部)
- (完整word)2019注冊消防工程師繼續(xù)教育三科試習題及答案
- 鋼筋加工棚搭設(shè)驗收表
- 藍色簡約公安警察工作匯報PPT模板課件
- 汽車維修技能大賽開幕式致辭
- 中心試驗室運行管理實施方案
- 國有企業(yè)融資管理制度
- 板式開料標準
評論
0/150
提交評論