[計(jì)算機(jī)軟件及應(yīng)用]嵌入式實(shí)驗(yàn)指導(dǎo)書_第1頁
[計(jì)算機(jī)軟件及應(yīng)用]嵌入式實(shí)驗(yàn)指導(dǎo)書_第2頁
[計(jì)算機(jī)軟件及應(yīng)用]嵌入式實(shí)驗(yàn)指導(dǎo)書_第3頁
[計(jì)算機(jī)軟件及應(yīng)用]嵌入式實(shí)驗(yàn)指導(dǎo)書_第4頁
[計(jì)算機(jī)軟件及應(yīng)用]嵌入式實(shí)驗(yàn)指導(dǎo)書_第5頁
已閱讀5頁,還剩47頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、評(píng)分: arm嵌入式體系結(jié)構(gòu)與接口技術(shù)實(shí) 驗(yàn) 報(bào) 告 班 級(jí): 電 氣07 - 1 班 學(xué) 號(hào): 姓 名: 指導(dǎo)教師: 廖京盛 實(shí)驗(yàn)日期:2010年10月 日 月 日arm 匯編指令實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康某醪綄W(xué)會(huì)使用 vision ide for arm 開發(fā)環(huán)境及 arm 軟件模擬器;通過實(shí)驗(yàn)掌握簡(jiǎn)單 arm 匯編指令的使用方法。實(shí)驗(yàn)設(shè)備硬件:pc 機(jī)一臺(tái);軟件:vision ide for arm 集成開發(fā)環(huán)境,windows 98/2000/nt/xp。實(shí)驗(yàn)內(nèi)容熟悉開發(fā)環(huán)境的使用并使用 ldr/str,mov 等指令訪問寄存器或存儲(chǔ)單元;使用 add/sub/lsl/lsr/and/orr 等指令

2、,完成基本算術(shù)/邏輯運(yùn)算。實(shí)驗(yàn)原理arm 處理器共有 37 個(gè)寄存器:l31 個(gè)通用寄存器,包括程序計(jì)數(shù)器(pc)。這些寄存器都是 32 位的;l6 個(gè)狀態(tài)寄存器。這些寄存器也是 32 位的,但是只是使用了其中的 12 位。 這里簡(jiǎn)要介紹通用寄存器,關(guān)于狀態(tài)寄存器的介紹,請(qǐng)參照下一節(jié)。1. arm 通用寄存器通用寄存器(r0-r15)可分為三類:l不分組寄存器 r0r7;l分組寄存器 r8r14;l程序計(jì)數(shù)器 pc。(1)不分組寄存器 r0r7不分組寄存器 r0r7 在所有處理器模式下,它們每一個(gè)都訪問一樣的 32 位寄存器。它們是真 正的通用寄存器,沒有體系結(jié)構(gòu)所隱含的特殊用途。(2)分組寄

3、存器 r8r14分組寄存器 r8r14 對(duì)應(yīng)的物理寄存器取決于當(dāng)前的處理器模式。若要訪問特定的物理寄存器 而不依賴當(dāng)前的處理器模式,則要使用規(guī)定的名字。寄存器 r8r12 各有兩組物理寄存器:一組為 fiq 模式,另一組為除了 fiq 以外的所有模式。 寄存器 r8r12 沒有任何指定的特殊用途,只是在作快速中斷處理時(shí)使用。寄存器 r13,r14 各對(duì) 應(yīng) 6 個(gè)分組的物理寄存器,1 個(gè)用于用戶模式和系統(tǒng)模式,其它 5 個(gè)分別用于 5 種異常模式。寄存 器 r13 通常用做堆棧指針,稱為 sp;寄存器 r14 用作子程序鏈接寄存器,也稱為 lr。(3)程序計(jì)數(shù)器 pc寄存器 r15 用做程序計(jì)

