欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      嵌入式實驗報告(小編整理)

      時間:2019-05-12 06:35:36下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關的《嵌入式實驗報告》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《嵌入式實驗報告》。

      第一篇:嵌入式實驗報告

      嵌入式應用系統(tǒng)設計實驗報告

      2013-12-17 計算機學院軟件工程系嵌入式應用系統(tǒng)設計

      實驗一ARM 匯編指令

      一、實驗目的

      初步學會使用Embest IDE for ARM 開發(fā)環(huán)境及 ARM 軟件模擬器。通過實驗掌握簡單 ARM 匯編指令的使用方法。

      二、實驗設備

      硬件:PC 機。軟件:Embest IDE Pro 集成開發(fā)環(huán)境,Windows 98/2000/NT/XP。

      三、實驗內容

      熟悉開發(fā)環(huán)境的使用并使用ldr/str,mov等指令訪問寄存器或存單元。使用 add/sub/lsl/lsr/and/orr等指令,完成基本數(shù)學/邏輯運算。

      四、實驗步驟

      1)新建工程:

      運行Embest IDE Pro 2005 集成開發(fā)環(huán)境,選擇菜單項 File → New Workspace,系統(tǒng)彈出一個對話框,按照圖 1-1 所示輸入相關內容。

      點擊 OK 按鈕,將創(chuàng)建一個新工程,并同時創(chuàng)建一個與工程名相同的工作區(qū)。此時在工作區(qū)窗口將打開該工作區(qū)和工程。2)建立源文件:

      點擊菜單項 File → New,系統(tǒng)彈出一個新的、沒有標題的文本編輯窗,輸入光標位于窗口中第一行,按照實驗參考程序編輯輸入源文件代碼。編輯完后,保存文件 asm1_a.s。3)添加源文件:

      選擇 Project → Add To Project → Files 命令,或單擊工程管理窗口中的相應右鍵菜單命令,彈出文件選擇對話框,在工程目錄下選擇剛才建立的源文件 asm1_a.s。4)基本配置:

      選擇菜單項 Project → Settings?或快捷鍵 Alt+F7,彈出工程設置對話框。在工程設置對話框中,選擇 Processor 設置對話框,按照圖 1-2 所示,進行目標板所用處理器的配置。

      計算機學院軟件工程系嵌入式應用系統(tǒng)設計

      圖 1-2 新的工作區(qū)處理器配置

      5)編譯并生成目標代碼: 選擇菜單項 Build → Build asm_a或快捷鍵 F7,生成目標代碼。6)調試設置:

      選擇菜單項 Project → Settings?或快捷鍵 Alt+F7,彈出工程設置對話框。在工程設置對話框中,選擇 Remote 設置對話框,按照圖 1-4 所示對調試設備模塊進行設置我們這里只能實現(xiàn)軟件仿真,故選 SimArm7。

      圖 1-4 新工作區(qū)仿真器配置

      按照圖 1-4 所示對調試設備模塊進行設置我們這里只能實現(xiàn)軟件仿真,注意: Symbol file 與 Download file 設置應該相同,用戶可以從 Linker 頁面拷貝系統(tǒng)默認的輸出文件配置;且該實驗輸入下載地址為 0x8000,即為AS 默認的代碼段起始地址。由于匯編和鏈接選項在本實驗中沒有進行配置,完全使用其默認選項,所以,代碼段是從 0x8000 開始的,下載地址應該與它保持一致。

      計算機學院軟件工程系嵌入式應用系統(tǒng)設計

      7)選擇 Debug 菜單 Remote Connect 進行連接軟件仿真器,執(zhí)行 Download 命令下載程序,并打開寄存器窗口。打開 memory 窗口,觀察地址 0x8000~0x801f 的內容,與地址 0xff0~0xfff 的內容。8)單步執(zhí)行程序并觀察和記錄寄存器與 memory 的值變化。9)結合實驗內容和相關資料,觀察程序運行,通過實驗加深理解 ARM 指令的使用。

      10)程序運行以及觀察結果如下圖所示:

      上圖為單步調試開始時執(zhí)行結果,內容的地址為: 0x8000

      上圖是執(zhí)行到stop之前的調試結果。五.實驗總結

      初次接觸到嵌入式,通過此次實驗對嵌入式的內容以及研究的對象有了初始化的理解,這有助于以后對嵌入式的學習。

      計算機學院軟件工程系嵌入式應用系統(tǒng)設計

      實驗二 ARM 匯編指令 一實驗目的

      初步學會使用Embest IDE for ARM 開發(fā)環(huán)境及 ARM 軟件模擬器。通過實驗掌握簡單 ARM 匯編指令的使用方法。二實驗設備 硬件:PC 機。

      軟件:Embest IDE Pro 集成開發(fā)環(huán)境,Windows 98/2000/NT/XP。三實驗內容

      熟悉開發(fā)環(huán)境的使用并使用ldr/str,mov等指令訪問寄存器或存儲單元。使用 add/sub/lsl/lsr/and/orr等指令,完成基本數(shù)學/邏輯運算。

      四實驗操作步驟

      1)在工作區(qū)窗口工作區(qū)名稱上擊右鍵鼠標,在彈出的快捷菜單中選擇“Add New Project to Workspace?”。

      2)參照實驗 A 及相應的實驗參考程序,建立工程 asm1_b。3)添加源文件:

      選擇 Project → Add To Project → Files 命令,或單擊工程管理窗口中的相應右鍵菜單命令,彈出文件選擇對話框,在工程目錄下選擇剛才建立的源文件 asm1_b.s。4)基本配置:

      選擇菜單項 Project → Settings?或快捷鍵 Alt+F7,彈出工程設置對話框。在工程設置對話框中,選擇 Processor 設置對話框,按照圖 1-7 所示,進行目標板所用處理器的配置。

      計算機學院軟件工程系嵌入式應用系統(tǒng)設計

      5)編譯并生成目標代碼:

      選擇菜單項 Build → Build asm_a或快捷鍵 F7,生成目標代碼。6)參照實驗A 的步驟完成調試設置。

      7)選擇 Debug 菜單 Remote Connect 進行連接軟件仿真器,執(zhí)行 Download 命令下載程序,并打開寄存器窗口。打開 memory 窗口.8)程序執(zhí)行結果及總結:

      計算機學院軟件工程系嵌入式應用系統(tǒng)設計

      初次接觸到嵌入式,通過此次實驗對嵌入式的內容以及研究的對象有了初始化的理解,這有助于以后對嵌入式的學習。并且本次實驗后,明白了嵌入式的開發(fā)環(huán)境及所用到的開發(fā)軟件,其次就是對程序的調試與運行,通過實驗認真思考其原理知識。本次實驗收益匪淺。五實驗參考程序

      #NAME asm1_b.s # Author: Embest #DesARMinstructionexamples.equ x, 45 /* x=45 */.equ y, 64 /* y=64 */.equ z, 87 /* z=87 */.equstack_top, 0x1000 /* define the top address for stacks */.global _start.text _start: /* code start */ mov r0, #x /* put x value into R0 */ mov r0, r0, lsl #8 /* R0 = R0 << 8 */ mov r1, #y /* put y value into R1 */ 計算機學院軟件工程系嵌入式應用系統(tǒng)設計

      add r2, r0, r1, lsr #1 /* R2 =(R1>>1)+ R0 */ movsp, #0x1000 str r2, [sp] mov r0, #z /* put z value into R0 */ and r0, r0, #0xFF /* get low 8 bit from R0 */ mov r1, #y /* put y value into R1 */ add r2, r0, r1, lsr #1 /* R2 =(R1>>1)+ R0 */ ldr r0, [sp] /* put y value into R1 */ mov r1, #0x01 orr r0, r0, r1 mov r1, R2 /* put y value into R1 */ add r2, r0, r1, lsr #1 /* R2 =(R1>>1)+ R0 */ }}

      實驗三 C 語言程序實驗一

      一.實驗目的

      學會使用Embest IDE 編寫簡單的 C 語言程序并進行調試。學會編寫和使用命令腳本文件。

      掌握過memory/register/watch/variable 窗口分析判斷運行結果。二.實驗設備

      硬件:PC 機。

      軟件:Embest IDE Pro 2005 集成開發(fā)環(huán)境,Windows 98/2000/NT/XP。三.實驗內容

      利用命令腳本初始化棧指針,并使用 c 語言完成延時函數(shù)。四.實驗操作步驟

      1)參考前面實驗創(chuàng)建新的工程(工程名為 C1);

      2)按照參考程序,編寫源文件 C1.c 和 C1.cs,并把它們加入工程里面。C1.cs 加在工程根目錄即可。

      計算機學院軟件工程系嵌入式應用系統(tǒng)設計

      3)參考前面例子進行標準的設置,其中需要注意的是,在調試 Debug 對話框設置的時候,增加連接后自動執(zhí)行腳本文件:

      4)參考前面實驗步驟進行編譯和連接;

      5)下載,打開 Memory/Register/Watch/Variable 窗口,單步執(zhí)行,通過 memory/register /watch/variable 窗口分析判斷結果,在 watch 框中輸入要觀察變量 I 和變量 J 的值,并記錄下來。特別注意在 variable 窗口觀察變量 I 的變化并記錄下來;

      6)結合實驗內容和相關資料,觀察程序運行,通過實驗; 7)理解和掌握實驗后,完成實驗練習題。五.實驗參考程序 1.C1.c 參考源代碼:/********************************************************** * File: c1.c * Author: embest * Desc: c language example 1 /*********************************************************/ /* function declare */ void delay(int nTime);/********************************************************** * name: _start * func: entry point **********************************************************/ _start(){ int i = 5;for(;;){ delay(i);} } /********************************************************** * name: delay * func: delay some time * para: nTime--input * ret: none *******************************************************/ void delay(nTime){

      int i, j = 0;for(i = 0;i < nTime;i++){ for(j = 0;j < 10;j++)} 計算機學院軟件工程系嵌入式應用系統(tǒng)設計

      } 2.C1.cs 參考源代碼 stop regwrite sp 0x1000;initialize the sp , sp = 0x1000 實驗截圖如下:

      六、實驗總結

      在實驗中我慢慢地熟悉了EmbestIDE的使用,在老師的教導和指導下,學會了編寫和使用簡單的命令腳本文件,學會了在memory/register/watch/variable等等中查看變量,分析判斷運行結果。

      計算機學院軟件工程系嵌入式應用系統(tǒng)設計

      實驗四 C 語言程序實驗二

      一.實驗目的

      掌握建立基本完整的 ARM 工程,包含啟動代碼,連接腳本等。了解 ARM9 啟動過程,學會使用Embest IDE 編寫簡單的 C 語言程序和匯編啟動代碼并進行調試。掌握鏈接腳本的作用。掌握如何指定代碼入口地址與入口點。掌握通過 memory/register/watch/variable 窗口分析判斷結果。二.實驗設備

      硬件:PC 機。

      軟件:Embest IDE Pro 2005 集成開發(fā)環(huán)境,Windows 98/2000/NT/XP。三.實驗內容

      用 c 語言編寫延時函數(shù),使用嵌入?yún)R編實驗原理 1.ARM 異常向量表

      當正常的程序執(zhí)行流程暫時掛起時,稱之為異常,例如:處理一個外部的中斷請求。在處理異常之前,必須保存當前的處理器狀態(tài),以便從異常程序返回時可以繼續(xù)執(zhí)行當前的程序。ARM 異常向量表如下:

      表 1-4 ARM 異常向量表

      地址異常入口模式 0x00000000 Reset 管理 0x00000004 Undefined Instruction 未定義 0x00000008 Software interrupt 管理0x0000000C Prefetch abort 中止 0x00000010 Data abort 中止 0x00000014 Reserved 保留 0x00000018 IRQ IRQ 0x0000001C FIQ FIQ處理器允許多個異常同時發(fā)生,這時,處理器會按照固定的順序進行處理,參照下面的異常優(yōu)先級。

      高優(yōu)先級: 1----Reset 2----Data abort 3----FIQ 4----IRQ 5----Prefetch abort 低優(yōu)先級: 6----Undefined Instruction,Software interrupt 由上可見,Reset 入口,即為整個程序的實際入口點。因此,我們在編寫代碼的時候,第一條語句是在 0x00000000 處開始執(zhí)行的。一般地,我們使用下面的代碼: #---Setup interrupt / exception vectors B Reset_HandlerUndefined_Handler: B Undefined_HandlerSWI_Handler: B SWI_HandlerPrefetch_Handler: B Prefetch_HandlerAbort_Handler: B Abort_Handler NOP /* Reserved vector */ IRQ_Handler: B IRQ_HandlerFIQ_Handler: B FIQ_HandlerReset_Handler: LDR sp, =0x00002000 2.鏈接腳本文件

      所有的鏈接都是通過鏈接腳本來控制實現(xiàn)的。這些鏈接腳本文件使用鏈接命令語言編寫。鏈接腳本的主要作用是描述我們編寫的文件中這么多個部分應該如何的 計算機學院軟件工程系嵌入式應用系統(tǒng)設計

      相應擺放在輸出文件中,并控制存儲區(qū)如何定位這些輸出文件。同時,如果需要,我們還可以使用鏈接腳本文件實現(xiàn)其它功能。大部分鏈接腳本文件都是很簡單的。簡單的鏈接腳本只有一行命令:SECTIONS。我們使用 SECTIONS 命令來告訴存儲區(qū)應該如何擺放我們的輸出文件。SECTIONS 命令是一個強大的命令,這里通過一個簡單的例子來說明一下。假設程序中包括代碼、已經(jīng)初始化的數(shù)據(jù)和還沒有初始化的數(shù)據(jù)。這些需要相應的分別擺放在.text.data 和.bss部分。針對這個例子,我們可以假設代碼必須放在 0x10000,數(shù)據(jù)必須放在地址 0x8000000 開始的地方。下面是一個描述上面內容的一個簡單的鏈接腳本:

      SECTIONS {.= 0x10000;.text : { *(.text)}.= 0x8000000;.data : { *(.data)}.bss : { *(.bss)}.} 鏈接腳本文件中全部使用半角符號,文件編寫格式必須從 SECTIONS 關鍵字開始,緊接著是開大括號,接著是所有需要輸出的描述部分,后用閉大括號收尾。上面的例子的鏈接腳本命令第一行使用專門的符號“.”,它指向當前的地址計數(shù)器。如果沒有在其它地方專門的說明輸出部分的地址(有關“其它地方”后面有說明),一般程序都會默認當前的地址計數(shù)器。地址計數(shù)器會根據(jù)輸出部分的大小而增加。在 SECTIONS 命令開始,地址計數(shù)器一般為 0。第二行定義了一個輸出區(qū),.text。其中的“:”號是必須的,但是它經(jīng)常被忽略。在大括號里面,每個輸出部分的名稱后面必須把所有需要輸入的部分的名字都列出來?!?”號是一個通配符,可以搭配成任何文件名字。*(text)表示在輸入文件中所有的.text 輸入部分。開始時定義了輸出部分.text 的起始地址為 0x10000,鏈接器會把輸出文件中的.text 部分的地址設置為 0x10000。在后面的幾行里面,定義了.data 和.bss部分。連接器會把.data 輸出部分的起始地址設置為 0x8000000。當連接器設置.data 部分后,當前地址計數(shù)器會自動指向 0x800000。這樣,連接器會緊跟著把.bss部分放在.data 部分后面。連接器會增加本地計數(shù)器,以確保需要時每個輸出部分都有必需的隊列。在這個例子里面,為.text和.data 部分指定了特定的地址,這兩個部分會確??梢缘玫疥犃斜WC,但是連接器可能會在.dat a 和.bss之間創(chuàng)建一個小小的空隙。

      3.內嵌匯編語言從下面的示例看得出來,GCC 支持大部分基本的內嵌匯編語言。編譯器遇到這個聲明的時會在輸出流中插入一個匯編語言標記。示例:一個基本的內嵌匯編語言例子 __asm__(“mov r1, r2”);四.實驗操作步驟

      1.參考前面實驗創(chuàng)建新的工程(工程名為:C2)。

      2.編寫新的源代碼文件 c2.c,init.s和腳本文件ldscript,并把它們加入工程中。

      3.參考前面例子進行標準的設置。4.參考前面實驗步驟進行編譯&連接。

      計算機學院軟件工程系嵌入式應用系統(tǒng)設計

      5.下載調試,打開 memory/register/watch/variable 窗口,單步執(zhí)行,并通過 memory/re gister/watch/variable 窗口分析判斷結果。

      6.結合實驗內容和相關資料,觀察程序運行。7.理解和掌握實驗后,完成實驗練習題。五.實驗參考程序 1.c2.c 參考源代碼

      /******************************************************************* *File: c2.c * Author: embest * Desc: c language example 2 ********************************************************************/ /******************************************************************** * name: _nop_ * func: The following shows c language embededassembel language * para: none * ret: none ********************************************************************/ void _nop_(){ __asm(“ mov r0,r0 ”);} /******************************************************************** * name: delay * func: delay time * para: none * ret: none ********************************************************************/ void delay(void){ inti;for(i = 0;i<= 10;i++){ _nop_();} } /******************************************************************** * name: delay10 * func: delay time * para: none * ret: none ********************************************************************/ void delay10(void){ inti;for(i = 0;i<= 10;i++){ delay();} } /******************************************************************** * name: _main 計算機學院軟件工程系嵌入式應用系統(tǒng)設計

      * func: c code entry * para: none * ret: none ********************************************************************/ __main(){ inti = 5;for(;;){ delay10();} } 2.init.s 參考源代碼:

      #******************************************************************** # File:init.s # Author: embest # Desc:C start up codes.Configure memory, #InitializeISR ,stacks,initialize C-variables # Fill zeros into zero-initialized C-variables #******************************************************************** /* global symbol define */.global _start /* code */.text _start: # Set interrupt / exception vectors b Reset_HandlerUndefined_Handler: b Undefined_HandlerSWI_Handler: b SWI_HandlerPrefetch_Handler: b Prefetch_HandlerAbort_Handler: b Abort_Handlernop /* Reserved vector */ IRQ_Handler: b IRQ_Handler FIQ_Handler: b FIQ_HandlerReset_Handler: ldrsp, =0x00002000 # ******************************************************************** # Branch on C code Main function(with interworking).* # Branch must be performed by an interworking call as.* # either an ARM or Thumb.main C function must be.* # supported.This makes the code not position-independent.* # A Branch with link would generate errors * # ***********************************************************************.extern __main ldr r0, = __main movlr, pc # jump to __main()bx r0 # ************************************************************************ # * Loop for ever * 計算機學院軟件工程系嵌入式應用系統(tǒng)設計

      # * End of application.Normally, never occur.* # * Could jump on Software Reset(B 0x0).* # ************************************************************************End: b End.end 3.ldscript參考源代碼:

      SECTIONS {.= 0x0;.text : { *(.text)}.data : { *(.data)}.rodata : { *(.rodata)}.bss : { *(.bss)} } 五.實驗截圖如下:

      六、實驗總結:

      在實驗中我學會了建立基本完整的 ARM 工程,包含啟動代碼,連接腳本等。了解 ARM9 啟動過程,學會簡單使用 Embest IDE 編寫簡單的 C 語言程序和匯編啟動代碼并進行調 試。明白了一些鏈接腳本的作用。子解了如何指定代碼入口地址與入口點。通過 memory/register/watch/variable 窗口分析判斷結果。

      計算機學院軟件工程系嵌入式應用系統(tǒng)設計

      實驗五 LED 控制實驗

      一.實驗目的

      ? 在 EBDCC2530 節(jié)點板上運行自己的程序。? 通過 I/O 控制小燈閃爍和蜂鳴器鳴叫。二.實驗環(huán)境

      ? 硬件:PC 機,EBDCC2530 節(jié)點板,USB 接口仿真器。? 軟件:Windows 98/2000/NT/XP,IAR 集成開發(fā)環(huán)境。三.實驗原理

      低電平來控制燈的亮與滅和蜂鳴器的鳴叫。

      本實驗設置 P1.0、P1.1、P1.4 I/O 引腳來選通 LED1、LED2、LED3,引腳置為低電平點亮 LED,反之熄滅 LED。設置 P0.1 引腳來選通 BEEP,引腳置為低電平蜂鳴器鳴叫,反之蜂鳴器不鳴叫。

      P1DIR(P1 方向寄存器):D7 D6 D5 D4 D3 D2 D1 D0 P1.7方向 0:輸入 1:輸出P1.6方向 0:輸入 1:輸出 P1.5方向 0:輸入 1:輸出P1.4方向 0:輸入 1:輸出 P1.3方向 0:輸入 1:輸出P1.2方向 0:輸入 1:輸出 P1.1方向 0:輸入 1:輸出P1.0方向 0:輸入 1:輸出

      P1.7 功能 0:普通 I/O 1:外設P1.6 功能 0:普通 I/O 1:外設 P1.5 功能 0:普通 I/O 1:外設P1.4 功能 0:普通 I/O 1:外設 P1.3 功能 0:普通 I/O 1:外設P1.2 功能 0:普通 I/O 1:外設 P1.1 功能 0:普通 I/O 1:外設P1.0 功能 0:普通 I/O 1:外設 LDE 燈實現(xiàn)的主要代碼為: void main(void){ led_beep_init();halWait(250);while(1){ //開始循環(huán) LED1 = 0;LED1 = 1;//LED1 閃爍halWait(250);halWait(250);LED2 = 0;//LED2 閃爍 halWait(250);LED2 = 1;halWait(250);LED3 = 0;//LED3 閃爍 halWait(250);LED3 = 1;halWait(250);BEEP = 0;//BEEP 鳴叫 halWait(250);BEEP = 1;halWait(250);LED1 = 0;LED2 = 0;LED3 = 0;//LED 燈全亮 halWait(250);halWait(250);LED1 = 1;LED2 = 1;LED3 = 1;//LED 燈全滅

      計算機學院軟件工程系嵌入式應用系統(tǒng)設計

      halWait(250);halWait(250);} } 四.實驗步驟

      1、正確連接 USB 仿真器的下載線和 EBDCC2530 節(jié)點板。

      2、打開實驗源碼LEDs.eww(路徑為:出廠光盤 DISK-EMBV210-WSN