




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
南京郵電大學通達學院實驗報告實驗名稱:實驗一基于ADS開發環境的程序設計實驗二開發板的認知和GPIO實驗實驗三串行口實驗實驗四Linux交叉開發環境的建立—實驗五Makefile編程實驗課程名稱 嵌入式系統A班級學號 12000401 姓名 王婷婷 開課時間 20142015學年第2學期實驗一基于ADS開發環境的程序設計一、實驗目的1、 學習ADS開發環境的使用;2、 學習和掌握ADS環境下的匯編語言及C語言程序設計;3、 學習和掌握匯編語言及C語言的混合編程方法。二、 實驗內容1、 編寫和調試匯編語言程序;2、 編寫和調試C語言程序;3、 編寫和調試匯編語言及C語言的混合程序;4、 編寫程序測試多寄存器傳送指令的用法。三、 實驗原理匯編語言的基礎知識、C語言編程的基礎知識四、 實驗過程與關鍵代碼分析例3-5在匯編中使用C定義的全局變量實驗程序:C程序:E3cJinc1udestdio.h>intpubvar=5;externas?idat*(void);int )printt("oldglueofpubvsrisfpubvar);print(("newumluu口fpubv*r45:,狗i".叫成瑁r);return0:Asm程序:上■口■M.■舊-rf1■F”lh:C濟心仲FiL3削而知戒IAREAgaoyan,CODE,READONLYEXPORTasnd^taIMPORTpubvadasmdataidx=pubvarIdr±1.[rljnulr3Pi-lrr2str¥,,[rO]novpc.irE11D實驗結果:
五、實驗小結通過本次試驗,我基本了解了ADS開發環境的使用方法,掌握了如何在ADS開發環境下建立工程、添加C源程序到工程、編譯鏈接和調試C程序,對之前學過的C語言有了更進一步的理解。實驗二 開發板的認知和GPIO實驗LED跑馬燈一、 實驗目的1、 熟悉ADS開發環境。2、 掌握S3C2440A內部相關寄存器的操作方法,最終實現對外部設備的控制。3、 熟悉在ARM裸機環境下的C語言編程。二、 實驗設備FL2440開發板、PC機、JTAG調試板。三、 實驗內容1、 建立ADS開發環境。2、 編程實現對開發板上發光二極管LED的跑馬燈控制。四、 實驗原理從電路圖上我們可以看到,發光二極管LED的一端連接到了ARM的GPIO,另一端經過一個限流電阻接電源VCC。當GPIO口為低電平時,LED兩端產生電壓降,這時LED有電流通過并發光。反之當GPIO為高電平時,LED將熄滅。注意亮滅之間要有一定的延時,以便人眼能夠區分出來。五、 實驗過程實驗步驟:準備好實驗環境,將JTAG調試板的一端與PC的并口相連,另一端連接到開發板的JTAG接口(在串口0附近)。將串口線的一端插在PC的串口上,另一端插在開發板的‘COM0’上。打開DNW.EXE軟件,給開發板上電,使Bootloader停在菜單處(在系統引導時按空格鍵)。打開軟件‘ADSCodeWarrior’,新建工程‘led.mcp’,并添加兩個程序文件‘led.c’和‘init.S’(匯編文件)。對工程文件進行相應設置(參考《開發板準備實驗》1.7節)編譯該工程,成功后將生成映像文件‘led.axf’。打開AXD,裝載映像文件‘led.axf’。運行程序,觀察結果。實驗電路:如上圖所示,通過控制4個GPIO口GPB5、GPB6、GPB8來實現對四個發光二極管如上圖所示,通過控制4個GPIO口GPB5、GPB6、GPB8來實現對四個發光二極管LED0、LED1、LED2、LED3亮滅的控制。、GPB10,實驗程序:/*本實驗接口說明GPB5GPB6GPB8GPB10*/LED0LED1LED2LED3/*地址聲明*/#defineGPBCON(*(volatileunsigned*)0x56000010)#defineGPBDAT(^(volatileunsigned*)0x56000014)#defineGPBUP(*(volatileunsigned*)0x56000018)#defineucharunsignedchar#defineuintunsignedintTOC\o"1-5"\h\z/* 定義全局變量 *//* 函數聲明 */voidDelay(intx);/* /函數名稱:Delay功能描述:延時函數傳參:intx返回值:無 */voidDelay(intx)(intk,j;while(x)(for(k=0;k<=0xff;k++)for(j=0;j<=0xff;j++);x--;}}/* 函數名稱:ledMain功能描述:入口程序初始化后,進入跑馬燈死循環傳參:無返回值:int0 */intledMain(void)(GPBCON=0x1dd7fc;//GPB5,GPB6,GPB8,GPB10設置為輸出GPBDAT=((1<<5)|(1<<6)|(1<<8)|(1<<10));//使LED全滅GPBDAT&=0xffe; 〃關閉蜂鳴器GPBUP=0x00;while(1)while(1)//死循環GPBDAT=~(1<<5);//LED0亮Delay(500);GPBDAT=~(1<<6);//LED1亮Delay(500);GPBDAT=~(1<<8);//LED2亮Delay(500);GPBDAT=~(1<<10);//LED3亮Delay(500);}return0;}AREA|DATA|,CODE,READONLYENTRYldrr13,=0x1000IMPORTledMainbledMainEND實驗結果:四個發光二極管LED輪流閃爍,最終實現流水燈效果。修改程序中Delay函數調用的值將改變它們顯示的速度,值越大,顯示越慢。六、實驗小結本次實驗是第一次做有關開發板的實驗,我對實驗器材和實驗步驟都不太了解,在實驗的過程中遇到很多問題。后來,在老師和同學的幫助下,我連接好開發板,運行程序,觀察到實驗板上的四個發光二極管輪流閃爍。除此之外,我還掌握了S3C2440A內部相關寄存器的操作方法,實現了對外部設備的控制。實驗三串行口實驗一、 實驗目的1、 掌握ARM處理器的串行通信原理2、 通過編程,實現開發板與PC機之間的串行收發數據二、 實驗設備FL2440開發板、ADS1.2開發環境、JTAG調試板、串口連接線。三、 實驗內容編寫串口程序,使開發板收到數據后再把數據發回。四、 實驗原理開始前,線路處于空閑狀態,送出連續“1”。傳送開始時首先發一個“0”作為起始位,然后出現在通信線桑的時字符的二進制編碼數據。每個字符的數據位長可以約定為:5位、6位、7位或8位,一般采用ASCII編碼,后面時奇偶校驗位,根據約定,用奇偶校驗位將所傳的字符中為“1”的位數湊成奇數個或偶數個。也可以約定不要奇偶校驗,這樣就取消奇偶校驗位。最后時表示停止位的“1”信號,這個停止位可以約定連續1位、1.5位或2位的時間寬度。至此一個字符傳送完畢,線路又進入空閑,持續為“1”。經過一段隨機的時間后,下一個字符開始傳送。傳輸速率:每一個數據位的寬度定于發送波特率的倒數。微機異步串行通信中,常用的波特率為110、150、300、600、1200、2400、4800、9600、57600、115200等。波特率發生器每個UART的波特率發生器為傳輸提供了串行移位時鐘。波特率產生器的時鐘源可以從S3C2440A的內部系統時鐘或UEXTCLK中來選擇。波特率由時鐘源(PCLK、FCLK或UEXTCLK)16分頻和UART波特率除數寄存器(UBRDIVn)指定的16位除數決定。UBRDIVn的置可以按照下式確定:UBRDIVn=(int)(UARTclock/(bps*16))—1(UARTclock:PCLK、FCLK或UEXTCLK)除數的范圍為1到(216—1)。例如,如果波特率為115200bps,UART為40MHz,則UBRDIVn為:UBRDIVn=(int)(40000000/(115200X16))—1=(int)(21.7)—1=22—1=21五、 實驗過程實驗電路:
實驗步驟:準備實驗環境,將JTAG調試板的25針端與PC的并口相連,另一端(WIGGLER口)通過20P排線與開發板的JTAG接口(在串口0附近)相連。將串口線的一端插在PC的串口上,另一端插在開發板的COM0上。打開DNW.EXE軟件,進行相應設置。給開發板上電并在Bootloader啟動時停在菜單處。打開‘ADSCodeWarrior’,在ADSCodeWarrior中打開實驗工程serial.mcp.對工程文件進行相應設置(參考《開發板準備實驗》1.7節),并對工程進行編譯。打開ARM的開發環境AXDDebugger,在AXDDebugger中加載可執行映象文件‘serial.Axf’。6.執行映象文件,觀察實驗結果。實驗程序:#defineULCON0(^(volatileunsigned*)0X50000000) //UART線控制寄存器#defineUCON0(^(volatileunsigned*)0X50000004) //UART控制寄存器#defineUFCON0(*(volatileunsigned*)0X50000008) //FIFO控制寄存器#defineUTRSTAT0(*(volatileunsigned*)0X50000010) //UART狀態寄存器#defineUBRDIV0(*(volatileunsigned*)0X50000028)//波特率#defineUTXH0(*(volatileunsigned*)0X50000020)#defineURXH0(*(volatileunsigned*)0X50000024)#defineGPBDAT(*(volatileunsigned*)0X58000054)
intTSmain()(charbuf;ULCON0&=0XFFFFFF00;ULCON0|=0X03;UCON0=0X0805;UBRDIV0=0X1A;while(1)(if(UTRSTAT0&0X01)(//1位起始位,8位數據位//串口時鐘PCLK,查詢方式//波特率115200//接收是否完畢=1結束〃讀取數據buf=URXH0;〃讀取數據while(!(UTRSTAT0&0X04));//是否允許發送=1允許UTXH0=buf;return}return}0;AREA|DATA|,CODE,READONLYENTRYldrr13,=0x1000IMPORTTSmainbTSmainEND實驗結果:六、實驗小結通過本次試驗,我了解了ARM處理器的串行通信的原理、傳輸格式和電氣特性,掌握了相關寄存器的配置方法。此外,我還通過編寫串口程序,實現了開發板接收數據后又發回數據。這為我以后的實驗奠定了基礎。實驗四Linux交叉開發環境的建立一、 實驗目的1、 了解什么是交叉編譯。2、 了解交叉編譯工具。3、 學會安裝及使用交叉編譯器。二、 實驗設備PC機三、 實驗內容1、 安裝交叉編譯器。2、 使用交叉編譯器編譯程序。四、實驗原理什么是交叉編譯在一種計算機環境中運行的編譯程序,能編譯出在另外一種環境下運行的代碼,我們就稱這種編譯器支持交叉編譯。這個編譯過程就叫交叉編譯。簡單地說,就是在一個平臺上生成另一個平臺上的可執行代碼。如keil軟件,在keil上編譯,但在單片機上運行,典型的交叉編譯。我們在開發板上運行的程序,是在PC機上編譯的,所以是交叉編譯。安裝交叉編譯器安裝交叉編譯器,只需將該編譯器的解壓縮文件放在指定的目錄下邊。指定目錄為:/usr/local/arm/若local下沒有arm文件夾,則需要自己建一個。在使用的時候有兩種方式:(以編譯hello.c程序為例,生成可執行文件hello)#/usr/local/arm/3.4.1/bin/arm-linux-gcchello.c-ohello編輯/etc/bashrc文件,在最后增加路徑:exportPATH=/usr/local/arm/3.4.1/bin:$PATH,這樣就把/usr/local/arm/3.4.1/bin添加到命令的默認路徑,在編譯的時候則可直接用如下的命令#arm-linux-gcchello.c-ohello五、Hello實驗程序:五、Hello實驗程序:實驗過程、World:ttcdmeUERSION-7.2expbusybox-1.00-pre1Ogdbdemosguidocimgkernel-2410srootshtestl實驗結果:
ttcdmeUERSION-7.2expbusybox-1.00-pre1Ogdbdemosguidocimgkernel-2410srootshtestl實驗結果:Home淳RedHatEnterpriseLinux4X?應用程序動作。漆SC月1511.星期Home淳RedHatEnterpriseLinux4X?應用程序動作。漆SC月1511.星期[root?oca]ho£t]Jrbash:pwdEcominnd[root?]ocaIhuwl/root[root?]oca]hos1annconda-ks.ca.oul[root?ocaIhosi掛載:SDNWvU.^UA UUbps][USB:xJSerialPortUSEPortConfigurationHelpdzpokqtembedded-0qtopia-0 xFjttcdokttIs#cd..ttIsdzpokqtembedded-0qtopia-0 xFjttmkdirmettIsdzpokqtopia-Omeqtembedded-0奸jttpud/tmpttmount-tnFs-onolock192.168.0.23O:/arm2410s/tmp/memount:192.168.0.230:/arm241BsFailed,reasongiuenbyseruer:Permissiondenieditttmount-tnFs-onolock192.168.8.23B:/arm241Bs/tmpmettmount-tnfs-onolock192.168.0.230:/arm2410s/tmp/me
,■root'rgt&loca]ho^i、]#Isanaconda-ka.cf^rI>akiopheIIo.c insm]I.Iog.sy"Dg3.ont he]]c insiall.logminicom.I'root?!oca]haai、]*servicenfare^iari關閉bFSnunntd-關閉bFS守護進程:關I'UbFSquota史關閉WS服務:啟動bFS服務:關掉bFS配額:啟動bFS守護進程:I」劫bFSnuuntd:'root?!ocalhasi、]*servicenfssi日ri啟動bFS服務:關掉bFS配額:啟動bFS守護進程:l|!2^JjbFSnunntd:'root?!oca]haai、]*servicenfasiop關閉bFSnunntd-關閉bFS守護進程:關I'UbFSquota史關閉bFS服務:、'root?!oca]haai、]*定定定定定定定定定定定定定定定定確確確確確確確確確確確確確確確確六、實驗小結定定定定定定定定定定定定定定定定確確確確確確確確確確確確確確確確通過這次實驗,我對Linux系統有了一個初步的了解,對于課堂學習的知識也有了一定的應用,因此,我實現了理論與實踐相結合。通過實驗操作,我了解了嵌入式基本設置及其讀寫程序,我對硬件設備的設計也有了一定的了解。在剛開始學習建立Linux交叉開發環境時,我遇到了不少的問題,對于較為復雜的編程以及Linux環境下的很多技巧都知道得很少,花費了很多時間。我深知,這一塊兒知識正是我所欠缺的,在以后的學習中要加強。實驗五Makefile編程實驗一、 實驗目的1、 了解make命令。2、 了解Makefile。3、 熟悉Makefile編程。二、 實驗設備PC機三、 實驗內容使用Makefile編譯程序。四、 實驗原理Makefile文件包含了五部分內容:顯示規則、隱式規則、變量定義、文件指示和注釋。Makefile里的變量就像一個環境變量。事實上,環境變量在make中也被解釋成make的變量。這些變量對大小寫敏感,一般使用大寫宇母。幾乎可以從任何地方引用定義的變量。Makefile中的變量是用一個文本串在Makefile中定義的,這個文本串就是變量的值。只要在一行的開始寫下這個變量的名字,后面跟一個“=”號,以及要設定這個變量的值即可定義變量,下面是定義變量的語法:VARNAME二stringMake工作時的執行步驟:讀入所有的makefile文件讀入被include包括的其他的makefile文件初始化文件中的變量推到隱式規則,并分析所有規則為所有的目標文件創建依賴關鍵鏈根據依賴關系,決定哪些目標要重新生成執行生成命令第(1)~(5)步為第一個階段,第(6)~(7)步為第二個階段。第一個階段中,如果定義的變量被使用了,make會在它使用的位置把它展開。但make并不會馬上完全展開,make使用的是拖延戰術。如果變量出現在依賴關系的規則中,進當這條依賴關系決定要使用時,變量才會在其內部展開。五、 實驗過程實驗步驟:在某一目錄下編輯上述l六個文件test.c、prog.c、code.c、prog.h、code.h、Makefile運行命令#make,生成可執行文件test運行程序./test實驗程序:#include<stdio.h>externarea(float);externcircle(float);main()(printf(〃dgjdkfhgkjfdg\n〃);area(2.5);circle(2.5);return0;}/*******************prog.c****************************************/#include"prog.h”#include"code.h"#include<stdio.h>area(floatr)(printf("r=%f\n",r);printf(format_area,PI*r*r);printf(〃gfhfghfh\n〃);}/*************************code.c**********************************/#include"code.h"#include<stdio.h>voidcircle(floatr)(printf(format_circle,2*PI*r);}/************************code.h**
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 七年級語文上冊 20 記 銘 說 志四篇《寒花葬志》教學設計1 長春版
- 《平行四邊形的面積》教學設計-2024-2025學年五年級上冊數學北師大版
- 2024年七年級語文上冊 第六單元 少年詩情 第24課《寫給云》教學設計 滬教版五四制
- Unit 5 Here and Now(Section A1a-1d)教學設計 2024-2025學年人教版(2024)七年級英語下冊
- 9《古代科技 耀我中華》第二課時(教學設計)-部編版道德與法治五年級上冊
- 2 說話要算數 教學設計-2023-2024學年道德與法治四年級下冊統編版
- 2024秋四年級英語上冊 Unit 3 My friends Part B 第1課時教學設計 人教PEP
- 6 有多少浪費本可避免2023-2024學年四年級下冊道德與法治同步教學設計(統編版)
- 2023-2024學年浙江攝影版(三起)(2020)小學信息技術五年級下冊算法初步(教學設計)
- 一年級道德與法治上冊 第二單元 2《我們一起做》教學設計 浙教版
- 2025年國家工信部信息中心事業單位招聘高頻重點模擬試卷提升(共500題附帶答案詳解)
- 2025年中考英語時文閱讀 6篇有關電影哪吒2和 DeepSeek的英語閱讀(含答案)
- LY/T 3419-2024自然教育評估規范
- DB11-T 695-2017 建筑工程資料管理規程
- 2025年度水電維修合同及設備更新升級范本3篇
- 2024年供應鏈管理師(二級)資格考試復習題庫(含答案)
- 樹木轉讓合同范例
- 集成電路基礎知識單選題100道及答案解析
- 江西工程學院《婦女社會工作》2023-2024學年第一學期期末試卷
- 《大學生創業導論》期末考試復習題庫(含答案)
- 無人機租賃的合同范本
評論
0/150
提交評論