嵌入式系統(tǒng)及應(yīng)用實(shí)驗(yàn)指導(dǎo)報(bào)告書_第1頁
嵌入式系統(tǒng)及應(yīng)用實(shí)驗(yàn)指導(dǎo)報(bào)告書_第2頁
嵌入式系統(tǒng)及應(yīng)用實(shí)驗(yàn)指導(dǎo)報(bào)告書_第3頁
嵌入式系統(tǒng)及應(yīng)用實(shí)驗(yàn)指導(dǎo)報(bào)告書_第4頁
嵌入式系統(tǒng)及應(yīng)用實(shí)驗(yàn)指導(dǎo)報(bào)告書_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、-. z.*工業(yè)大學(xué)嵌入式系統(tǒng)與應(yīng)用實(shí)驗(yàn)報(bào)告冊學(xué)院: 電氣與信息工程學(xué)院 專業(yè): 測控技術(shù)與儀器 *:*:-. z.實(shí)驗(yàn)一 Linu*認(rèn)知實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康模和ㄟ^實(shí)驗(yàn),掌握Linu*操作系統(tǒng)下常用的命令,能靈活運(yùn)用這些命令完成特定的工作;學(xué)習(xí)Linu*下文本編輯器vi的使用方法。二、實(shí)驗(yàn)內(nèi)容:1、新建文件hello.c,文件位于/home/test/ 目錄下;2、使用vi編輯三、實(shí)驗(yàn)步驟:1、翻開電腦上的虛擬機(jī),加載Linu*系統(tǒng)。2、輸入密碼進(jìn)入系統(tǒng)后,按ctrl + Alt + t翻開終端;3、使用mkdir建立/home/test文件夾;4、使用chmod命令修改文件夾權(quán)限;5、使用vi翻

2、開hello.c文件,從而新建文件;6、在hello.c文件中輸入程序,使得程序能夠顯示打印字符:Hello,Linu*!四、實(shí)驗(yàn)結(jié)果:包括代碼源碼和運(yùn)行結(jié)果1、源代碼1hello.c程序代碼:#include stdio.hint main() printf(hello linu*!n);2修改文件夾權(quán)限:用chmod修改文件夾權(quán)限lvlv-pc:$ cd test1lvlv-pc:/test1$ ls -l總用量 28-rw*r-*r-* 1 lv lv 8136 5月 7 11:36 a.out-rw*r-*r-* 1 lv lv 7869 5月 11 09:10 main-rw-r-r

3、- 1 lv lv 250 5月 7 11:35 main.c-rw*r-*r-* 1 lv lv 8136 3月 30 20:28 mianlvlv-pc:/test1$ chmod 733 a.outlvlv-pc:/test1$ ls -l總用量 28-rw*-w*-w* 1 lv lv 8136 5月 7 11:36 a.out-rw*r-*r-* 1 lv lv 7869 5月 11 09:10 main-rw-r-r- 1 lv lv 250 5月 7 11:35 main.c-rw*r-*r-* 1 lv lv 8136 3月 30 20:28 mian2、實(shí)驗(yàn)結(jié)果五、思考:在建

4、立文件夾的過程中,如果不進(jìn)入管理員權(quán)限,會出現(xiàn)什么問題?同樣,不進(jìn)入管理員權(quán)限,vi編輯完代碼,能不能保存退出?chmod后面的數(shù)字參數(shù)是什么含義答:會出現(xiàn):鍵入mkdir test后顯示: 無法創(chuàng)立目錄test: 權(quán)限不夠的問題。不進(jìn)入管理員權(quán)限,vi編輯完代碼,不能保存退出。想對文件夾所修改成的權(quán)限。實(shí)驗(yàn)二 穿插編譯實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康模?、通過實(shí)驗(yàn),掌握穿插編譯的原理,理解文件系統(tǒng)掛載的原理;2、掌握穿插編譯工具的使用,學(xué)會使用兩種不同的方式訪問目標(biāo)板系統(tǒng),學(xué)會使用gdb對程序進(jìn)展調(diào)試。二、實(shí)驗(yàn)內(nèi)容:編輯hello.c程序,使用穿插編譯工具進(jìn)展編譯,生成可執(zhí)行文件,分別使用mini和teln