4、數(shù)器(pc)。在本實(shí)驗(yàn)中,arm 核工作在用戶模式,r0r15 可用。2. 存儲(chǔ)器格式arm 體系結(jié)構(gòu)將存儲(chǔ)器看作是從零地址開始的字節(jié)的線性組合。字節(jié)零到字節(jié)三放置第一個(gè)字(word),字節(jié)四到字節(jié)七存儲(chǔ)第二個(gè)字,以此類推。arm 體系結(jié)構(gòu)可以用兩種方法存儲(chǔ)字?jǐn)?shù)據(jù),分別稱為大端格式和小端格式。l大端格式 在這種格式中,字?jǐn)?shù)據(jù)的高位字節(jié)存儲(chǔ)在低地址中,而字?jǐn)?shù)據(jù)的低位字節(jié)則存放在高地址中,如圖 4-1-1 所示。圖 4-1-1大端格式l小端格式 在這種格式中,字?jǐn)?shù)據(jù)的高位字節(jié)存儲(chǔ)在高地址中,而字?jǐn)?shù)據(jù)的低位字節(jié)則存放在低地址中,如圖 4-1-2 所示。圖 4-1-2小端格式3. realview 基

5、礎(chǔ)知識(shí)vision3 ide 集成了 realview 匯編器 aarm、編譯器 carm、鏈接器 larm,若采用 gnu 編 譯器則需要下載安裝相應(yīng)的工具包。本書所有例程代碼均按照 realview 的語法和規(guī)則來書寫。關(guān) 于 aarm、carm 和 larm 的規(guī)范和具體使用,可參照 vision3 ide 所帶的幫助文檔,在此不再贅 述。這里簡(jiǎn)單介紹幾個(gè)相關(guān)基本知識(shí):lentry設(shè)置程序默認(rèn)入口點(diǎn),一個(gè)程序可有多個(gè) entry,但一個(gè)源文件最多只有一個(gè) entry。lequequ 偽操用于將數(shù)字常量、基于寄存器的值和程序中的標(biāo)號(hào)定義為一個(gè)字符名稱。語法格式:symbol equ exp

6、ression其中,expression 可以是一個(gè)寄存器的名字,也可是由程序標(biāo)號(hào)、常量或者 32 位的地址常量 組成的表達(dá)式。symbol 是 equ 偽操作所定義的字符名稱。示例:count equ 0x1ffflextern/importimport(extern 功能完全相同)用于聲明在其他模塊中定義但需要在本文件中使用的符號(hào)。extrn 聲明的變量必須是在其他模塊中用 export 或 global 聲明過的。語法格式:52limport class (symbol, symbol .)其中,class 為變量的類型,可以為 arm、code16、code32、data、const、

7、thumb;symbol為所聲明的變量名。lexport/globalexport(global 功能完全相同)用于聲明在本文件中定義但能在其他模塊中使用的變量,相 當(dāng)于定義了一個(gè)全局變量。語法格式:export symbol, symbol.其中,symbol 為所聲明的變量名。lareaarea 用于定義一個(gè)代碼段或數(shù)據(jù)段,arm 匯編程序設(shè)計(jì)采用分段式設(shè)計(jì),一個(gè) arm 源程序至 少有一個(gè)代碼段,大的程序會(huì)有若干個(gè)代碼段和數(shù)據(jù)段。語法格式:area segment-name, class-name, attributes ,.其中,segment-name 為所定義段的名稱;class-

8、name 為所定義段的類型名稱,可以為系統(tǒng)類 型(code, const, data, eram)或用戶定義類型;attributes 為段的屬性。lendend 用于標(biāo)記匯編文件的結(jié)束行,即標(biāo)號(hào)后的代碼不作處理。實(shí)驗(yàn)步驟1. 新建工程首先在keilarmexamplesmini2410-iv4.1_asm1 目錄下建立文件夾命名為 asm1_a,運(yùn)行vision3 ide 集成開發(fā)環(huán)境,選擇菜單項(xiàng)“project - new- vision project”,系統(tǒng)彈出一個(gè)對(duì) 話框,按照?qǐng)D 4-1-3 所示,輸入相關(guān)內(nèi)容。點(diǎn)擊“保存”按鈕,將創(chuàng)建一個(gè)新工程 asm_1a.uv2。圖 4-1-3

