




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、精選優(yōu)質文檔-傾情為你奉上南京郵電大學通達學院實 驗 報 告實驗名稱:_實驗一 基于ADS開發(fā)環(huán)境的程序設計 實驗二 開發(fā)板的認知和GPIO實驗_ 實驗三 串行口實驗 實驗四 Linux交叉開發(fā)環(huán)境的建立_ 實驗五 Makefile 編程實驗 課程名稱 嵌入式系統(tǒng)A 班級學號 姓 名 王婷婷 開課時間 2014/2015學年 第2學期 實驗一 基于ADS開發(fā)環(huán)境的程序設計一、實驗目的1、學習ADS開發(fā)環(huán)境的使用;2、學習和掌握ADS環(huán)境下的匯編語言及C語言程序設計;3、學習和掌握匯編語言及C語言的混合編程方法。二、實驗內容1、編寫和調試匯編語言程序;2、編寫和調試C語言程序;3、編寫和調試匯編
2、語言及C語言的混合程序;4、編寫程序測試多寄存器傳送指令的用法。三、實驗原理匯編語言的基礎知識、C語言編程的基礎知識四、實驗過程與關鍵代碼分析例3-5在匯編中使用C定義的全局變量實驗程序:C程序:Asm程序:實驗結果:五、實驗小結通過本次試驗,我基本了解了ADS開發(fā)環(huán)境的使用方法,掌握了如何在ADS開發(fā)環(huán)境下建立工程、添加C源程序到工程、編譯鏈接和調試C程序,對之前學過的C語言有了更進一步的理解。實驗二 開發(fā)板的認知和GPIO實驗LED跑馬燈一、 實驗目的1、熟悉 ADS 開發(fā)環(huán)境。2、 掌握 S3C2440A 內部相關寄存器的操作方法,最終實現(xiàn)對外部設備的控制。3、 熟悉在 ARM 裸機環(huán)境
3、下的 C 語言編程。二、實驗設備FL2440 開發(fā)板、PC 機、JTAG 調試板。三、 實驗內容1、建立 ADS 開發(fā)環(huán)境。2、編程實現(xiàn)對開發(fā)板上發(fā)光二極管 LED 的跑馬燈控制。四、實驗原理從電路圖上我們可以看到,發(fā)光二極管LED 的一端連接到了ARM 的GPIO,另一端經過一個限流電阻接電源VCC。當GPIO 口為低電平時,LED 兩端產生電壓降,這時LED 有電流通過并發(fā)光。反之當GPIO 為高電平時,LED 將熄滅。注意亮滅之間要有一定的延時,以便人眼能夠區(qū)分出來。五、實驗過程實驗步驟:1. 準備好實驗環(huán)境,將JTAG 調試板的一端與PC 的并口相連,另一端連接到開發(fā)板的JTAG接口(
4、在串口0 附近)。2. 將串口線的一端插在PC 的串口上,另一端插在開發(fā)板的COM0上。打開DNW.EXE 軟件,給開發(fā)板上電,使Bootloader 停在菜單處(在系統(tǒng)引導時按空格鍵)。3. 打開軟件ADS Code Warrior,新建工程led.mcp,并添加兩個程序文件led.c和init.S(匯編文件)。4. 對工程文件進行相應設置(參考開發(fā)板準備實驗1.7 節(jié))5. 編譯該工程,成功后將生成映像文件led.axf。打開AXD,裝載映像文件led.axf。6. 運行程序,觀察結果。實驗電路: 如上圖所示, 通過控制 4 個 GPIO 口 GPB5 、 GPB6 、 GPB8 、 GP
5、B10,來實現(xiàn)對四個發(fā)光二極管 LED0 、LED1、LED2、LED3 亮滅的控制。實驗程序:/*本實驗接口說明GPB5 - LED0GPB6 - LED1GPB8 - LED2GPB10 - LED3*/*-地址聲明-*/#define GPBCON (*(volatile unsigned *)0x) #define GPBDAT (*(volatile unsigned *)0x) #define GPBUP (*(volatile unsigned *)0x)#define uchar unsigned char#define uint unsigned int/*-定義全局變量-*
6、/*-函數聲明-*/void Delay(int x);/*-/函數名稱:Delay功能描述:延時函數傳 參:int x返 回 值:無-*/void Delay(int x) int k, j; while(x) for (k=0;k<=0xff;k+) for(j=0;j<=0xff;j+); x-; /*-函數名稱:ledMain功能描述:入口程序初始化后,進入跑馬燈死循環(huán)傳 參:無返 回 值:int 0-*/int ledMain(void)GPBCON = 0x1dd7fc;/ GPB5,GPB6,GPB8,GPB10設置為輸出GPBDAT = (1<<5)|(
7、1<<6)|(1<<8)|(1<<10);/使LED全滅GPBDAT&=0xffe;/關閉蜂鳴器GPBUP = 0x00; while (1)/ 死循環(huán)GPBDAT = (1<<5);/LED0亮Delay(500);GPBDAT = (1<<6);/LED1亮Delay(500);GPBDAT = (1<<8);/LED2亮Delay(500);GPBDAT = (1<<10);/LED3亮Delay(500);return 0; AREA |DATA|,CODE,READONLY ENTRY ldr
8、 r13, =0x1000 IMPORT ledMain b ledMain END實驗結果:四個發(fā)光二極管 LED 輪流閃爍,最終實現(xiàn)流水燈效果。修改程序中Delay函數調用的值將改變它們顯示的速度,值越大,顯示越慢。六、實驗小結本次實驗是第一次做有關開發(fā)板的實驗,我對實驗器材和實驗步驟都不太了解,在實驗的過程中遇到很多問題。后來,在老師和同學的幫助下,我連接好開發(fā)板,運行程序,觀察到實驗板上的四個發(fā)光二極管輪流閃爍。除此之外,我還掌握了S3C2440A 內部相關寄存器的操作方法,實現(xiàn)了對外部設備的控制。實驗三 串行口實驗一、 實驗目的1、掌握 ARM 處理器的串行通信原理2、通過編程,實現(xiàn)
9、開發(fā)板與 PC 機之間的串行收發(fā)數據二、 實驗設備FL2440 開發(fā)板、ADS1.2 開發(fā)環(huán)境、JTAG 調試板、串口連接線。三、 實驗內容編寫串口程序,使開發(fā)板收到數據后再把數據發(fā)回。四、 實驗原理開始前,線路處于空閑狀態(tài),送出連續(xù)“1”。傳送開始時首先發(fā)一個“0”作為起始位,然后出現(xiàn)在通信線桑的時字符的二進制編碼數據。每個字符的數據位長可以約定為:5 位、6 位、7位或8 位,一般采用ASCII 編碼,后面時奇偶校驗位,根據約定,用奇偶校驗位將所傳的字符中為“1”的位數湊成奇數個或偶數個。也可以約定不要奇偶校驗,這樣就取消奇偶校驗位。最后時表示停止位的“1”信號,這個停止位可以約定連續(xù)1
10、位、1.5 位或2 位的時間寬度。至此一個字符傳送完畢,線路又進入空閑,持續(xù)為“1”。經過一段隨機的時間后,下一個字符開始傳送。傳輸速率:每一個數據位的寬度定于發(fā)送波特率的倒數。微機異步串行通信中,常用的波特率為110、150、300、600、1200、2400、4800、9600、57600、 等。波特率發(fā)生器每個UART 的波特率發(fā)生器為傳輸提供了串行移位時鐘。波特率產生器的時鐘源可以從S3C2440A 的內部系統(tǒng)時鐘或UEXTCLK 中來選擇。波特率由時鐘源(PCLK、FCLK 或UEXTCLK)16分頻和UART 波特率除數寄存器(UBRDIVn)指定的16 位除數決定。UBRDIVn
11、 的置可以按照下式確定:UBRDIVn(int)( UART clock/(bps*16))1(UART clock: PCLK 、FCLK 或UEXTCLK)除數的范圍為1 到(2161)。例如,如果波特率為bps,UART 為40MHz,則UBRDIVn為:UBRDIVn (int)( /(×16) 1(int)( 21.7)122121五、 實驗過程實驗電路:實驗步驟:1. 準備實驗環(huán)境,將JTAG 調試板的25 針端與PC 的并口相連,另一端(WIGGLER 口)通過20P 排線與開發(fā)板的JTAG 接口(在串口0 附近)相連。2. 將串口線的一端插在PC 的串口上,另一端插在
12、開發(fā)板的COM0 上。打開DNW.EXE 軟件,進行相應設置。給開發(fā)板上電并在Bootloader 啟動時停在菜單處。3. 打開ADS CodeWarrior,在ADS CodeWarrior 中打開實驗工程serial.mcp.4. 對工程文件進行相應設置(參考開發(fā)板準備實驗1.7 節(jié)),并對工程進行編譯。5. 打開ARM 的開發(fā)環(huán)境AXD Debugger,在AXD Debugger 中加載可執(zhí)行映象文件serial.Axf。6. 執(zhí)行映象文件,觀察實驗結果。實驗程序:#define ULCON0 (*(volatile unsigned *)0X) /UART線控制寄存器#define
13、UCON0 (*(volatile unsigned *)0X) /UART控制寄存器#define UFCON0 (*(volatile unsigned *)0X) /FIFO控制寄存器#define UTRSTAT0 (*(volatile unsigned *)0X) /UART狀態(tài)寄存器#define UBRDIV0 (*(volatile unsigned *)0X)/波特率#define UTXH0 (*(volatile unsigned *)0X)#define URXH0 (*(volatile unsigned *)0X)#define GPBDAT (*(volatil
14、e unsigned *)0X)int TSmain()char buf;ULCON0 &=0XFFFFFF00;ULCON0 |=0X03; /1位起始位,8位數據位UCON0 =0X0805; /串口時鐘PCLK,查詢方式UBRDIV0 =0X1A; /波特率while(1) if(UTRSTAT0 & 0X01) /接收是否完畢 =1結束buf=URXH0; /讀取數據while(!(UTRSTAT0 & 0X04);/是否允許發(fā)送 =1允許UTXH0=buf; return 0; AREA |DATA|,CODE,READONLYENTRY ldr r13,=0
15、x1000 IMPORT TSmain b TSmain END實驗結果:六、實驗小結 通過本次試驗,我了解了ARM處理器的串行通信的原理、傳輸格式和電氣特性,掌握了相關寄存器的配置方法。此外,我還通過編寫串口程序,實現(xiàn)了開發(fā)板接收數據后又發(fā)回數據。這為我以后的實驗奠定了基礎。實驗四 Linux交叉開發(fā)環(huán)境的建立一、實驗目的1、了解什么是交叉編譯。2、了解交叉編譯工具。3、學會安裝及使用交叉編譯器。二、實驗設備PC機三、實驗內容1、安裝交叉編譯器。2、使用交叉編譯器編譯程序。四、實驗原理什么是交叉編譯在一種計算機環(huán)境中運行的編譯程序,能編譯出在另外一種環(huán)境下運行的代碼,我們就稱這種
16、編譯器支持交叉編譯。這個編譯過程就叫交叉編譯。簡單地說,就是在一個平臺上生成另一個平臺上的可執(zhí)行代碼。如keil 軟件,在keil 上編譯,但在單片機上運行,典型的交叉編譯。我們在開發(fā)板上運行的程序,是在PC 機上編譯的,所以是交叉編譯。安裝交叉編譯器安裝交叉編譯器,只需將該編譯器的解壓縮文件放在指定的目錄下邊。指定目錄為:/usr/local/arm/ 若local 下沒有arm 文件夾,則需要自己建一個。在使用的時候有兩種方式:(以編譯hello.c 程序為例,生成可執(zhí)行文件hello)1.# /usr/local/arm/3.4.1/bin/arm-linux-gcc hello.c o
17、 hello2.編輯/etc/bashrc 文件,在最后增加路徑:export PATH=/usr/local/arm/3.4.1/bin:$PATH,這樣就把/usr/local/arm/3.4.1/bin 添加到命令的默認路徑,在編譯的時候則可直接用如下的命令# arm-linux-gcc hello.c o hello五、 實驗過程、Hello World:實驗程序:實驗結果:掛載:六、實驗小結通過這次實驗,我對Linux系統(tǒng)有了一個初步的了解,對于課堂學習的知識也有了一定的應用,因此,我實現(xiàn)了理論與實踐相結合。通過實驗操作,我了解了嵌入式基本設置及其讀寫程序,我對硬件設備的設計也有了一
18、定的了解。在剛開始學習建立Linux交叉開發(fā)環(huán)境時,我遇到了不少的問題,對于較為復雜的編程以及Linux環(huán)境下的很多技巧都知道得很少,花費了很多時間。我深知,這一塊兒知識正是我所欠缺的,在以后的學習中要加強。實驗五 Makefile 編程實驗一、實驗目的1、了解 make 命令。2、了解 Makefile。3、熟悉 Makefile 編程。二、 實驗設備PC機三、實驗內容使用 Makefile 編譯程序。四、 實驗原理Makefile 文件包含了五部分內容:顯示規(guī)則、隱式規(guī)則、變量定義、文件指示和注釋。Makefile 里的變量就像一個環(huán)境變量。事實上,環(huán)境變量在make 中也被解釋成make
19、 的變量。這些變量對大小寫敏感,一般使用大寫宇母。幾乎可以從任何地方引用定義的變量。Makefile中的變量是用一個文本串在Makefile 中定義的,這個文本串就是變量的值。只要在一行的開始寫下這個變量的名字,后面跟一個“”號,以及要設定這個變量的值即可定義變量,下面是定義變量的語法:VARNAME=stringMake 工作時的執(zhí)行步驟:(1) 讀入所有的makefile 文件(2) 讀入被include 包括的其他的makefile 文件(3) 初始化文件中的變量(4) 推到隱式規(guī)則,并分析所有規(guī)則(5) 為所有的目標文件創(chuàng)建依賴關鍵鏈(6) 根據依賴關系,決定哪些目標要重新生成(7)
20、執(zhí)行生成命令第(1)(5)步為第一個階段,第(6)(7)步為第二個階段。第一個階段中,如果定義的變量被使用了,make 會在它使用的位置把它展開。但make 并不會馬上完全展開,make 使用的是拖延戰(zhàn)術。如果變量出現(xiàn)在依賴關系的規(guī)則中,進當這條依賴關系決定要使用時,變量才會在其內部展開。五、 實驗過程實驗步驟:1. 在某一目錄下編輯上述l 六個文件test.c、prog.c 、code.c 、prog.h 、code.h 、Makefile2. 運行命令#make,生成可執(zhí)行文件test3. 運行程序./test實驗程序:#include <stdio.h>extern area
21、(float);extern circle(float);main()printf("dgjdkfhgkjfdgn");area(2.5);circle(2.5);return 0;/*prog.c*/#include "prog.h"#include "code.h"#include <stdio.h>area(float r)printf("r=%fn",r);printf(format_area,PI*r*r);printf("gfhfghfhn");/*code.c*/#include "code.h"#include <stdio.h>void circle(float r)printf(format_cir
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 井蓋采購合同范例
- 代供還款合同范例
- 醫(yī)學教育的新趨勢納米技術課程的設計與實施
- 醫(yī)療保健領域中區(qū)塊鏈與供應鏈金融的融合策略
- 二押車借款合同范例
- 健康管理的數字化轉型-電子病歷系統(tǒng)的核心作用
- 俱樂部投資合同范例
- 買賣合同變更補充合同范例
- 主播勞動合同范例
- 辦公健康管理醫(yī)療AI的創(chuàng)新實踐
- 2025年北京市海淀區(qū)高三語文二模議論文《從知到智》范文
- 飯店員工勞務合同9篇
- 壓敏電阻材料在織物上的印刷技術應用
- 2025民宿租賃合同標準范本
- 2025-2030中國水鎂石行業(yè)供需形勢與營銷策略分析研究報告
- 《中國國家博物館》課件
- 遼寧省部分高中2023-2024學年高二下學期期中考試數學試題(解析版)
- 四川省南充市閬中中學校2024-2025學年高二下學期4月期中 化學試題(含答案)
- 初中數學《軸對稱及其性質》教學課件 2024-2025學年北師大版數學七年級下冊
- 食用農產品集中交易市場基本情況信息表
- 購買機票合同協(xié)議
評論
0/150
提交評論