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

下載本文檔

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

文檔簡介

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

2、開hello.c文件,從而新建文件;6、在hello.c文件中輸入程序,使得程序能夠顯示打印字符:Hello,Linu*!四、實驗結(jié)果:包括代碼源碼和運行結(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、實驗結(jié)果五、思考:在建

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

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

6、相應(yīng)程序,實現(xiàn)打印信息hello,linu*并換行輸出110;6、再翻開一個終端,在該終端中轉(zhuǎn)到文件系統(tǒng)test文件夾,使用穿插編譯工具對hello.c進展編譯。7、在mini中,目錄轉(zhuǎn)到/test文件夾下使用./(你的程序名) 運行程序;8、使用gdb 你的程序名運行程序,設(shè)置斷點進展程序調(diào)試。9、關(guān)閉mini,終端中輸入telnet,然后輸入open 192.168.0.11,等待出現(xiàn)login:輸入root,進入目標(biāo)板系統(tǒng);10、目錄轉(zhuǎn)到/test文件夾下使用./(你的程序名) 運行程序;11、使用gdb 你的程序名運行程序,設(shè)置斷點進展程序調(diào)試。四、實驗結(jié)果:包括代碼源碼和運行結(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下運行: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超級終端下運行:gdb調(diào)試五、思考:1、在使用穿插編譯工具進展編譯過程中,要生成可用gdb調(diào)試的程序,需要再編譯過程中加什么參數(shù)?答:gcc -g hello.c -o hello 要加上-g,這樣編譯出的可執(zhí)行代碼中才包含調(diào)試信息,否則之后gdb無法載入該執(zhí)行文件。2、使用telnet進展目標(biāo)板訪問過程中,什么時候運行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è)備中翻開該端口);實驗三 S3C2410根底實驗一、實驗?zāi)康模毫私庠贏DS環(huán)境下對S3C2410芯片的AD接口的操作、鍵盤/LED接口的操作、直流和步進電機的工作原理和實際編程操作。二、實驗內(nèi)容:1、實現(xiàn)使用ADS和簡易JTAG仿真器連接ARM芯片S3C2410;2、使用提供例程和超級終端對上述的各個模塊的接口進展實際操作。三、實驗步驟:1、ADS實驗環(huán)境的建立,參照THUEA-1A型嵌入式ARM9高級實驗/開發(fā)系統(tǒng)實驗指導(dǎo)書的157162頁;2、設(shè)置好以后,到D盤ARM文件夾下,找到ADS的工程文件,拖入到翻開的ADS1.2中;3、重啟開發(fā)板,超級終端中顯示等待狀態(tài),點擊ADS

13、1.2上的調(diào)試按鈕,程序開場下裝到開發(fā)板;ADS進入調(diào)試界面;4、點擊調(diào)試界面上的運行按鈕,程序執(zhí)行到主程序處,再次點擊運行程序;5、程序運行后,超級終端上顯示運行提示,按提示操作鍵盤/LED、電機和AD轉(zhuǎn)換.四、實驗結(jié)果:超級終端上的運行提示和實際運行結(jié)果1、運行程序:1A/D程序:2D/A程序:3鍵盤/LED接口程序:2、超級終端運行結(jié)果:五、思考:在ADS下載程序的過程中,目標(biāo)板為什么不能進入到linu*系統(tǒng),目標(biāo)板進入linu*系統(tǒng)后,下裝的程序能不能正常運行?答:因為內(nèi)存沖突;能。實驗四 多路復(fù)用實驗實驗?zāi)康模和ㄟ^實驗,掌握Linu*操作系統(tǒng)下多路復(fù)用的概念;學(xué)習(xí)Linu*下多路復(fù)用

14、函數(shù)的使用方法。二、實驗內(nèi)容:構(gòu)建多路復(fù)用程序及其框架,整個流程如下圖:三、實驗步驟:1、翻開電腦上的虛擬機,加載Linu*系統(tǒng)。2、輸入密碼進入系統(tǒng)后,按ctrl + Alt + t翻開終端;3、進入到程序所在目錄,對程序進展編譯;4、使用mknod in1 p建立管道1;5、使用mknod in2 p建立管道2;6、重新翻開一個終端輸入 cat in1;7、重新翻開一個終端輸入 cat in2;8、在原來終端中輸入./multiple*_select;9、在in1、in2終端中隨機輸入字符,觀察現(xiàn)象;10、在主程序所在終端中輸入q,觀察現(xiàn)象;11、修改編譯器在目標(biāo)板上運行上述程序。四、實驗

15、結(jié)果:包括代碼源碼和運行結(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 bufMA*_BUFFER_SIZE;int i, res, real_read, ma*fd;/stru

16、ct 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(&inset); for (i = 0; i IN_FILES; i+) FD_SET(fdsi, &in

17、set); 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(Select errorn); return 1; break; case 0: /* Timeout */ pr

18、intf(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 (!real_read) close(fdsi); FD_CLR(fdsi, &inset); else if (

19、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運行結(jié)果3、目標(biāo)板運行結(jié)果4.超級終端上運行五、思考:主程序運行過程中,超時退出是靠select()函數(shù)的那個參數(shù)控制的?在整個實驗過

20、程中,如果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 (set_parity(fd,8,1,n) = FALSE)printf(Set Parity Errorn);

21、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_serial serial.c host_serial.c clean:rm -f host_serial2targ

22、et_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)= FALSE)printf(Set Parity Errorn);e*it(1);printf(successfu

23、lly 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 target_serial serial.c target_serial.c clean:rm -f targe

24、t_serial2、實驗結(jié)果:五、思考:串口傳送過程中,如果不能接收到數(shù)據(jù),怎么處理?怎么測試PC機上的接收端口能接收到數(shù)據(jù)?答:確認(rèn)接線正確,有信號;確認(rèn)波特率正確,兩端一致實驗六 Linu*網(wǎng)絡(luò)編程實驗一、實驗?zāi)康模和ㄟ^實驗,掌握Linu*操作系統(tǒng)下網(wǎng)絡(luò)通信的根本方法;學(xué)習(xí)socket 編程的根本函數(shù)socket()、bind()、listen()、accept()、send()、sendto()、recv()以及recvfrom()的使用方法;二、實驗內(nèi)容:該實驗中,需要建立網(wǎng)絡(luò)通信的程序,程序分為客戶端和效勞器端兩局部,其中效勞器端首先建立起 socket,然后與本地端口進展綁定,接著就開場接收從客戶端的連接請求并建立與它的連接,接下來,接收客戶端發(fā)送的消息??蛻舳藙t在建立socket 之后調(diào)用connect()函數(shù)來建立連接。三、實驗步驟:1、翻開電腦上的虛擬機,加載Linu*系統(tǒng)。2、輸入密碼進入系統(tǒng)后,按ctrl + Alt + t翻開終端;3、進入程序源碼所在文件夾,使用make命令進展編譯;4、在終端中執(zhí)行./server;5、按ctrl + Alt + t翻開新的終端,在終端中執(zhí)行./client local

溫馨提示

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

最新文檔

評論

0/150

提交評論