9、 新建工程2. 為工程選擇 cpu新建工程后,要為工程選擇 cpu,如圖 4-1-4 所示,在此選擇 samsung 的 s3c2410a:圖 4-1-4 選擇 cpu3. 添加啟動(dòng)代碼 在圖 4-1-5 中點(diǎn)“確定”后,會(huì)彈出一個(gè)對(duì)話框,問是否要添加啟動(dòng)代碼。如圖 4-1-5 所示。由于本實(shí)驗(yàn)是簡(jiǎn)單的匯編實(shí)驗(yàn),因此不需要啟動(dòng)代碼,選擇否。圖 4-1-5 添加啟動(dòng)代碼4. 選擇開發(fā)工具要為工程選擇開發(fā)工具,在 project - manage - components,environment and books - folder/extensions 對(duì)話框的 folder/extension

10、s 頁內(nèi)選擇開發(fā)工具,如圖 4-1-6 所示。圖 4-1-6 選擇開發(fā)工具從圖中可以看到,有三個(gè)開發(fā)工具可選,在此選擇 realview compiler。5. 建立源文件點(diǎn)擊菜單項(xiàng) file - new,系統(tǒng)彈出一個(gè)新的、沒有標(biāo)題的文本編輯窗,輸入光標(biāo)位于窗口中第一 行,按照實(shí)驗(yàn)參考程序編輯輸入源文件代碼。編輯完后,保存文件 asm1_a.s。(源代碼可以參考disk3_s3c241003-codes01-mdkmini2410-iv4.1_asm1 中的 asm1_a.s 文件)6. 添加源文 單擊工程管理窗口中的相應(yīng)右鍵菜單命令,選擇 add files to,會(huì)彈出文件選擇對(duì)話框,在工

11、程目錄下選擇剛才建立的源文件 asm1_a.s。如圖 4-1-7 所示。圖 4-1-7 添加源文件7. 工程配置把 光 盤 disk3_s3c241003-codes01-mdkmini2410-iv4.1_asm1asm1_a目 錄 中 的 debuginram.ini 文件拷貝到keilarmexamplesmini2410-iv4.1_asm1asm1_a 目錄下。選擇菜 單項(xiàng) project-option for target,將彈出工程設(shè)置對(duì)話框,如圖 4-1-8 所示。對(duì)話框會(huì)因所選開發(fā) 工具的不同而不同,在此僅對(duì) target 選項(xiàng)頁、linker 選項(xiàng)頁及 debug 選項(xiàng)頁進(jìn)

12、行配置。target 選項(xiàng) 頁的配置如圖 4-1-8;linker 選項(xiàng)頁的配置如圖 4-1-9;debug 選項(xiàng)頁的配置如圖 4-1-10。需要注意, 在 debug 選項(xiàng)頁內(nèi)需要一個(gè)初始化文件:debuginram.ini。此.ini 文件用于設(shè)置生成的.axf 文件 下載到目標(biāo)中的位置,以及調(diào)試前的寄存器、內(nèi)存的初始化等配置操作。它是由調(diào)試函數(shù)及調(diào)試命 令組成調(diào)試命令腳本文件。圖 4-1-8 基本配置target圖 4-1-9 基本配置linker圖 4-1-10 基本配置debug8. 生成目標(biāo)代碼選擇菜單項(xiàng) project - build target 或快捷鍵 f7,生成目標(biāo)代碼。

13、在此過程中,若有錯(cuò)誤,則進(jìn) 行修改,直至無錯(cuò)誤。若無錯(cuò)誤,則可進(jìn)行下一步的調(diào)試。9. 調(diào)試選擇菜單項(xiàng) debug - start/stop debug session 或快捷鍵 ctrl+f5,即可進(jìn)入調(diào)試模式。若沒 有目標(biāo)硬件,可以用 vision 3 ide 中的軟件仿真器,做如下調(diào)試工作:l打開 memory 窗口,單步執(zhí)行,觀察地址 0x30200000 中內(nèi)容的變化;l單步執(zhí)行,觀察寄存器的變化;l結(jié)合實(shí)驗(yàn)內(nèi)容和相關(guān)資料,觀察程序運(yùn)行,通過實(shí)驗(yàn)加深理解 arm 指令的使用;l理解和掌握實(shí)驗(yàn)后,完成實(shí)驗(yàn)練習(xí)題。實(shí)驗(yàn) b 與上述步驟完全相同,只要把對(duì)應(yīng)的 asm1_a.s 文件改成 as

