版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
南京郵電大學(xué)通達學(xué)院實驗報告實驗名稱:實驗一基于ADS開發(fā)環(huán)境的程序設(shè)計實驗二開發(fā)板的認知和GPIO實驗實驗三串行口實驗實驗四Linux交叉開發(fā)環(huán)境的建立—實驗五Makefile編程實驗課程名稱 嵌入式系統(tǒng)A班級學(xué)號 12000401 姓名 王婷婷 開課時間 20142015學(xué)年第2學(xué)期實驗一基于ADS開發(fā)環(huán)境的程序設(shè)計一、實驗?zāi)康?、 學(xué)習ADS開發(fā)環(huán)境的使用;2、 學(xué)習和掌握ADS環(huán)境下的匯編語言及C語言程序設(shè)計;3、 學(xué)習和掌握匯編語言及C語言的混合編程方法。二、 實驗內(nèi)容1、 編寫和調(diào)試匯編語言程序;2、 編寫和調(diào)試C語言程序;3、 編寫和調(diào)試匯編語言及C語言的混合程序;4、 編寫程序測試多寄存器傳送指令的用法。三、 實驗原理匯編語言的基礎(chǔ)知識、C語言編程的基礎(chǔ)知識四、 實驗過程與關(guān)鍵代碼分析例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實驗結(jié)果:
五、實驗小結(jié)通過本次試驗,我基本了解了ADS開發(fā)環(huán)境的使用方法,掌握了如何在ADS開發(fā)環(huán)境下建立工程、添加C源程序到工程、編譯鏈接和調(diào)試C程序,對之前學(xué)過的C語言有了更進一步的理解。實驗二 開發(fā)板的認知和GPIO實驗LED跑馬燈一、 實驗?zāi)康?、 熟悉ADS開發(fā)環(huán)境。2、 掌握S3C2440A內(nèi)部相關(guān)寄存器的操作方法,最終實現(xiàn)對外部設(shè)備的控制。3、 熟悉在ARM裸機環(huán)境下的C語言編程。二、 實驗設(shè)備FL2440開發(fā)板、PC機、JTAG調(diào)試板。三、 實驗內(nèi)容1、 建立ADS開發(fā)環(huán)境。2、 編程實現(xiàn)對開發(fā)板上發(fā)光二極管LED的跑馬燈控制。四、 實驗原理從電路圖上我們可以看到,發(fā)光二極管LED的一端連接到了ARM的GPIO,另一端經(jīng)過一個限流電阻接電源VCC。當GPIO口為低電平時,LED兩端產(chǎn)生電壓降,這時LED有電流通過并發(fā)光。反之當GPIO為高電平時,LED將熄滅。注意亮滅之間要有一定的延時,以便人眼能夠區(qū)分出來。五、 實驗過程實驗步驟:準備好實驗環(huán)境,將JTAG調(diào)試板的一端與PC的并口相連,另一端連接到開發(fā)板的JTAG接口(在串口0附近)。將串口線的一端插在PC的串口上,另一端插在開發(fā)板的‘COM0’上。打開DNW.EXE軟件,給開發(fā)板上電,使Bootloader停在菜單處(在系統(tǒng)引導(dǎo)時按空格鍵)。打開軟件‘ADSCodeWarrior’,新建工程‘led.mcp’,并添加兩個程序文件‘led.c’和‘init.S’(匯編文件)。對工程文件進行相應(yīng)設(shè)置(參考《開發(fā)板準備實驗》1.7節(jié))編譯該工程,成功后將生成映像文件‘led.axf’。打開AXD,裝載映像文件‘led.axf’。運行程序,觀察結(jié)果。實驗電路:如上圖所示,通過控制4個GPIO口GPB5、GPB6、GPB8來實現(xiàn)對四個發(fā)光二極管如上圖所示,通過控制4個GPIO口GPB5、GPB6、GPB8來實現(xiàn)對四個發(fā)光二極管LED0、LED1、LED2、LED3亮滅的控制。、GPB10,實驗程序:/*本實驗接口說明GPB5GPB6GPB8GPB10*/LED0LED1LED2LED3/*地址聲明*/#defineGPBCON(*(volatileunsigned*)0x56000010)#defineGPBDAT(^(volatileunsigned*)0x56000014)#defineGPBUP(*(volatileunsigned*)0x56000018)#defineucharunsignedchar#defineuintunsignedintTOC\o"1-5"\h\z/* 定義全局變量 *//* 函數(shù)聲明 */voidDelay(intx);/* /函數(shù)名稱:Delay功能描述:延時函數(shù)傳參:intx返回值:無 */voidDelay(intx)(intk,j;while(x)(for(k=0;k<=0xff;k++)for(j=0;j<=0xff;j++);x--;}}/* 函數(shù)名稱:ledMain功能描述:入口程序初始化后,進入跑馬燈死循環(huán)傳參:無返回值:int0 */intledMain(void)(GPBCON=0x1dd7fc;//GPB5,GPB6,GPB8,GPB10設(shè)置為輸出GPBDAT=((1<<5)|(1<<6)|(1<<8)|(1<<10));//使LED全滅GPBDAT&=0xffe; 〃關(guān)閉蜂鳴器GPBUP=0x00;while(1)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);}return0;}AREA|DATA|,CODE,READONLYENTRYldrr13,=0x1000IMPORTledMainbledMainEND實驗結(jié)果:四個發(fā)光二極管LED輪流閃爍,最終實現(xiàn)流水燈效果。修改程序中Delay函數(shù)調(diào)用的值將改變它們顯示的速度,值越大,顯示越慢。六、實驗小結(jié)本次實驗是第一次做有關(guān)開發(fā)板的實驗,我對實驗器材和實驗步驟都不太了解,在實驗的過程中遇到很多問題。后來,在老師和同學(xué)的幫助下,我連接好開發(fā)板,運行程序,觀察到實驗板上的四個發(fā)光二極管輪流閃爍。除此之外,我還掌握了S3C2440A內(nèi)部相關(guān)寄存器的操作方法,實現(xiàn)了對外部設(shè)備的控制。實驗三串行口實驗一、 實驗?zāi)康?、 掌握ARM處理器的串行通信原理2、 通過編程,實現(xiàn)開發(fā)板與PC機之間的串行收發(fā)數(shù)據(jù)二、 實驗設(shè)備FL2440開發(fā)板、ADS1.2開發(fā)環(huán)境、JTAG調(diào)試板、串口連接線。三、 實驗內(nèi)容編寫串口程序,使開發(fā)板收到數(shù)據(jù)后再把數(shù)據(jù)發(fā)回。四、 實驗原理開始前,線路處于空閑狀態(tài),送出連續(xù)“1”。傳送開始時首先發(fā)一個“0”作為起始位,然后出現(xiàn)在通信線桑的時字符的二進制編碼數(shù)據(jù)。每個字符的數(shù)據(jù)位長可以約定為:5位、6位、7位或8位,一般采用ASCII編碼,后面時奇偶校驗位,根據(jù)約定,用奇偶校驗位將所傳的字符中為“1”的位數(shù)湊成奇數(shù)個或偶數(shù)個。也可以約定不要奇偶校驗,這樣就取消奇偶校驗位。最后時表示停止位的“1”信號,這個停止位可以約定連續(xù)1位、1.5位或2位的時間寬度。至此一個字符傳送完畢,線路又進入空閑,持續(xù)為“1”。經(jīng)過一段隨機的時間后,下一個字符開始傳送。傳輸速率:每一個數(shù)據(jù)位的寬度定于發(fā)送波特率的倒數(shù)。微機異步串行通信中,常用的波特率為110、150、300、600、1200、2400、4800、9600、57600、115200等。波特率發(fā)生器每個UART的波特率發(fā)生器為傳輸提供了串行移位時鐘。波特率產(chǎn)生器的時鐘源可以從S3C2440A的內(nèi)部系統(tǒng)時鐘或UEXTCLK中來選擇。波特率由時鐘源(PCLK、FCLK或UEXTCLK)16分頻和UART波特率除數(shù)寄存器(UBRDIVn)指定的16位除數(shù)決定。UBRDIVn的置可以按照下式確定:UBRDIVn=(int)(UARTclock/(bps*16))—1(UARTclock:PCLK、FCLK或UEXTCLK)除數(shù)的范圍為1到(216—1)。例如,如果波特率為115200bps,UART為40MHz,則UBRDIVn為:UBRDIVn=(int)(40000000/(115200X16))—1=(int)(21.7)—1=22—1=21五、 實驗過程實驗電路:
實驗步驟:準備實驗環(huán)境,將JTAG調(diào)試板的25針端與PC的并口相連,另一端(WIGGLER口)通過20P排線與開發(fā)板的JTAG接口(在串口0附近)相連。將串口線的一端插在PC的串口上,另一端插在開發(fā)板的COM0上。打開DNW.EXE軟件,進行相應(yīng)設(shè)置。給開發(fā)板上電并在Bootloader啟動時停在菜單處。打開‘ADSCodeWarrior’,在ADSCodeWarrior中打開實驗工程serial.mcp.對工程文件進行相應(yīng)設(shè)置(參考《開發(fā)板準備實驗》1.7節(jié)),并對工程進行編譯。打開ARM的開發(fā)環(huán)境AXDDebugger,在AXDDebugger中加載可執(zhí)行映象文件‘serial.Axf’。6.執(zhí)行映象文件,觀察實驗結(jié)果。實驗程序:#defineULCON0(^(volatileunsigned*)0X50000000) //UART線控制寄存器#defineUCON0(^(volatileunsigned*)0X50000004) //UART控制寄存器#defineUFCON0(*(volatileunsigned*)0X50000008) //FIFO控制寄存器#defineUTRSTAT0(*(volatileunsigned*)0X50000010) //UART狀態(tài)寄存器#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位數(shù)據(jù)位//串口時鐘PCLK,查詢方式//波特率115200//接收是否完畢=1結(jié)束〃讀取數(shù)據(jù)buf=URXH0;〃讀取數(shù)據(jù)while(!(UTRSTAT0&0X04));//是否允許發(fā)送=1允許UTXH0=buf;return}return}0;AREA|DATA|,CODE,READONLYENTRYldrr13,=0x1000IMPORTTSmainbTSmainEND實驗結(jié)果:六、實驗小結(jié)通過本次試驗,我了解了ARM處理器的串行通信的原理、傳輸格式和電氣特性,掌握了相關(guān)寄存器的配置方法。此外,我還通過編寫串口程序,實現(xiàn)了開發(fā)板接收數(shù)據(jù)后又發(fā)回數(shù)據(jù)。這為我以后的實驗奠定了基礎(chǔ)。實驗四Linux交叉開發(fā)環(huán)境的建立一、 實驗?zāi)康?、 了解什么是交叉編譯。2、 了解交叉編譯工具。3、 學(xué)會安裝及使用交叉編譯器。二、 實驗設(shè)備PC機三、 實驗內(nèi)容1、 安裝交叉編譯器。2、 使用交叉編譯器編譯程序。四、實驗原理什么是交叉編譯在一種計算機環(huán)境中運行的編譯程序,能編譯出在另外一種環(huán)境下運行的代碼,我們就稱這種編譯器支持交叉編譯。這個編譯過程就叫交叉編譯。簡單地說,就是在一個平臺上生成另一個平臺上的可執(zhí)行代碼。如keil軟件,在keil上編譯,但在單片機上運行,典型的交叉編譯。我們在開發(fā)板上運行的程序,是在PC機上編譯的,所以是交叉編譯。安裝交叉編譯器安裝交叉編譯器,只需將該編譯器的解壓縮文件放在指定的目錄下邊。指定目錄為:/usr/local/arm/若local下沒有arm文件夾,則需要自己建一個。在使用的時候有兩種方式:(以編譯hello.c程序為例,生成可執(zhí)行文件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實驗結(jié)果:
ttcdmeUERSION-7.2expbusybox-1.00-pre1Ogdbdemosguidocimgkernel-2410srootshtestl實驗結(jié)果:Home淳RedHatEnterpriseLinux4X?應(yīng)用程序動作。漆SC月1511.星期Home淳RedHatEnterpriseLinux4X?應(yīng)用程序動作。漆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關(guān)閉bFSnunntd-關(guān)閉bFS守護進程:關(guān)I'UbFSquota史關(guān)閉WS服務(wù):啟動bFS服務(wù):關(guān)掉bFS配額:啟動bFS守護進程:I」劫bFSnuuntd:'root?!ocalhasi、]*servicenfssi日ri啟動bFS服務(wù):關(guān)掉bFS配額:啟動bFS守護進程:l|!2^JjbFSnunntd:'root?!oca]haai、]*servicenfasiop關(guān)閉bFSnunntd-關(guān)閉bFS守護進程:關(guān)I'UbFSquota史關(guān)閉bFS服務(wù):、'root?!oca]haai、]*定定定定定定定定定定定定定定定定確確確確確確確確確確確確確確確確六、實驗小結(jié)定定定定定定定定定定定定定定定定確確確確確確確確確確確確確確確確通過這次實驗,我對Linux系統(tǒng)有了一個初步的了解,對于課堂學(xué)習的知識也有了一定的應(yīng)用,因此,我實現(xiàn)了理論與實踐相結(jié)合。通過實驗操作,我了解了嵌入式基本設(shè)置及其讀寫程序,我對硬件設(shè)備的設(shè)計也有了一定的了解。在剛開始學(xué)習建立Linux交叉開發(fā)環(huán)境時,我遇到了不少的問題,對于較為復(fù)雜的編程以及Linux環(huán)境下的很多技巧都知道得很少,花費了很多時間。我深知,這一塊兒知識正是我所欠缺的,在以后的學(xué)習中要加強。實驗五Makefile編程實驗一、 實驗?zāi)康?、 了解make命令。2、 了解Makefile。3、 熟悉Makefile編程。二、 實驗設(shè)備PC機三、 實驗內(nèi)容使用Makefile編譯程序。四、 實驗原理Makefile文件包含了五部分內(nèi)容:顯示規(guī)則、隱式規(guī)則、變量定義、文件指示和注釋。Makefile里的變量就像一個環(huán)境變量。事實上,環(huán)境變量在make中也被解釋成make的變量。這些變量對大小寫敏感,一般使用大寫宇母。幾乎可以從任何地方引用定義的變量。Makefile中的變量是用一個文本串在Makefile中定義的,這個文本串就是變量的值。只要在一行的開始寫下這個變量的名字,后面跟一個“=”號,以及要設(shè)定這個變量的值即可定義變量,下面是定義變量的語法:VARNAME二stringMake工作時的執(zhí)行步驟:讀入所有的makefile文件讀入被include包括的其他的makefile文件初始化文件中的變量推到隱式規(guī)則,并分析所有規(guī)則為所有的目標文件創(chuàng)建依賴關(guān)鍵鏈根據(jù)依賴關(guān)系,決定哪些目標要重新生成執(zhí)行生成命令第(1)~(5)步為第一個階段,第(6)~(7)步為第二個階段。第一個階段中,如果定義的變量被使用了,make會在它使用的位置把它展開。但make并不會馬上完全展開,make使用的是拖延戰(zhàn)術(shù)。如果變量出現(xiàn)在依賴關(guān)系的規(guī)則中,進當這條依賴關(guān)系決定要使用時,變量才會在其內(nèi)部展開。五、 實驗過程實驗步驟:在某一目錄下編輯上述l六個文件test.c、prog.c、code.c、prog.h、code.h、Makefile運行命令#make,生成可執(zhí)行文件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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年生態(tài)環(huán)境治理保護合同
- 2024年版項目監(jiān)工聘用合同
- 特崗英語課程設(shè)計
- 現(xiàn)代詩課程設(shè)計分享
- 電子表課程設(shè)計c語言
- 測繪工程課程設(shè)計選題
- 社交軟件銷售工作總結(jié)
- 航空航天顧問工作總結(jié)
- 保健品行業(yè)營銷策略總結(jié)
- 餐飲團購前臺工作總結(jié)
- 期末復(fù)(知識清單)2024-2025學(xué)年人教PEP版(2024)英語三年級上冊
- 45001-2020職業(yè)健康安全管理體系危險源識別與風險評價及應(yīng)對措施表(各部門)
- 人教版六年級科學(xué)重點知識點
- 春節(jié):藝術(shù)的盛宴
- 煙草公司化肥采購項目-化肥投標文件(技術(shù)方案)
- 【良品鋪子成本控制中存在的問題及優(yōu)化建議探析(定量論文)11000字】
- 2023八年級語文上冊 第三單元 13 唐詩五首說課稿 新人教版
- 2024至2030年中國青年旅舍行業(yè)發(fā)展監(jiān)測及投資戰(zhàn)略研究報告
- 雷軍2024演講破釜沉舟
- 小學(xué)語文(修改病句)專題復(fù)習課件
評論
0/150
提交評論