5、et 登錄到目標(biāo)板上,對程序進(jìn)展運(yùn)行調(diào)試。三、實(shí)驗(yàn)步驟:1、翻開電腦上的虛擬機(jī),加載Linu*系統(tǒng)。2、Linu*系統(tǒng)登錄完畢,設(shè)置PC機(jī)網(wǎng)絡(luò)地址為192.168.0.10,其中子網(wǎng)掩碼為255.255.255.0,連接好實(shí)驗(yàn)箱上的電源、網(wǎng)線和USB轉(zhuǎn)串口工具以及串口延長線。3、按ctrl + Alt + t翻開終端,輸入sudo mini翻開mini,查看串口設(shè)置是否正確,進(jìn)展串口設(shè)置;4、翻開試驗(yàn)箱電源,查看啟動代碼,啟動完成后,實(shí)驗(yàn)箱屏幕顯示界面,按Ctrl+c,然后按Enter,進(jìn)入板子系統(tǒng)。5、在文件系統(tǒng)(/home/nfs)下的test文件夾下,建立hello.c的程序,程序中輸入

6、相應(yīng)程序,實(shí)現(xiàn)打印信息hello,linu*并換行輸出110;6、再翻開一個(gè)終端,在該終端中轉(zhuǎn)到文件系統(tǒng)test文件夾,使用穿插編譯工具對hello.c進(jìn)展編譯。7、在mini中,目錄轉(zhuǎn)到/test文件夾下使用./(你的程序名) 運(yùn)行程序;8、使用gdb 你的程序名運(yùn)行程序,設(shè)置斷點(diǎn)進(jìn)展程序調(diào)試。9、關(guān)閉mini,終端中輸入telnet,然后輸入open 192.168.0.11,等待出現(xiàn)login:輸入root,進(jìn)入目標(biāo)板系統(tǒng);10、目錄轉(zhuǎn)到/test文件夾下使用./(你的程序名) 運(yùn)行程序;11、使用gdb 你的程序名運(yùn)行程序,設(shè)置斷點(diǎn)進(jìn)展程序調(diào)試。四、實(shí)驗(yàn)結(jié)果:包括代碼源碼和運(yùn)行結(jié)果1、

7、源程序#include main( ) int i ; printf(hello linu*! n); for(i=1;i Trying 192.168.0.11.Connected to 192.168.0.11.Escape character is .Linu* 2.4.18-rmk7-p*a1 (192.168.0.11) (0)192.168.0.11 login: rootBusyBo* v0.60.3 (2002.05.13-08:36+0000) Built-in shell (ash)Enter help for a list of built-in mands.# ./he

8、lloarm./helloarm: No such file or directory# cd test# ./helloarmHello linu*!this is 1this is 2this is 3this is 4this is 5this is 6this is 7this is 8this is 9this is 10在mini下運(yùn)行:wy*jwy*j-cpu:$ sudo minisudo password for wy*j: OPTIONS: I18n piled on Feb 8 2013, 06:27:51.Port /dev/ttyUSB0, 21:22:32Press

9、 CTRL-A Z for help on special keys Waiting for enter to start /bin/sh (pid 46, terminal /dev/console)Please press Enter to activate this console. Starting pid 46, console /dev/console: /bin/shBusyBo* v0.60.3 (2002.05.13-08:36+0000) Built-in shell (ash)Enter help for a list of built-in mands.# ls333.

