基于Linux文件的功能設(shè)計與實現(xiàn).doc
《基于Linux文件的功能設(shè)計與實現(xiàn).doc》由會員分享,可在線閱讀,更多相關(guān)《基于Linux文件的功能設(shè)計與實現(xiàn).doc(13頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 信息工程學(xué)院 嵌入式系統(tǒng)設(shè)計課程設(shè)計報告 題目 : 基于Linux的文件下載功能的設(shè)計與實現(xiàn) 學(xué)號 : 學(xué)生姓名 : 專業(yè)名稱 : 計算機(jī)科學(xué)與技術(shù) 班級 : 目錄 1. 課題研究意義和現(xiàn)狀 - 1 - 1.1 課題研究意義 - 1 - 1.2 課題研究現(xiàn)狀 - 1 - 2. 系統(tǒng)總體方案設(shè)計及功能模塊介紹 - 2 - 2.1 系統(tǒng)概述及總體方案設(shè)計 - 2 - 3. 系統(tǒng)軟件設(shè)計與實現(xiàn) - 2 - 3.1 主程序設(shè)計與實現(xiàn) - 2 - 3.2 服務(wù)器端程序設(shè)計與實現(xiàn) - 3 - 3.
2、3 客戶端程序設(shè)計與實現(xiàn) - 5 - 4. 系統(tǒng)測試 - 8 - 4.1 系統(tǒng)軟件測試 - 8 - 4.2 系統(tǒng)硬件測試 - 8 - 5. 總結(jié)和展望 - 9 - 6. 參考文獻(xiàn) - 10 - 信息工程學(xué)院嵌入式系統(tǒng)設(shè)計課程設(shè)計 1. 課題研究意義和現(xiàn)狀 1.1 課題研究意義 隨著微機(jī)技術(shù)的不斷發(fā)展,在許多工程領(lǐng)域單片機(jī)的應(yīng)用日趨廣泛,已逐漸取代了單板機(jī)。為了適應(yīng)這一新形勢的變化,目前許多高校及一些中等專科學(xué)校已不再開設(shè)以單板機(jī)為主的“微機(jī)原理、接口及應(yīng)用”課程,而直接講授單片機(jī)及有關(guān)技術(shù)。但是目前缺少相應(yīng)的實驗設(shè)備及教材。鑒于這種情況,從教學(xué)和科研兩個角度出發(fā),我們
3、此次的畢業(yè)設(shè)計嘗試設(shè)計一種單片機(jī)教學(xué)實驗板,來滿足有關(guān)單片機(jī)教學(xué)實驗的要求。從教學(xué)實驗的角度出發(fā),該實驗板可適用于電類專業(yè)和非電類專業(yè)不同層次單片機(jī)教學(xué)實驗的要求,如:自動化,儀器儀表,電子技術(shù),電子測量,計算機(jī)應(yīng)用,機(jī)電一體化等各專業(yè),及機(jī)械專業(yè)。利用該板可以做各種編程實驗,和一些簡單的輸入輸出接口實驗。如彩燈實驗,數(shù)碼管顯示,音樂盒播放設(shè)計,鍵盤輸入,模擬量的輸入、輸出,數(shù)模轉(zhuǎn)換及電機(jī)正反轉(zhuǎn)等。上述實驗都不需要擴(kuò)展硬件,該板上將提供全部接口和器件。同時為了強調(diào)學(xué)生的動手能力,在設(shè)計該實驗板時,我們把AT89C51單片機(jī)的所有控制線、地址線和數(shù)據(jù)線經(jīng)驅(qū)動后,將全部引入一排接線端子上,這就給系
4、統(tǒng)的擴(kuò)展提供了便利條件,我們可以在面包板上設(shè)計自己的接口電路,由單片機(jī)來控制實現(xiàn)。如存儲器的擴(kuò)充、鍵盤/顯示接口芯片的擴(kuò)展等、若連續(xù)做的話,可以使每個同學(xué)在自己占用的實驗板上,設(shè)計成一個獨立的應(yīng)用系統(tǒng)。這對于同學(xué)們的實際工作能力,將會有一個很大的促進(jìn)和提高。 1.2 課題研究現(xiàn)狀 嵌入式系統(tǒng)作為一個的熱門領(lǐng)域,涵蓋了微電子技術(shù)、電子信息技術(shù)、計算機(jī)軟件和硬件等多項技術(shù)領(lǐng)域的應(yīng)用。隨著后PC時代來臨,嵌入式應(yīng)用呈現(xiàn)系統(tǒng)復(fù)雜化,應(yīng)用多樣化,硬件集約化、軟件平臺化等特點。 行業(yè)發(fā)展現(xiàn)狀與趨勢: 目前,在上海地區(qū),嵌入式系統(tǒng)開發(fā)涉及的行業(yè)眾多, 水平參差不齊, 大多數(shù)停留
5、在8位單片機(jī)開發(fā)這個層面上, 一部分單位開始采用32位機(jī),并采用了實時操作系統(tǒng)。而具有能夠同時進(jìn)行軟件設(shè)計和芯片設(shè)計的SOC系統(tǒng)設(shè)計的系統(tǒng)級高端人才幾乎沒有, 國際上領(lǐng)先的多核嵌入式系統(tǒng)設(shè)計, 可重構(gòu)嵌入式系統(tǒng)設(shè)計在上海市的應(yīng)用還停留在少數(shù)研究單位的研究中。 2. 系統(tǒng)總體方案設(shè)計及功能模塊介紹 2.1 系統(tǒng)概述及總體方案設(shè)計 2.1.1系統(tǒng)概述 通過u-boot,內(nèi)核,根文件系統(tǒng)的移植實現(xiàn)文件的下載。 2.1.2 總體方案設(shè)計 1.通過SD啟動開發(fā)板; 2.將u-boot下載到開發(fā)板的內(nèi)存中,并將u-boot燒寫到開發(fā)板的EMMC上; 3.重新啟動開發(fā)板,(從E
6、MMC啟動); 4.將內(nèi)核下載到開發(fā)板的內(nèi)存中; 網(wǎng)絡(luò)傳輸(tftp服務(wù)器和客戶端,tftp為文件傳輸協(xié)議); 5.將虛擬機(jī)中的一個叫做nfsdir的目錄掛載到開發(fā)板的根目錄; 掛載:nfsdir這個目錄下的內(nèi)容,虛擬機(jī)可以和開發(fā)板實現(xiàn)共享; 掛載:通過nfs服務(wù)器實現(xiàn); 6.最終實現(xiàn)下載文件程序的運行。 3. 系統(tǒng)軟件設(shè)計與實現(xiàn) 3.1 主程序設(shè)計與實現(xiàn) 系統(tǒng)移植與實現(xiàn) 1、新建/tftpboot目錄,若有則不用新建 2、將u-boot-fs4412.bin、uImage與exynos4412-origen.dtb拷貝到tftpb
7、oot目錄下 3、修改tftpboot目錄權(quán)限 sudo chmod -R 777 /tftpboot 4、新建/source目錄,若有則不用新建 5、將nfsdir壓縮包拷貝到該目錄下,解壓sudo tar -xf nfsdir.ok.tar 6、修改source目錄權(quán)限 sudo chmod -R 777 /source 7、檢查tftp與nfs服務(wù)器是否安裝 apt-cache policy tftpd-hpa apt-cache policy nfs-kernel-server 如果沒有安裝,則在終端輸入sudo apt-get i
8、nstall tftpd-hpa sudo apt-get install nfs-kernel-server進(jìn)行安裝 8、修改配置文檔: tftp服務(wù)器: 1、 sudo vim /etc/default/tftpd-hpa # /etc/default/tftpd-hpa TFTP_USERNAME="tftp" TFTP_DIRECTORY="/tftpboot" TFTP_ADDRESS="0.0.0.0:69"
9、 TFTP_OPTIONS="-l -c -s"0 保存退出 2、查看tftp服務(wù)器狀態(tài) sudo service tftpd-hpa status 若為正在運行,則重啟:sudo service tftpd-hpa restart 若停止,則啟動:sudo service tftpd-hpa start nfs服務(wù)器: 1、sudo vim /etc/exports /source/nfsdir *(rw,sync,no_subtree_check,no_
10、root_squash) 2、查看nfs服務(wù)器狀態(tài) sudo service nfs-kernel-service status 若為正在運行,則重啟:sudo service nfs-kernel-server restart 若停止,則啟動:sudo service nfs-kernel-server start 9、啟動開發(fā)板 設(shè)置參數(shù):setenv ipaddr 192.168.100.200 setenv serverip 192.168.100.2
11、 saveenv tftp 41000000 u-boot-fs4412.bin movi write u-boot 41000000 重啟開發(fā)板,重新設(shè)置參數(shù): setenv ipaddr 192.168.100.200 setenv serverip 192.168.100.2 setenv bootcmd tftp 41000000 uImage\;tftp 42000000 exynos4412-origen.dtb\;bootm 41000000 - 42000000 set
12、bootargs noinitrd root=/dev/nfs nfsroot=192.168.100.2:/source/nfsdir rw rootwait console=ttySAC2,115200n8 init=/linuxrc ip=192.168.100.200 clk_ignore_unused saveenv 3.2 服務(wù)器端程序設(shè)計與實現(xiàn) 開始 3.2.1服務(wù)器端主流程圖(如圖1) socket connect recv/send close
13、 結(jié)束 圖1 3.2.2服務(wù)器端主代碼 int main() { struct sockaddr_in servAddr; memset(&servAddr,0,sizeof(servAddr)); servAddr.sin_family=PF_INET; servAddr.sin_port=htons(8888); servAddr.sin_addr.s_addr=inet_addr("192.168.100.200"); //socket int cliFd=socket(PF_I
14、NET,SOCK_STREAM,0); if(-1==cliFd) { perror("socket error!"); return -1; } //printf("socket ok!\n"); //connect int ret=connect(cliFd,(struct sockaddr*)&servAddr,sizeof(servAddr)); if(-1==ret) { perror("connect error!"); close(cliFd); return -1; } printf("connect ok!\n"); //send/r
15、ecv int fd=open("2.txt",O_RDONLY); if(-1==fd) { perror("open error"); return -1; } char buf[100]; memset(buf,0,sizeof(buf)); while(1) { int ret=read(fd,buf,sizeof(buf)); if(0==ret) { break; } send(cliFd,buf,sizeof(buf),0); } //close close(cliFd); return 0; } 3.3 客戶端程序設(shè)計與實現(xiàn)
16、 3.3.1客戶端流程圖(如圖2) 開始 socket bind listen accept 結(jié)束 圖2 3.3.2客戶端主代碼 int main() { struct sockaddr_in servAddr; memset(&servAddr,0,sizeof(servAddr)); servAddr.sin_family=PF_INET; servA
17、ddr.sin_port=htons(8888); servAddr.sin_addr.s_addr=inet_addr("192.168.100.200"); //socket int servFd=socket(PF_INET,SOCK_STREAM,0); if(-1==servFd) { perror("socket error"); return -1; } printf("socket ok"); //bind int ret=bind(servFd,(struct sockaddr*)&servAddr,sizeof(servAddr)); if(-1==
18、ret) { perror("bind error!"); close(servFd); return -1; } printf("bind ok!\n"); //listen ret=listen(servFd,10); if(-1==ret) { perror("listen error!\n"); close(servFd); return -1; } printf("listen ok!\n"); //accept int connFd=accept(servFd,NULL,NULL); if(-1==connFd) { perror
19、("accept error!"); close(servFd); return -1; } printf("accept ok!\n"); //send/recv int fd=open("2.txt",O_RDONLY); if(-1==fd) { perror("open error"); return -1; } char buf[100]; memset(buf,0,sizeof(buf)); while(1) { int sevc=recv(connFd,buf,sizeof(buf),0); if(0==sevc) { break
20、; } write(fd,buf,sizeof(buf)); puts(buf); printf("recv from server %s success!\n",buf); } //close close(servFd); close(connFd); return 0; } 4. 系統(tǒng)測試 4.1 系統(tǒng)軟件測試 Server端運行結(jié)果如下圖所示 圖3 Client端運行如下圖所示 圖4 4.2 系統(tǒng)硬件測試
21、 程序在虛擬機(jī)上運行結(jié)果如下所示 圖5 程序在開發(fā)板上運行如下所示 圖6 5. 總結(jié)和展望 在嵌入式的學(xué)習(xí)過程中,讓我了解了什么是嵌入式系統(tǒng)。它就是以應(yīng)用為中心,以計算機(jī)技術(shù)為基礎(chǔ),軟硬件可定制,適用于不同應(yīng)用場合,對功能、可靠性、成本、體積、功耗有嚴(yán)格要求的計算機(jī)系統(tǒng)。他一般由嵌入式微處理器、外圍硬件設(shè)備、嵌入式操
22、作系統(tǒng)、用戶應(yīng)用程序四個部分組成,用于實現(xiàn)對其他設(shè)備的控制、監(jiān)視或管理功能。嵌入式系統(tǒng)已經(jīng)應(yīng)用于科學(xué)研究、工業(yè)控制、軍事技術(shù)、交通通信、醫(yī)療衛(wèi)生、消費娛樂等領(lǐng)域,人們?nèi)粘J褂玫氖謾C(jī)、PDA、汽車、智能家電、GPS等均是嵌入式系統(tǒng)的典型代表。 老師在講解過程中,首先交給我們的是一些簡單的命令應(yīng)用,Linux具有很豐富的命令,絕大多數(shù)命令具有大量的參數(shù)。在學(xué)習(xí)命令的過程中,只要你認(rèn)真的看著老師操作還有認(rèn)真聽著他講,你就會發(fā)現(xiàn)有些命令的操作還是很簡單的,不過在操作的過程中,我也有遇到有些困難,會出現(xiàn)你按照書上學(xué)習(xí)的例子,將命令輸入終端時會出現(xiàn)你不想要的結(jié)果,也就是錯誤的結(jié)果。這是問問旁邊的同學(xué)或是
23、懂的同學(xué)就可以解決了。在對于這部分的學(xué)習(xí)中,讓我知道了命令對于嵌入式的重要性。它是linux的重要內(nèi)容,linux中所有的功能都是通過命令執(zhí)行。在實際應(yīng)用中,為了減少系統(tǒng)開銷,經(jīng)常不使用圖形界面,此時,對系統(tǒng)的所有操作都需要以命令方式來執(zhí)行。在嵌入式系統(tǒng)開發(fā)過程中,由于目標(biāo)機(jī)的性能和配置比較低,因此,一般情況下目標(biāo)機(jī)僅具有命令窗口而沒有圖形界面,對目標(biāo)機(jī)的所有操作都通過命令來實現(xiàn)。 6. 參考文獻(xiàn) 《Linux設(shè)備驅(qū)動開發(fā)詳解(第2版)》——華清遠(yuǎn)見嵌入式培訓(xùn)中心宋老師著 《Cortex-M3+uC/OS-IT嵌入式系統(tǒng)開發(fā)入門與應(yīng)用》——華清遠(yuǎn)見嵌入式培訓(xùn)中心著 《精通Linux設(shè)備驅(qū)動程序開發(fā)》——華清遠(yuǎn)見嵌入式培訓(xùn)中心宋老師翻譯 《Linux內(nèi)核修煉之道》——華清遠(yuǎn)見嵌入式培訓(xùn)中心任橋偉老師著 《Linux那些事兒》——華清遠(yuǎn)見嵌入式培訓(xùn)中心任橋偉老師著 - 10 -
- 溫馨提示:
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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 健康及健康的影響因素課件
- 補氣中藥專題知識講座
- 冠芥蒂防備治療康復(fù)課件
- (精品)第一節(jié)音樂能告訴我們什么
- 廣告管理的要決
- 團(tuán)區(qū)委X年工作總結(jié)
- 藥品公共安全事件典型案例回顧
- (精品)理想從這里啟程
- 第05講--真空中的麥克斯韋方程組-山東-大學(xué)-物理-學(xué)院-電動力學(xué)-課件
- 高一英語人教版必修一Unit2writing課件
- 依法保護(hù)未成年人的合法權(quán)益-PPT課件
- 精益生產(chǎn)豐田生產(chǎn)方式七大浪費_
- 人教版八年級英語下冊Unit-2-Gra課件
- 好習(xí)慣養(yǎng)成主題班會課件
- 5章投資管理A