14、m1_b.s 以及工程名即可。實(shí)驗(yàn)參考程序1. 實(shí)驗(yàn) a匯編程序:;*; name:asm1_a.s; author:tyw /wuhan r&d center,embest; desc:arm instruction examples; history:2007.5.1;*;/*- */;/*constant define*/;/*- -*/xequ 45; x=45yequ 64; y=64/stack_topequ 0x30200000; define the top address for stacksexport reset_handler;/*- -*/;/*code*/;/*-*

15、/ area text,code,readonlyexportreset_handler; code start */ldrsp, =stack_topmovr0, #x; put x value into r0strr0, sp; save the value of r0 into stacks movr0, #y; put y value into r0ldrr1, sp; read the data from stack,and put it into r1 addr0, r0, r1; r0=r0+r1strr0, spstopbstop; end the code cycling e

16、nd注意:語句 export reset_handler 前面必須有空格,具體原因請(qǐng)參考 arm 指令格式文檔。調(diào)試命令腳本文件:/* */*name: debuginram.ini*/func void setup (void)/ program entry point, .axf file download addresspc = 0x30000000;map 0x00000000,0x00200000 read write exec/ map this memory to be read、write and execmap 0x30000000,0x34000000 read write

17、 exec/ map this memeory to be read,write and execsetup();/ setup for running/g, main2. 實(shí)驗(yàn) b匯編程序;#*;# name:asm1_b.s;# author:wuhan r&d center, embest;# desc:arm instruction examples;# history:tianyunfang 2007.05.12;#*;/*- */;/*constant define*/;/*- */xequ 45;/* x=45 */ yequ 64;/* y=64 */ zequ 87;/* z

18、=87 */stack_topequ 0x30200000;/* define the top address for stacks*/exportreset_handler;/*- */;/*code*/;/*- */ area text,code,readonlyreset_handler ;/* code start */ movr0, #x ;/* put x value into r0*/ movr0, r0, lsl #8 ;/* r0 = r0 1) + r0*/ ldrsp, =stack_topstrr2, spmovr0, #z;/* put z value into r0

19、 */ andr0, r0, #0xff;/* get low 8 bit from r0 */ movr1, #y;/* put y value into r1 */addr2, r0, r1, lsr #1;/* r2 = (r11) + r0*/ldrr0, sp;/* put y value into r1 */movr1, #0x01 orrr0, r0, r1movr1, r2;/* put y value into r1 */addr2, r0, r1, lsr #1;/* r2 = (r11) + r0 */stopbstop;/* end the code cycling*/

20、 end調(diào)試命令腳本文件與實(shí)驗(yàn) a 相同。練習(xí)題1編寫程序循環(huán)對(duì) r4r11 進(jìn)行累加 8 次賦值,r4r11 起始值為 18,每次加操作后把r4r11 的內(nèi)容放入 sp 棧中,sp 初始設(shè)置為 0x800。最后把 r4r11 用 ldmfd 指令清空賦值為0。2更改實(shí)驗(yàn) a 中 x、y 的值,觀察執(zhí)行結(jié)果。arm 處理器工作模式實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康耐ㄟ^實(shí)驗(yàn)掌握學(xué)會(huì)使用 msr/mrs 指令實(shí)現(xiàn) arm 處理器工作模式的切換,觀察不同模式下的 寄存器,加深對(duì) cpu 結(jié)構(gòu)的理解;通過實(shí)驗(yàn)進(jìn)一步熟悉 arm 匯編指令。實(shí)驗(yàn)設(shè)備硬件:embest arm 教學(xué)實(shí)驗(yàn)教學(xué)系統(tǒng),pc 機(jī);軟件:mdk 集成開發(fā)