10、bmp microwindows-0.90 sbinbin mmcsd sheryl.mp3bomb mnt testdev notebook tmpetc pig.mp3 usr hello.c proc var iceage.mpeg qcop-msg-qpe vcongui lib qcop-msg-quicklauncher linu*rc qtembedded-root # cd test # ./helloarm Hello linu*!this is 1this is 2this is 3this is 4this is 5this is 6this is 7this is 8t

11、his is 9this is 10超級終端下運(yùn)行:gdb調(diào)試五、思考:1、在使用穿插編譯工具進(jìn)展編譯過程中,要生成可用gdb調(diào)試的程序,需要再編譯過程中加什么參數(shù)?答:gcc -g hello.c -o hello 要加上-g,這樣編譯出的可執(zhí)行代碼中才包含調(diào)試信息,否則之后gdb無法載入該執(zhí)行文件。2、使用telnet進(jìn)展目標(biāo)板訪問過程中,什么時(shí)候運(yùn)行open命令不會出現(xiàn)連接不到目標(biāo)板的情況?答:目標(biāo)版能顯示文檔內(nèi)容,表示所有連接成功。連接不到原因:1線路問題;(檢查線路) ;telnet的網(wǎng)絡(luò)設(shè)備負(fù)載過高,無法正常響應(yīng)效勞;(重啟一下設(shè)備);3telnet的網(wǎng)絡(luò)設(shè)備制止了telnet的2

12、3端口.(于設(shè)備中翻開該端口);實(shí)驗(yàn)三 S3C2410根底實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康模毫私庠贏DS環(huán)境下對S3C2410芯片的AD接口的操作、鍵盤/LED接口的操作、直流和步進(jìn)電機(jī)的工作原理和實(shí)際編程操作。二、實(shí)驗(yàn)內(nèi)容:1、實(shí)現(xiàn)使用ADS和簡易JTAG仿真器連接ARM芯片S3C2410;2、使用提供例程和超級終端對上述的各個(gè)模塊的接口進(jìn)展實(shí)際操作。三、實(shí)驗(yàn)步驟:1、ADS實(shí)驗(yàn)環(huán)境的建立,參照THUEA-1A型嵌入式ARM9高級實(shí)驗(yàn)/開發(fā)系統(tǒng)實(shí)驗(yàn)指導(dǎo)書的157162頁;2、設(shè)置好以后,到D盤ARM文件夾下,找到ADS的工程文件,拖入到翻開的ADS1.2中;3、重啟開發(fā)板,超級終端中顯示等待狀態(tài),點(diǎn)擊ADS

13、1.2上的調(diào)試按鈕,程序開場下裝到開發(fā)板;ADS進(jìn)入調(diào)試界面;4、點(diǎn)擊調(diào)試界面上的運(yùn)行按鈕,程序執(zhí)行到主程序處,再次點(diǎn)擊運(yùn)行程序;5、程序運(yùn)行后,超級終端上顯示運(yùn)行提示,按提示操作鍵盤/LED、電機(jī)和AD轉(zhuǎn)換.四、實(shí)驗(yàn)結(jié)果:超級終端上的運(yùn)行提示和實(shí)際運(yùn)行結(jié)果1、運(yùn)行程序:1A/D程序:讀取采樣值函數(shù):intReadAdc(intch)inti;staticintprevCh=-1;rADCCON=(114)|(preScaler6)|(ch3);/設(shè)立通道if(prevCh!=ch)rADCCON=(114)|(preScaler6)|(ch3);/設(shè)立通道for(i=0;iLOOP;i+);

14、/準(zhǔn)備下一通道prevCh=ch;rADCCON|=0*1;/開場ADCwhile(rADCCON&0*1);/檢查Enable_start位是否變低while(!(rADCCON&0*8000);/檢查EC(EndofConversion)flag是否為高return(int)rADCDAT0&0*3ff);在超級終端顯示數(shù)字量:a4=ReadAdc(4);a6=ReadAdc(6);Uart_Printf(AIN4:%0.2fAIN6:%0.2fn,a4*3.3/1024,a6*3.3/1024);2D/A程序:MA*504的控制程序如下:voidDA_Test()inti;intSAVr

