版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 通信與信息工程學院</b></p><p><b> 嵌入式開發(fā)技術</b></p><p><b> 課程設計報告</b></p><p><b> 通信與信息工程學院</b></p><p><b> 二
2、〇一六年</b></p><p><b> 目 錄</b></p><p><b> 嵌入式課程設計1</b></p><p><b> 1 設計要求1</b></p><p> 1.1 基本題型1</p><p> 1.2
3、 綜合題型2</p><p> 2 開發(fā)環(huán)境、開發(fā)工具2</p><p> 3設計過程及結果5</p><p> 3.1 實現(xiàn)交叉編譯環(huán)境5</p><p> 3.2第幾小組成員步驟5</p><p> 3.3實現(xiàn)Linux系統(tǒng)下的簡易聊天室7</p><p><b&
4、gt; 4 設計總結20</b></p><p><b> 參考文獻22</b></p><p><b> 嵌入式課程設計</b></p><p><b> 1 設計要求</b></p><p><b> 1.1 基本題型</b>
5、</p><p> (1)嵌入式開發(fā)環(huán)境配置</p><p> ?、俨捎胿mware+linux配置開發(fā)主機系統(tǒng),要求構建linux系統(tǒng),配置nfs,samba;</p><p> ?、谡莆誱inicom、samba及NFS使用,能利用其實現(xiàn)windows、linux開發(fā)主機與嵌入式實驗系統(tǒng)間的通信;</p><p> ?、劾肗FS服務實
6、現(xiàn)主機與實驗系統(tǒng)間文件共享;</p><p> ④利用提供的工具構建交叉編譯環(huán)境;</p><p> 要求:在下圖時間上面一行顯示小組成員姓名</p><p> Armv4l-unknown-linux-gcc 是 否 在/opt/host/armv4l/bin/,如果不是這個路徑,請使用 vi 修改/root/.bash_profile 文件中 。ATH變
7、量 為 PATH=$PATH:$HOME/bin:/opt/host/armv4l/bin/ , 存 盤 后 執(zhí) 行 : source /root/.bash_profile</p><p> (2)熟悉VI、GCC、GDB及MAKE文件使用;</p><p> ?。?)在開發(fā)系統(tǒng)中編寫一個程序,實現(xiàn)打印“通信工程13級第3小組嵌入式開發(fā)技術課程設計基礎內容”功能,編寫makefile
8、文件,并通過NFS下載到實驗箱中,驗證交叉編譯環(huán)境配置。</p><p><b> 1.2 綜合題型</b></p><p> 基于socket編程的簡單聊天室程序設計:</p><p> ?。?)掌握linux下socket編程方法;</p><p> (2)基于C語言設計一個簡單的聊天室程序,PC運行客戶端程序
9、,嵌入式系統(tǒng)運行服務器端程序,服務器隨時偵聽客戶端請求并將其接入,要求至少實現(xiàn)2個客戶端接入服務器并進行通信的功能;</p><p> (3)編寫Makefile文件;</p><p> (4)利用NFS將程序下載到實驗箱中,編譯執(zhí)行。</p><p> (5)課程設計報告中應包含服務器端socket創(chuàng)建、綁定、監(jiān)聽、允許接入及接收數(shù)據等關鍵代碼及其說明,客戶
10、端請求及數(shù)據發(fā)送等關鍵代碼及說明;</p><p> 2 開發(fā)環(huán)境、開發(fā)工具</p><p> ?。?)安裝VWware軟件</p><p> ?、匍_始安裝加載文件.雙擊該文件的圖標,進入加載安裝文件的界面。</p><p> ?、谠O置安裝類型。安裝文件加載完畢后進入開始安裝界面。單擊next按鈕后,進入安裝類型選擇界面,選擇tyical選
11、項。</p><p> ③執(zhí)行軟件包的安裝選項,依據所做的選擇,把對應的軟件組件安裝到系統(tǒng)中,輸入正確的序列號。</p><p> ?。?)配置VMware</p><p> ?、俅蜷_桌面上VMware圖形,雙擊打開</p><p> ②再打開原來的文件夾,把漢化包打開</p><p> ③執(zhí)行軟件的安裝選項,依
12、據所做的選擇,確認安裝。確認完后,即配置完成。</p><p> ④點擊打開虛擬機,選擇標準,下一步,執(zhí)行軟件的安裝選項。接下是密鑰,填寫老師所給的密碼。安裝完成。</p><p><b> (3)安裝驅動</b></p><p> 點擊安裝包,根據軟件的安裝選項,點擊next按鈕,即可安裝完成。</p><p>
13、 注:在電腦上安裝好虛擬機之后配置相關參數(shù) </p><p> ?、倥渲肗FS:點擊菜單運行系統(tǒng)設置->點擊服務器設置->NFS服務器,點擊增加,在目錄中選擇共享目錄的路徑,在主機(host)中填入主機IP地址(192.168.1.12),并選擇客戶對共享目錄的操作位讀寫(Read/write);在常規(guī)選項中選擇允許來自高于1024的端口的連接,點擊確定后即可配置好NFS。配置完成后,可以簡單測試一
14、下NFS是否配置好了: 在虛擬機上自己 mount 自己,看是否成功就可以判斷NFS是否配好了。</p><p> mount 192.168.1.12:/arm2410cl /host</p><p> 之后ls命令查看arm2410cl之下的文件目錄,如果文件目錄在,那么說明NFS配置成功。</p><p><b> ?、诙丝谂渲?lt;/b>
15、;</p><p> 用串口線連接好筆記本電腦和 2410 經典版平臺。 </p><p> 計算機,屬性,設備管理器,端口</p><p> 高級設置下端口號COM1</p><p> 進入虛擬機設置,串行端口</p><p><b> 3設計過程及結果</b></p>
16、<p> 3.1 實現(xiàn)交叉編譯環(huán)境</p><p><b> 結果:</b></p><p> 3.2第幾小組成員步驟</p><p><b> ?。?)創(chuàng)建工作目錄</b></p><p> 【root@vm-dev~】# mkdir winter</p><
17、p> 【root@vm-dev winter】# cd winter</p><p> ?。?)編寫winter.c文件</p><p> 【root@vm-dev~】# vi winter.c</p><p> (3)編寫Makefile文件</p><p> CC =armv4l-unknown-linux-gcc<
18、/p><p> EXEC=client server</p><p> OBJS=client.o server.o</p><p><b> CFLAGS+=</b></p><p> LDFLAGS+=-static</p><p> all:$(EXEC)</p><
19、;p> $(EXEC):$(OBJS)</p><p> $(CC) $(LDFLAGS) –o $@ $(OBJS)</p><p><b> clean:</b></p><p> -rm –f *.elf *.gdb *.o </p><p><b> 其中,</b><
20、;/p><p><b> CC 指明編譯器</b></p><p> EXEC 表示編譯后生成的執(zhí)行文件名稱</p><p> OBJS 目標文件列表</p><p> CFLAGS 編譯參數(shù)</p><p> LDFLAGS 連接參數(shù)</p><p> all:
21、編譯主入口</p><p> clean: 清除編譯結果</p><p> ?。?)運行make編譯程序</p><p> 【root@vm-dev~】# make clean</p><p> 【root@vm-dev winter】# make</p><p><b> ?。?)源程序 </b
22、></p><p> #include<stdio.h></p><p> int main(void)</p><p><b> {</b></p><p> printf(“ 通信工程13級第三小組嵌入式開發(fā)技術課程設計基礎內容“);</p><p><b>
23、; }</b></p><p><b> 6)結果</b></p><p> 由于電腦與開發(fā)板不匹配,結果沒有辦法出來</p><p> 3.3實現(xiàn)Linux系統(tǒng)下的簡易聊天室</p><p><b> ?。?)程序流程圖</b></p><p><
24、b> ?。?)程序工作過程</b></p><p> 服務端處于監(jiān)聽狀態(tài),客戶端發(fā)送請求,連接成功并通信。首先服務端調用socket()函數(shù)創(chuàng)建一個套接字,然后把協(xié)議,端口號,ip信息通過bind()進行綁定。以上操作完后服務端就開始監(jiān)聽客戶端的請求,并設置監(jiān)聽的最大數(shù)目。當客戶端發(fā)送鏈接請求時,服務端就調用accept()函數(shù)接受客戶端的請求。然后對于客戶端來說,也是要先調用socket()
25、函數(shù)創(chuàng)建客戶端的套接字,這里是用的TCP協(xié)議,所以可以不用bind()函數(shù)。接著調用connect()函數(shù)與服務端建立連接。當服務端和客戶端建立連接時,可以通過彼此之間的套接字描述符來進行數(shù)據傳輸。其中一方通過send函數(shù)把數(shù)據寫入數(shù)據緩沖區(qū),另一方通過recv()函數(shù)從緩沖區(qū)內讀出數(shù)據,這樣就完成了服務端與客戶端之間的數(shù)據傳輸。當雙方數(shù)據傳輸完成后,函數(shù)close()關閉各自的 套接字,使客戶端和服務端通信中斷。</p>
26、<p> ?。?)socket編程方案</p><p> ?、僭O計一個簡單的聊天室程序,PC運行客戶端程序,嵌入式系統(tǒng)運行服務器端程序,服務器隨時偵聽客戶端請求并將其接入,要求至少實現(xiàn)2個客戶端接入服務器并進行通信的功能;</p><p> ?、贛akefile文件</p><p> ③NFS將程序下載到實驗箱中,編譯執(zhí)行。</p>&l
27、t;p> 注:程序里的函數(shù)解釋</p><p> ?。?)Socket()</p><p> 作用:socket函數(shù)為客戶機或服務器創(chuàng)建一個sokcet</p><p><b> 格式:</b></p><p> int socket(int family,int type,int protocol);&l
28、t;/p><p><b> 參數(shù)說明:</b></p><p> Family:表示地址族,可以去AF_UNLX和AF_INT。</p><p> 其中,AF_UNLX只能夠用于單一的UNIX系統(tǒng)進程間通信;AF_INT是針對Internet的,因而可以允許在遠程主機之間通信,實驗中使用AF_INT。</p><p>
29、 Type:網絡程序所采用的通信協(xié)議,可以取SOCK_STREAM或SOCK_DGRAM。其中,SOCK_STREAM表明使用的是TCP協(xié)議,這樣提供按順序的、可靠的、雙向、面向連接的比特流;SOCKE_DGRAM表明使用的是UDP協(xié)議,這樣只會提供定長、不可靠、無連接的通信。</p><p> (2)bind( )</p><p><b> 格式:</b>&l
30、t;/p><p> int bind(int sockfd,struct sockaddr *addr,int addrlen);</p><p><b> 參數(shù)說明:</b></p><p> Sockfd:socket的文件描述符號。</p><p> Sockaddr:表示名字所用的一個數(shù)據結構,用來保存地址(
31、包括IP地址和端口)</p><p> Addrlen:設置結構大小長度。</p><p> ?。?)listen()</p><p><b> 格式:</b></p><p> int listen(int sockfd, int backlog);</p><p> 作用:監(jiān)聽連接信號
32、,和accepted函數(shù)合同。</p><p><b> 參數(shù)說明:</b></p><p> Sockfd:表示socket調用返回的文件描述符。</p><p> Backlog:表示接入隊列允許的連接數(shù)目,大多數(shù)系統(tǒng)允許20個,也可以子定義5~10個。</p><p> (4)accept()</p&
33、gt;<p><b> 格式:</b></p><p> Int accept (int sockfd, void *addr, int *addrlen);</p><p> 作用:與listen函數(shù)合用,監(jiān)聽信息、接收客戶端請求。</p><p><b> 參數(shù)說明:</b></p>
34、<p> Sockfd:表示socket的文件描述符。</p><p> Addr:表示指向局部的數(shù)據結構struct sockaddr-in的指針。</p><p> Addrlen:表示地址的長度。</p><p> (5)connect()</p><p><b> 格式:</b></p
35、><p> int connect( int sockfd , struct sockaddr *serv_addr , int addrlen);</p><p> 作用:在面向連接的系統(tǒng)中客戶及連接服務器時使用,connect必須在bind后使用。</p><p><b> 參數(shù)作用: </b></p><p>
36、 Sockfd:表示socket的文件描述符。</p><p> Serv-addr:表示村訪目的端口和ip地址(套接字)的數(shù)據結構。</p><p> (6)send() 和 recv()</p><p><b> 格式1:</b></p><p> Int send (int sockfd, const vo
37、d *msg,int len, int flags);</p><p><b> 功能:發(fā)送信息。</b></p><p><b> 格式2:</b></p><p> Int recv (int sockfd , void *buf,int len, usigned int flags);</p>&
38、lt;p> 作用:用于流式socket、數(shù)據報socket內部之間的通信。</p><p> ?。?)close( ) 和 shutdown ( )</p><p><b> 格式:</b></p><p> Close( int sockfd)</p><p><b> 或 </b>
39、</p><p> Int shutdown(int sockfd , int f);</p><p><b> 參數(shù)說明:</b></p><p><b> f的值為下面一種:</b></p><p> 0----不允許繼續(xù)接收;</p><p> 1----不允
40、許繼續(xù)發(fā)送;</p><p> 2---不允許繼續(xù)發(fā)送和接收。</p><p> (8)有關線程的系統(tǒng)調用函數(shù)pthread_create()、pthread_join()</p><p> 實驗過程說明(使用TCP/IP)</p><p><b> (1)監(jiān)聽連接</b></p><p>
41、; 利用socket、bind、listen建立連接,步驟是:</p><p> 先用socket函數(shù)初始化socket,創(chuàng)建新的sockfd。</p><p> Sockfd = socket(AF_INT,SOCK_STREAM,0)</p><p> 此步驟涉及到IP地址及其處理過程。</p><p><b> 參數(shù)
42、說明:</b></p><p> inet_addr 函數(shù) INADDR_ANY</p><p> 該函數(shù)把由小數(shù)點分開的十進制IP地址轉為unsinged long 類型,而在實驗中所使用的為INADDR_ANY,使用利用自已的IP地址自動填充。</p><p> a)利用bind函數(shù)綁定端口和IP地址。</p><p>
43、 My_addr.sin_family=AF_INET; /*將地址族類型設定好 */</p><p> My_addr.sin_port=htons(MYPORT; /* 將端口給其賦值*/</p><p> My_addr.sin_addr.s_addr=INADDR_ANY; /*用連接地址自動填充ip*/</p><p>
44、 Bind(sockfd,(stuct sockaddr*)&my_addr,sizeof(stuct sockaddr));</p><p> /*sockfd 是分配的socket名字,my-addr則便是分配好的端口與IP,用bind綁定*/</p><p> b)利用listen監(jiān)聽請求</p><p><b> (2)發(fā)送請求&l
45、t;/b></p><p> 1)利用gethostbyname獲取主機信息。</p><p> 2)初始化socket端口。</p><p> 3)利用connect函數(shù)將自己的IP地址等信息發(fā)送到主機,等待主機調用accept函數(shù)來接受請求。</p><p> (3)主機接收請求,進行數(shù)據通信</p><
46、p> 1)主機利用accept接收請求。</p><p> 2)創(chuàng)建子進程,顯示歡迎信息;</p><p> 3)接收返回信息,顯示連接成功,并推出連接;</p><p> 4)關閉客戶端口socket;</p><p> 5)關閉服務端socket,結束子線程。</p><p><b>
47、(4)實現(xiàn)步驟</b></p><p><b> ?、俳⒐ぷ髂夸?lt;/b></p><p> 【root@vm-dev~】# mkdir server</p><p> 【root@vm-dev server】# cd server</p><p> 【root@vm-dev server】# vi s
48、erver.c</p><p> 【root@vm-dev~】# mkdir client</p><p> 【root@vm-dev client】# cd client</p><p> 【root@vm-dev client】# vi client.c</p><p><b> ②編寫程序源代碼</b>&l
49、t;/p><p><b> 程序附后</b></p><p><b> ?、劬幾g實現(xiàn)過程</b></p><p> ?、?在編寫完TCP服務端程序server.c后,用 armv4l-unknown-</p><p> linux-gcc –lpthread –o server.c server 生
50、成程序server。</p><p> ⅱ.在編寫完TCP客戶端程序client.c后,用armv4l-unknown-linux-gcc –o client.c client 生成程序client</p><p> ?、?在嵌入式系統(tǒng)上運行server。</p><p> 在主機上打開一個窗口,運行client,輸入服務器的IP地址,并檢查器結果的正確性。&l
51、t;/p><p><b> ?、?輸入:</b></p><p> # ./server</p><p> # ./client 192.168.1.12(192.168.1.12為本機的ip地址) </p><p><b> ⅴ.輸出:</b></p><p>
52、 #server:got connection from 192.168.1.12</p><p> ?、?客戶端發(fā)送信息服務器端接收信息。</p><p> 客戶端通過鍵盤輸入消息內容平回車,以發(fā)送消息給服務器端;</p><p><b> ?、?結果:</b></p><p><b> 服務端:&l
53、t;/b></p><p><b> 客戶端:</b></p><p><b> 注 :源程序</b></p><p> client.c程序:</p><p> #include<stdlib.h></p><p> #include<sy
54、s/types.h></p><p> #include<sys/socket.h></p><p> #include<netinet/in.h></p><p> #include<arpa/inet.h></p><p> #include<unistd.h></p&g
55、t;<p> #include<stdio.h></p><p> #include<errno.h></p><p> #include<string.h></p><p> #define EHCO_PORT 8888 //端口號</p><p> #de
56、fine MAX_COMMAND 5 //最大發(fā)送消息的次數(shù)</p><p> int main()</p><p><b> {</b></p><p> int sock_fd;</p><p> struct sockaddr_in s_addr;</p><p>
57、char buff[100]; //緩沖區(qū)的大小</p><p> char tmp_buf[100];</p><p><b> int n,i;</b></p><p> sock_fd=socket(AF_INET,SOCK_STREAM,0); //創(chuàng)建socket套接字,協(xié)議為IPV4協(xié)議,并且為字節(jié)流套接
58、字</p><p> if(sock_fd==-1)</p><p><b> {</b></p><p> perror("create socket fail!");</p><p><b> return 0;</b></p><p><
59、;b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> printf("create socket %d\n",sock_fd);</p><p><b> }</b>
60、;</p><p> /*設置server 地址結構*/</p><p> bzero(&s_addr,sizeof(s_addr)); //初始化結構占用的內存</p><p> s_addr.sin_family=AF_INET; //IPV4協(xié)議</p><p&g
61、t; s_addr.sin_port=htons(EHCO_PORT); //設置監(jiān)聽的端口</p><p> s_addr.sin_addr.s_addr=inet_addr("192.168.0.121"); //設置服務器的地址</p><p> bzero(&(s_addr.sin_zero),8);</p>&
62、lt;p> if(-1==connect(sock_fd,(struct sockaddr*)&s_addr,sizeof(s_addr)))</p><p><b> {</b></p><p> perror("connect() fail!\n");</p><p> close(sock_fd)
63、;</p><p><b> return 0;</b></p><p><b> }</b></p><p> printf("connect to server ok !\n");</p><p> for(i=0;i<MAX_COMMAND;i++)</
64、p><p><b> {</b></p><p> printf("請輸入要發(fā)送信息:\n");</p><p> scanf("%s",buff);</p><p> printf("發(fā)送信息:%s\n",buff);</p><p&g
65、t; send(sock_fd,buff,100,0); //發(fā)送數(shù)據給服務器</p><p> n=recv(sock_fd,tmp_buf,100,0); //從服務器接收數(shù)據</p><p> tmp_buf[n]='\0'; // 給字符串添加結束標志</p><p> printf(&quo
66、t;接收的數(shù)據: %s\n",tmp_buf); //打印接收的字符串</p><p> if(0==strncmp(tmp_buf,"quit",4)) //判斷是否退出命令</p><p><b> break;</b></p><p><b> }</b>&l
67、t;/p><p> close(sock_fd); //關閉套接字</p><p><b> return 0;</b></p><p><b> }</b></p><p><b> Server.c:&l
68、t;/b></p><p> #include<stdlib.h></p><p> #include<sys/types.h> </p><p> #include<sys/socket.h></p><p> #include<netinet/in.h></p>
69、;<p> #include<arpa/inet.h></p><p> #include<unistd.h></p><p> #include<stdio.h></p><p> #include<errno.h></p><p> #include<strin
70、g.h></p><p> #define EHCO_PORT 8888 //定義端口號</p><p> #define MAX_CLIENT_NUM 5 //最大監(jiān)聽客戶端數(shù)</p><p> int main()</p><p><b> {</b></p
71、><p> int sock_fd;</p><p> struct sockaddr_in s_addr; </p><p> int clientfd;</p><p> struct sockaddr_in clientAdd;</p><p> char buff[101];
72、 //設置緩沖區(qū)的大小</p><p> socklen_t len;</p><p><b> int n;</b></p><p> /*創(chuàng)建socket*/</p><p> sock_fd=socket(AF_INET,SOCK_STREAM,0);//協(xié)議設置為IPV4協(xié)議,并設置為字節(jié)流套接字&
73、lt;/p><p> if(sock_fd==-1){</p><p> perror("create socket fail!");</p><p><b> return 0;</b></p><p><b> }else{</b></p><p>
74、; printf(" create socket ok %d\n",sock_fd);</p><p><b> }</b></p><p> bzero(&s_addr,sizeof(s_addr)); //初始化結構體占用的內存</p><p> s_addr.sin_family=AF_INET;
75、 //客戶端協(xié)議為IPV4</p><p> s_addr.sin_port=htons(EHCO_PORT); //把16位值的端口號從主機字節(jié)轉換為網絡字節(jié)</p><p> s_addr.sin_addr.s_addr=inet_addr("192.168.0.121"); //設置服務器地址</p><p>
76、; bzero(&(s_addr.sin_zero),8);//將內存塊的前8個字節(jié)清零</p><p> if(bind(sock_fd,(struct sockaddr*)&s_addr,sizeof(s_addr))!=0)</p><p> {//將服務器地址和套接字綁定</p><p> printf("bind fail
77、! %d\n",errno);</p><p> close(sock_fd);</p><p><b> return 0;</b></p><p><b> }</b></p><p><b> else</b></p><p>&
78、lt;b> {</b></p><p> printf(" bind ok!\n");</p><p><b> }</b></p><p> if(-1==listen(sock_fd,MAX_CLIENT_NUM))</p><p> { //設置套接字監(jiān)聽</p
79、><p> perror("listen fail!\n");</p><p> close(sock_fd);</p><p><b> return 0;</b></p><p><b> }</b></p><p><b> else
80、</b></p><p><b> {</b></p><p> printf("listen ok\n");</p><p><b> }</b></p><p> len=sizeof(clientAdd); </p>&l
81、t;p> clientfd=accept(sock_fd,(struct sockaddr*)&clientAdd,&len); //創(chuàng)建新連接對應的套接字</p><p> if(clientfd<=0)</p><p><b> {</b></p><p> perror("accept() f
82、ail!\n");</p><p> close(sock_fd);</p><p><b> return 0;</b></p><p><b> }</b></p><p> printf("client connect ok:\n");</p>
83、<p> while((n=recv(clientfd,buff,100,0))>0)</p><p><b> {</b></p><p> buff[n]='\0'; //給字符串加入結束符</p><p> printf("the data of receive
84、: %s\n",buff);//打印字符串的內容</p><p> fflush(stdout); //清除文件緩沖區(qū)</p><p> printf("put the data of send:\n"); </p><p> scanf("%s",buff);<
85、;/p><p> send(clientfd,buff,n,0); //發(fā)送內容給客戶端</p><p> printf("the message of send:%s\n",buff);</p><p> if(strncmp(buff,"quit",4)==0) //判斷是否退出命令</p&
86、gt;<p><b> break;</b></p><p><b> }</b></p><p> close(clientfd); //關閉新建的連接</p><p> close(sock_fd); //關閉服務端監(jiān)聽的socket</p>
87、<p><b> return 0;</b></p><p><b> }</b></p><p><b> 4 設計總結</b></p><p> 在本學期的最后一周,我們被要求完成嵌入式的設計總結,雖然只有不到一周的時間,但是大家都感覺收獲頗豐。把課堂上遺忘的、遺落的知識都撿了起
88、來,舊的知識新的知識都掌握了很多,并且切實的體會到軟件開發(fā)的困難與樂趣,認識到了自己的不足,并且慢慢摸索,不恥下問,在老師和小組成員的共同努力下,結束了這次的實踐。</p><p> 此次課程設計老師要求我們完成兩道基礎題目,以及一道三選一的綜合題目。前面的基礎題目大家有在課堂上接觸過,并且通過查找資料,大家分工合作一個上午就有了很大的進展,但是在下午的完善工作中還是被卡住了,一個小的程序調試不出來,不能出現(xiàn)要
89、求的結果,最后在其他組一個同學的幫助下完成了基礎題目。第二天大家開始做綜合題,經過商量選擇了《基于socket編程的簡單聊天室程序設計》,其實三道題目大家都沒有把握能完成,對這道題比較有興趣就敲定了。開始就是大量的查找資料,因為大家在課堂上學習的知識都太淺,并且大都停留在理論上,沒有開發(fā)經驗,所以大量工作都依靠互聯(lián)網,不過因為我們組成員的C的能力都挺好,所以能夠對代碼程序理解并修改以及調試,最終還是盡我們最大努力完成了這次設計。<
90、/p><p> 下面整理一下這次課程設計中個人的總結。</p><p> 齊秀:搜集資料,寫論文</p><p> 這次的實踐中,我負責搜集資料以及論文編撰。在剛拿到題目的時候,因為大家都比較束手無策,所以就必須要借用別人的東西,加以修改整理變成自己的東西。我查找了很多論文和書籍,然后根據設計要求將可用的東西整理打包給其他人,包括一些代碼和思想,在程序調試成功后進
91、行了總結并參與撰寫論文。在這中間,我認識到了我們的不足,需要學習的東西還有很多。</p><p> 許婷:編寫、調試程序</p><p> 在這次程序設計過程中,我主要參與了客戶端代碼的編寫和數(shù)道是交叉編譯環(huán)境的問題,還有就是串口速率不一致的問題??偠灾龅嚼щy千萬不能放棄,要自己搜集資料,詢問同學,不斷嘗試,在一次次失敗中汲取教訓,從而獲得進步。</p><p
92、> 王青青:編寫、調試程序</p><p> 這次實驗中,我們通過開發(fā)板與電腦相連,將程序下載到開發(fā)板上,進行調試,在下載過程中碰到了minicom老進不去,進去之后,掛載不上,通過同學交流,設置NFS參數(shù),最后掛載上,在調試socket程序時,程序錯誤,沒有辦法執(zhí)行,一遍一遍的讀取程序,最終調試成功。</p><p><b> 王莉笑:寫報告</b>&l
93、t;/p><p> 我負責的是書寫報告。報告并不是最后才寫的,而是在設計的過程中一點點添加完善,在實踐開始先寫了大體框架以及設計要求,在大家實踐的過程中對流程以及出現(xiàn)的問題、解決方法等進行記錄,繪制一些必要的圖表并且對結果整理,這些作為核心寫進報告里,最后進行總結,并對全文排版。我在這個過程中沒有深入了解代碼,這是一個遺憾。</p><p> 張樂:編寫、調試程序</p>&
94、lt;p> 在本次嵌入式實驗中,我主要完成的任務是編寫程序,調試程序。在實驗過程碰到了很多問題,比如:minicom連接不上,通過計算機,屬性,端口,進行端口與速率設置,將其設置成com1,115200.在虛擬機中也要進行設置,通過 ctrl+A,Z 進入參數(shù)配置頁面,將tty01改成tty00,將速率改成115200,進行保存。之后進入minicom 然后進行掛載,調試。由于筆記本的原因,好幾次鍵盤失控,這在實驗中算是碰到的最
95、大問題,好幾次實驗停滯不前,老師也沒有辦法,只能不停的重啟。最后重裝一次,才正常工作。最后完成實驗。</p><p><b> 參考文獻</b></p><p> 孫弋.ARM+Linux嵌入式系統(tǒng)開發(fā)基礎[M].西安:西安電子科技出版社,2008;</p><p> 周留軍,武金磊.基于socket的簡單聊天室的設計與實現(xiàn)[J].電腦知
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 嵌入式課程設計報告畢業(yè)論文
- 嵌入式課程設計報告2
- 嵌入式課程設計報告---嵌入式文件鎖應用
- 嵌入式課程設計報告 (2)
- 嵌入式課程設計報告91452
- 《嵌入式系統(tǒng)設計》課程設計報告
- 嵌入式課程設計
- 嵌入式課程設計
- 嵌入式課程設計報告--數(shù)字相框
- 嵌入式課程設計
- 嵌入式課程設計
- 嵌入式課程設計
- 嵌入式課程設計
- 嵌入式課程設計報告--qtopia移植
- 嵌入式開發(fā)畢業(yè)論文
- 嵌入式硬件課程設計報告---電梯系統(tǒng)
- 嵌入式課程設計---嵌入式網絡視頻監(jiān)控系統(tǒng)
- 嵌入式課程設計--串口通信
- 嵌入式課程設計大作業(yè)
- 嵌入式系統(tǒng)綜述課程設計
評論
0/150
提交評論