21、環(huán)境,windows 98/2000/nt/xp。實(shí)驗(yàn)內(nèi)容通過 arm 匯編指令,在各種處理器模式下切換并觀察各種模式下寄存器的區(qū)別;掌握 arm 不同模式的進(jìn)入與退出。實(shí)驗(yàn)原理1. arm 處理器模式arm 體系結(jié)構(gòu)支持下表 4-4-1 所列的 7 種處理器模式。表 4-4-1 處理器模式處理器模式說明用戶 usr正常程序執(zhí)行模式fiqfiq支持高速數(shù)據(jù)傳送或通irqirq用于通用中斷處理管理svc操作系統(tǒng)保護(hù)模式中止abt實(shí)現(xiàn)虛擬存儲(chǔ)器和/或存儲(chǔ)器未定義 und支持硬件協(xié)處理器的軟件仿真系統(tǒng)sys運(yùn)行特權(quán)操作系統(tǒng)任務(wù)在軟件控制下可以改變模式,外部中斷或異常處理也可以引起模式發(fā)生改變。 大多

22、數(shù)應(yīng)用程序在用戶模式下執(zhí)行。當(dāng)處理器工作在用戶模式時(shí),正在執(zhí)行的程序不能訪問某些被保護(hù)的系統(tǒng)資源,也不能改變模式,除非異常(exception)發(fā)生。這允許通過合適地編寫操作系 統(tǒng)來控制系統(tǒng)資源的使用。除用戶模式外的其他模式稱為特權(quán)模式。它們可以自由的訪問系統(tǒng)資源和改變模式。其中的 5種稱為異常模式,即:nfiq(fast interrupt request);nirq(interrupt request);n管理(supervisor);n中止(abort);n未定義(undefined)。 當(dāng)特定的異常出現(xiàn)時(shí),進(jìn)入相應(yīng)的模式。每種模式都有某些附加的寄存器,以避免異常出現(xiàn)時(shí)用戶模式的狀態(tài)不可

23、靠。剩下的模式是系統(tǒng)模式。僅 arm 體系結(jié)構(gòu) v4 及其以上的版本有該模式。不能由任何異常進(jìn)入該模式。它與用戶模式有完全相同的寄存器,然而它是特權(quán)模式,不受用戶模式的限制。它供需要 訪問系統(tǒng)資源的操作系統(tǒng)任務(wù)使用,但希望避免使用與異常模式有關(guān)的附加寄存器。避免使用附加 寄存器保證了當(dāng)任何異常出現(xiàn)時(shí),都不會(huì)使任務(wù)的狀態(tài)不可靠。2. 程序狀態(tài)寄存器前一節(jié)提到的程序狀態(tài)寄存器 cpsr 和 spsr 包含了條件碼標(biāo)志,中斷禁止位,當(dāng)前處理器模式 以及其他狀態(tài)和控制信息。每種異常模式都有一個(gè)程序狀態(tài)保存寄存器 spsr。當(dāng)異常出現(xiàn)時(shí),spsr 用于保留 cpsr 的狀態(tài)。cpsr 和 spsr 的格

24、式如表格 4-4-2 所示:表 4-4-2 cpsr 和 spsr 的格式313029282726876543210nzcvqdnm ( raz )iftmmmmm條件碼標(biāo)志:n,z,c,v 大多數(shù)指令可以檢測(cè)這些條件碼標(biāo)志以決定程序指令如何執(zhí)行2)控制位:最低 8 位 i,f,t 和 m 位用作控制位。當(dāng)異常出現(xiàn)時(shí)改變控制位。當(dāng)處理器在特權(quán)模式下也可 以由軟件改變。n中斷禁止位:i 置 1 則禁止 irq 中斷;f 置 1 則禁止 fiq 中斷。nt 位:t=0 指示 arm 執(zhí)行;t=1 指示 thumb 執(zhí)行。在這些體系結(jié)構(gòu)的系統(tǒng)中,可自由的使 用能在 arm 和 thumb 狀態(tài)之間切

25、換的指令。n模式位:m0,m1,m2,m3 和 m4(m4:0)是模式位.這些位決定處理器的工作模式.如表 4-4-3 所示。表 4-4-3 arm 工作模式 m4:0m4:0模式可訪問的寄存器0b10000用戶pc,r14r0,cpsr0b10001fiqpc,r14_fiqr8_fiq,r7r0,cpsr,spsr_fiq0b10010irqpc,r14_irqr8_fiq,r12r0,cpsr,spsr_irq0b10011管理pc,r14_svcr8_svc,r12r0,cpsr,spsr_svc0b10111中止pc,r14_abtr8_abt,r12r0,cpsr,spsr_abt