15、GPACON,SAVrGPFCON,SAVrGPGCON;floatv;SAVrGPACON=rGPACON;/存放器狀態(tài)保護(hù)SAVrGPFCON=rGPFCON;/存放器狀態(tài)保護(hù)SAVrGPGCON=rGPGCON;/存放器狀態(tài)保護(hù)MA*504_CLEAR();/將DAC存放器設(shè)為0Uart_Printf(DACTestnPleaseobservethecorrespondingofoutputandinput:n);for(i=0;i1024;i+=8)Ma*504_SetDA(i);/MA*504讀取數(shù)字量轉(zhuǎn)化v=(float)i)*Ma*504_FULL/1024.0f;/數(shù)字量顯示U

16、art_Printf(CurrentDigitalVoltageOfInput=%1.2fVr,v);Delay(2000);/數(shù)字量保持時(shí)間rGPACON=SAVrGPACON;/存放器狀態(tài)恢復(fù)rGPFCON=SAVrGPFCON;/存放器狀態(tài)恢復(fù)rGPGCON=SAVrGPGCON;/存放器狀態(tài)恢復(fù)MA*504讀取數(shù)字量轉(zhuǎn)化函數(shù):voidMa*504_SetDA(intvalue)value8);/發(fā)送高8位SendSPIData(value);/發(fā)送低8位MA*504_DISABLE();/關(guān)閉MA*5043鍵盤/LED接口程序:超級終端顯示鍵值數(shù)組:unsignedcharScanda

17、ta44=F,E,D,C,B,A,9,8,7,6,5,4,3,2,1,0,;數(shù)碼管碼段顯示值數(shù)組:unsignedcharst44=0*8e,0*86,0*a1,0*c6,0*83,0*88,0*90,0*80,0*f8,0*82,0*92,0*99,0*b0,0*a4,0*f9,0*c0,;掃描鍵值中斷函數(shù):dorGPEDAT=rGPEDAT&0*fff7;/置GPE3為低,掃描鍵盤第四行rGPEDAT=rGPEDAT|0*70;/GPE4、5、6為高i=3;Read_value(i);rGPEDAT=rGPEDAT&0*ffef;/置GPE4為低,掃描鍵盤第三行rGPEDAT=rGPEDA

18、T|0*68;/GPE3、5、6為高i=2;Read_value(i);rGPEDAT=rGPEDAT&0*ffdf;/置GPE5為低,掃描第二行鍵盤rGPEDAT=rGPEDAT|0*58;/GPE3、4、6為高i=1;Read_value(i);rGPEDAT=rGPEDAT&0*ffbf;/置GPE6為低,掃描第一行鍵盤rGPEDAT=rGPEDAT|0*38;/GPE3、4、5為高i=0;Read_value(i);while(value!=0);*列鍵值讀取:case(0*e):value=Scandatadata0;rGPADAT=0*81e0;/GPA5,6,7,8輸出1,15輸

19、出高rSMG0=stdata0;/數(shù)碼管顯示rGPADAT=0*01e0;/GPA5,6,7,8輸出1,15輸出低break;Uart_Printf(rkeyvalueis%c,value);/超級終端顯示5直流、步進(jìn)電機(jī)程序:直流電機(jī)正轉(zhuǎn):rGPADAT=0*fff80;/GPA7置1,GPA4、5、6置0Delay(50);/延時(shí)函數(shù),控制低脈沖時(shí)間rGPADAT=0*fff90;/GPA4、7置1,GPA5、6置0Delay(30);/延時(shí)函數(shù),控制高脈沖時(shí)間直流電機(jī)反轉(zhuǎn):rGPADAT=0*fff20;/GPA5置1,GPA4、6、7置0Delay(50);/延時(shí)函數(shù),控制低脈沖時(shí)間r