26、0b11011未定義pc,r14_undr8_und,r12r0,cpsr,spsr_und0b11111系統(tǒng)pc,r14r0,cpsr3)其他位: 程序狀態(tài)寄存器的其他位保留,用作后的擴(kuò)展。實(shí)驗(yàn)步驟1)參考 4.1.5 小節(jié)實(shí)驗(yàn) a 的步驟建立一個(gè)新的工程,命名為 armmode,處理器選擇 s3c2410a;2)參考 4.1.5 小節(jié)實(shí)驗(yàn) a 的步驟和本節(jié)實(shí)驗(yàn)參考程序編輯輸入源代碼,編輯完畢后,保存文件 為 armmode.s;3)單擊工具欄的圖標(biāo),或單擊工程管理窗口中的相應(yīng)右鍵菜單 manage components 命令,彈出 componets,environment and boo

27、ks 對(duì)話框,在該對(duì)話框中為相應(yīng)的文件組添加剛才新 建的源文件 armmode.s;4)參考 4.1.5 小節(jié)實(shí)驗(yàn) a 的步驟進(jìn)行相應(yīng)設(shè)置、生成目標(biāo)代碼和下載目標(biāo)代碼調(diào)試;5)打開寄存器窗,單步執(zhí)行,觀察并記錄寄存器 r0 和 cpsr 的值的變化和每次變化后執(zhí)行寄 存器賦值后的 36 個(gè)寄存器的值的變化情況,尤其注意各個(gè)模式下 r13 和 r14 的值;6)結(jié)合實(shí)驗(yàn)內(nèi)容和相關(guān)資料,觀察程序運(yùn)行,通過實(shí)驗(yàn)加深理解 arm 各種狀態(tài)下寄存器的使 用;7)理解和掌握實(shí)驗(yàn)后,完成實(shí)驗(yàn)練習(xí)題。實(shí)驗(yàn)參考程序;*; name:armmode.s*; author:wuhan r&d center, emb

28、est*; desc:arm instruction examples*;example for arm mode*; history:jianying, wang 2007.05.15*; *;/*-*/;/*constant define*/;/*-*/ export start;/*-*/;/*code*/;/*-*/ area|.text|, code, readonlystart;/*-*/;/* setup interrupt / exception vectors*/;/*-*/breset_handlerundefined_handlerbundefined_handler b

29、swi_handlerprefetch_handlerbprefetch_handlerabort_handlerbabort_handlernop;/* reserved vector */ irq_handlerbirq_handlerfiq_handlerbfiq_handlerswi_handler bx lrreset_handler visitmen;/*-*/;/*into system mode*/;/*-*/ mrs r0,cpsr;/* read cpsr value */ bic r0,r0,#0x1f;/* clear low 5 bit*/ orr r0,r0,#0x

30、1f;/* set the mode as system mode */msr cpsr_cxfs,r0mov r0, #1;/* initialization the register in system mode */mov r1, #2mov r2, #3 mov r3, #4 mov r4, #5 mov r5, #6 mov r6, #7 mov r7, #8 mov r8, #9 mov r9, #10 mov r10, #11 mov r11, #12 mov r12, #13 mov r13, #14mov r14, #15;/*-*/;/*into fiq mode*/;/*

31、-*/ mrs r0,cpsr;/* read cpsr value */ bic r0,r0,#0x1f;/* clear low 5 bit */ orr r0,r0,#0x11;/* set the mode as fiq mode*/msr cpsr_cxfs,r0mov r8, #16;/* initialization the register in fiq mode */mov r9, #17 mov r10, #18 mov r11, #19 mov r12, #20 mov r13, #21mov r14, #22;/*-*/;/*into svc mode*/;/*-*/

32、mrs r0,cpsr;/* read cpsr value */ bic r0,r0,#0x1f;/* clear low 5 bit*/ orr r0,r0,#0x13;/* set the mode as svc mode */msr cpsr_cxfs,r0mov r13, #23;/* initialization the register in svc mode */mov r14, #24;/*-*/;/*into abort mode*/;/*-*/ mrs r0,cpsr;/* read cpsr value */ bic r0,r0,#0x1f;/* clear low 5

33、 bit */ orr r0,r0,#0x17;/* set the mode as abort mode*/msr cpsr_cxfs,r0mov r13, #25;/* initialization the register in abort mode */mov r14, #26;/*-*/;/*into irq mode*/;/*-*/ mrs r0,cpsr;/* read cpsr value */ bic r0,r0,#0x1f;/* clear low 5 bit */ orr r0,r0,#0x12;/* set the mode as irq mode*/msr cpsr_

34、cxfs,r0mov r13, #27;/* initialization the register in irq mode */mov r14, #28;/*-*/;/*into undef mode*/;/*-*/ mrs r0,cpsr;/* read cpsr value */ bic r0,r0,#0x1f;/* clear low 5 bit*/ orr r0,r0,#0x1b;/* set the mode as undef mode */msr cpsr_cxfs,r0mov r13, #29;/* initialization the register in undef mo

35、de */mov r14, #30b reset_handler;/* jump back to reset_handler */end本節(jié)可使用上節(jié)的調(diào)試腳本文件。練習(xí)題參考第一個(gè)例子,把其中系統(tǒng)模式程序更改為用戶模式程序,編譯調(diào)試,觀察運(yùn)行結(jié)果,檢查 是否正確,如果有錯(cuò)誤,分析其原因;(提示:不能從用戶模式直接切換到其他模式,可以先使用 swi 指令切換到管理模式)。led 控制實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康恼莆绽?s3c2410x 芯片地址總線擴(kuò)展的 i/o 來驅(qū)動(dòng) led 顯示;了解 arm 芯片中利用總線擴(kuò)展 i/o 口的使用方法。實(shí)驗(yàn)設(shè)備硬件:embest edukit-iv 平臺(tái),ulink2

36、仿真器套件,pc 機(jī);軟件:vision ide for arm 集成開發(fā)環(huán)境,windows 98/2000/nt/xp。實(shí)驗(yàn)內(nèi)容編寫程序,控制實(shí)驗(yàn)平臺(tái)的發(fā)光二極管 led1,led2,led3,led4,使它們有規(guī)律的點(diǎn)亮和熄滅, 具體順序如下:led1 亮-led2 亮-led3 亮-led4 亮-led1 滅-led2 滅-led3 滅-led4 滅-全亮-全滅,如此反復(fù)。實(shí)驗(yàn)原理在開發(fā) led 驅(qū)動(dòng)之前,首先了解本實(shí)驗(yàn)的原理圖:edukit-iv 設(shè)計(jì)了 5 個(gè) led(d1d5)用于 指示和控制系統(tǒng)的狀態(tài),其中 d2 指示電源的狀態(tài),其他 4 個(gè)的狀態(tài)是用戶可編程的(sysled1

37、 sysled4),在 edukit-iv 中,這 4 個(gè) led 的狀態(tài)通過擴(kuò)展 i/o 接口進(jìn)行控制。edukit-iv led 所用到的擴(kuò)展 i/o 如圖 5-2-1 所示:圖 5-2-1 片選信號(hào)的產(chǎn)生利用 3/8 譯碼器將 a18-a20 擴(kuò)展了 7 個(gè)外設(shè)片選信號(hào) cs1-cs7。cs1 和 cs2 引出到外部擴(kuò)展接口 excon_b3,cs3 和 cs4 為總線擴(kuò)展輸入的芯片 74hc541 的片選。cs5,cs6,和 cs7 為總線擴(kuò)展輸出的芯片 74hc573 的片選。片選信號(hào)在接入 74hc573 前經(jīng)過了如下處理:圖 5-2-2ole 信號(hào)的產(chǎn)生其中 cs5,cs6,cs

38、7 3 個(gè)片選信號(hào)和寫使能信號(hào)通過 74hc32 或門輸出一個(gè)選通信號(hào) le 為低 電平。圖 5-2-3 le 信號(hào)的產(chǎn)生前面或門輸出的 le 選通信號(hào)經(jīng)過 74hc04 反相得到高電平后再連接到擴(kuò)展輸出芯片 74hc573。edukit-iv led 接口電路如圖 5-2-4 和圖 5-2-5 所示。在本實(shí)驗(yàn)平臺(tái)上,如圖 5-2-4,芯片74vhc573dt 的選通物理地址為 0x21180000,當(dāng)訪問這個(gè)物理地址的時(shí)候,就可以訪問其上的硬 件資源了。這里可以把其理解為一個(gè)寄存器,寄存器地址是 0x21180000,它的低 4 位控制了 4 個(gè) led 燈,通過訪問地址為 0x211800