20、GPADAT=0*fff60;/GPA5、6置1,GPA4、7置0Delay(30);/延時(shí)函數(shù),控制高脈沖時(shí)間步進(jìn)電機(jī)輸出脈沖:rGPADAT=0*fff07;/0111,注意:低電平有效Delay(140);/延時(shí)函數(shù),控制步進(jìn)電機(jī)轉(zhuǎn)速rGPADAT=0*fff0b;/1011Delay(140);rGPADAT=0*fff0d;/1101Delay(140);rGPADAT=0*fff0e;/1110Delay(140);2、超級終端運(yùn)行結(jié)果:五、思考:在ADS下載程序的過程中,目標(biāo)板為什么不能進(jìn)入到linu*系統(tǒng),目標(biāo)板進(jìn)入linu*系統(tǒng)后,下裝的程序能不能正常運(yùn)行?答:因?yàn)閮?nèi)存沖突;

21、能。實(shí)驗(yàn)四 多路復(fù)用實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康模和ㄟ^實(shí)驗(yàn),掌握Linu*操作系統(tǒng)下多路復(fù)用的概念;學(xué)習(xí)Linu*下多路復(fù)用函數(shù)的使用方法。二、實(shí)驗(yàn)內(nèi)容:構(gòu)建多路復(fù)用程序及其框架,整個(gè)流程如下圖:三、實(shí)驗(yàn)步驟:1、翻開電腦上的虛擬機(jī),加載Linu*系統(tǒng)。2、輸入密碼進(jìn)入系統(tǒng)后,按ctrl + Alt + t翻開終端;3、進(jìn)入到程序所在目錄,對程序進(jìn)展編譯;4、使用mknod in1 p建立管道1;5、使用mknod in2 p建立管道2;6、重新翻開一個(gè)終端輸入 cat in1;7、重新翻開一個(gè)終端輸入 cat in2;8、在原來終端中輸入./multiple*_select;9、在in1、in2終端中隨機(jī)輸

22、入字符,觀察現(xiàn)象;10、在主程序所在終端中輸入q,觀察現(xiàn)象;11、修改編譯器在目標(biāo)板上運(yùn)行上述程序。四、實(shí)驗(yàn)結(jié)果:包括代碼源碼和運(yùn)行結(jié)果源代碼:1multiple*_select.c代碼:/* multiple*_select.c */#include #include #include #include #include /#include #define MA*_BUFFER_SIZE1024#define IN_FILES3#define TIME_DELAY60#define MA*(a, b)(a b)(a):(b)int main(void)int fdsIN_FILES;char

23、 bufMA*_BUFFER_SIZE;int i, res, real_read, ma*fd;/struct timeval tv;fd_set inset,tmp_inset;fds0 = 0;if(fds1 = open (in1, O_RDONLY|O_NONBLOCK) 0)printf(Open in1 errorn);return 1; if(fds2 = open (in2, O_RDONLY|O_NONBLOCK) 0) printf(Open in2 errorn);return 1; ma*fd = MA*(MA*(fds0, fds1), fds2); FD_ZERO