39、00 的寄存器,往其低 4 位置高/低電平,從而控制相應(yīng)的 4 個(gè) led 燈 的亮/滅。(注意:寄存器 0x21180000 是只寫的,在軟件編程時(shí)只能往里寫數(shù)據(jù),不能從里讀數(shù)據(jù))圖 5-2-4 向 led 寫入數(shù)據(jù)圖 5-2-5 led1-4 連接圖如圖 5-2-5 所示,led1-4 這 4 個(gè) led 采用了共陽極的接法,分別與 sysled1-4 相連,通過 sysled1-4 引腳的高低電平來控制發(fā)光二極管的亮與滅。當(dāng)這幾個(gè)管腳輸出高電平的時(shí)候發(fā)光二極 管熄滅,反之,發(fā)光二極管點(diǎn)亮。實(shí)驗(yàn)步驟1. 準(zhǔn)備實(shí)驗(yàn)環(huán)境使用 ulink2 仿真器連接 embest edukit-iv 實(shí)驗(yàn)平臺(tái)

40、的主板 jtag 接口;使用 embest edukit-iv 實(shí)驗(yàn)平臺(tái)附帶的交叉串口線,連接實(shí)驗(yàn)平臺(tái)主板上的 com2 和 pc 機(jī)的串口(一般 pc 只有一個(gè)串口, 如果有多個(gè)請(qǐng)自行選擇,筆記本沒有串口設(shè)備的可購買 usb 轉(zhuǎn)串口適配器擴(kuò)充);使用 embest edukit-iv 實(shí)驗(yàn)平臺(tái)附帶的電源適配器,連接實(shí)驗(yàn)平臺(tái)主板上的電源接口。2. 串口接收設(shè)置在 pc 機(jī)上運(yùn)行 windows 自帶的超級(jí)終端串口通信程序,或者使用實(shí)驗(yàn)平臺(tái)附帶光盤內(nèi)設(shè)置好 了的超級(jí)終端,設(shè)置超級(jí)終端:波特率 115200、1 位停止位、無校驗(yàn)位、無硬件流控制,或者使用 其它串口通信程序。(注:超級(jí)終端串口的選擇

41、根據(jù)用戶的 pc 串口硬件不同,請(qǐng)自行選擇,如果 pc機(jī)只有一個(gè)串口,一般是 com1)3. 打開實(shí)驗(yàn)例程1)拷貝實(shí)驗(yàn)平臺(tái)附帶光盤 disk3_s3c241003-codes01-mdkmini2410-iv 文件夾到 mdk 的 安裝路徑:keilarmboardsembest(如果本實(shí)驗(yàn)之前已經(jīng)拷貝,可以跳過這一步)。(注:用戶也 可拷貝工程到任意目錄,本實(shí)驗(yàn)為了便于教學(xué),故統(tǒng)一實(shí)驗(yàn)路徑);2)運(yùn)行 vision ide for arm 軟件,點(diǎn)擊菜單欄“project”,選擇“open project”,在彈出的 對(duì)話框選擇實(shí)驗(yàn)例程目錄 led_test 子目錄下的 led_test.uv2 工程。3)默認(rèn)打開的工程在源碼編輯窗口會(huì)顯示實(shí)驗(yàn)例程的說明文件 readme.txt,詳細(xì)閱讀并理解實(shí) 驗(yàn)內(nèi)容。4)工程提供了兩種運(yùn)行方式:一是下載到 sdram 中調(diào)試運(yùn)行,二是固化到 nor flash 中運(yùn)行。 用戶可以在工具欄 select target 下拉框中選擇在 ram 中調(diào)試運(yùn)行還是固化 flash 中運(yùn)行。如下圖所 示:圖 5-2-6 選擇運(yùn)行方式下面實(shí)驗(yàn)將介紹下

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論