24、(&inset); for (i = 0; i IN_FILES; i+) FD_SET(fdsi, &inset); FD_SET(0, &inset); /tv.tv_sec = TIME_DELAY; /tv.tv_usec = 0; while(FD_ISSET(fds0,&inset) | FD_ISSET(fds1,&inset) | FD_ISSET(fds2, &inset) tmp_inset = inset; res = select(ma*fd + 1, &tmp_inset, NULL, NULL, 0); switch(res) case -1: printf(Sel

25、ect errorn); return 1; break; case 0: /* Timeout */ printf(Time outn); return 1; break; default: for (i = 0; i IN_FILES; i+) if (FD_ISSET(fdsi, &tmp_inset) /memset(buf, 0, MA*_BUFFER_SIZE); real_read = read(fdsi, buf, MA*_BUFFER_SIZE); if (real_read 0) /if (errno != EAGAIN) / return 1; / else if (!r

26、eal_read) close(fdsi); FD_CLR(fdsi, &inset); else if (i = 0) if (buf0 = q)2Makefile代碼:E*EC = multiple*_selectOBJS = multiple*_select.oHEADERS = CC = gccINC = -I.CFLAGS = $INC -g all:$E*EC$E*EC : $OBJS$CC $CFLAGS $LDFLAGS -o $ $OBJS $OBJS : $HEADERS.PHONY : cleanclean :-rm -f $OBJS $E*EC運(yùn)行結(jié)果3、目標(biāo)板運(yùn)行結(jié)果

27、4.超級終端上運(yùn)行五、思考:主程序運(yùn)行過程中,超時(shí)退出是靠select()函數(shù)的那個(gè)參數(shù)控制的?在整個(gè)實(shí)驗(yàn)過程中,如果in1,in2的名字發(fā)生變化,需要修改程序源碼中的哪局部?答:timeout;修改如下局部中的in1和in2if(fds1 = pen (in1,O_RDONLY|O_NONBLOCK) 0)Printf(Open in1 errorn);Return 1;if(fds2 = pen (in2,O_RDONLY|O_NONBLOCK) 0)set_speed(fd,115200);elseprintf(Cant Open Serial Port!n);e*it(0);if (s

28、et_parity(fd,8,1,n) = FALSE)printf(Set Parity Errorn);e*it(1);printf(nsuccess setn); while(1)read(fd,&ch,1);/ch=getchar();putchar(ch);/write(fd,&ch,1);close(fd);return(0);Makefile代碼:#CC = armv4l-unknown-linu*-gccCC = gccCFLAGS = -I$(KERNELDIR)/include/ -Wall host_serial: $(CC) $(CFLAGS) -o host_seri

29、al serial.c host_serial.c clean:rm -f host_serial2target_serial.c:#include serial.h#define TRUE 1 #define FALSE 0/*breif main()*/int main()int fd;char ch; char *dev =/dev/ttyS0;fd = init_serial(dev);if (fd0)set_speed(fd,115200);elseprintf(Cant Open Serial Port!n);e*it(0);if (set_parity(fd,8,1,N)= FA

30、LSE)printf(Set Parity Errorn);e*it(1);printf(successfully setn);while(1)/ch=getchar();ch=a;write(fd, &ch, 1);/read(fd,&ch,1);/printf(%d:t %d,i+,(int)ch);/putchar(ch);close(fd);return(0);Makefile代碼:#KERNELDIR = /usrCC = arm-linu*-gccCFLAGS = -I$(KERNELDIR)/include/ -Wall serial: $(CC) $(CFLAGS) -o ta

31、rget_serial serial.c target_serial.c clean:rm -f target_serial2、實(shí)驗(yàn)結(jié)果:五、思考:串口傳送過程中,如果不能接收到數(shù)據(jù),怎么處理?怎么測試PC機(jī)上的接收端口能接收到數(shù)據(jù)?答:確認(rèn)接線正確,有信號;確認(rèn)波特率正確,兩端一致實(shí)驗(yàn)六 Linu*網(wǎng)絡(luò)編程實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康模和ㄟ^實(shí)驗(yàn),掌握Linu*操作系統(tǒng)下網(wǎng)絡(luò)通信的根本方法;學(xué)習(xí)socket 編程的根本函數(shù)socket()、bind()、listen()、accept()、send()、sendto()、recv()以及recvfrom()的使用方法;二、實(shí)驗(yàn)內(nèi)容:該實(shí)驗(yàn)中,需要建立網(wǎng)絡(luò)通信的程序,程序分為客戶端和效勞器端兩局部,其中效勞器端首先建立起 socket,然后與本地端口進(jìn)展綁定,接著就開場接收從

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論