基于Linux文件的功能設計與實現.doc

上傳人:小** 文檔編號:16770030 上傳時間:2020-10-24 格式:DOC 頁數:13 大?。?74.08KB
收藏 版權申訴 舉報 下載
基于Linux文件的功能設計與實現.doc_第1頁
第1頁 / 共13頁
基于Linux文件的功能設計與實現.doc_第2頁
第2頁 / 共13頁
基于Linux文件的功能設計與實現.doc_第3頁
第3頁 / 共13頁

下載文檔到電腦,查找使用更方便

5 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《基于Linux文件的功能設計與實現.doc》由會員分享,可在線閱讀,更多相關《基于Linux文件的功能設計與實現.doc(13頁珍藏版)》請在裝配圖網上搜索。

1、 信息工程學院 嵌入式系統(tǒng)設計課程設計報告 題目 : 基于Linux的文件下載功能的設計與實現 學號 : 學生姓名 : 專業(yè)名稱 : 計算機科學與技術 班級 : 目錄 1. 課題研究意義和現狀 - 1 - 1.1 課題研究意義 - 1 - 1.2 課題研究現狀 - 1 - 2. 系統(tǒng)總體方案設計及功能模塊介紹 - 2 - 2.1 系統(tǒng)概述及總體方案設計 - 2 - 3. 系統(tǒng)軟件設計與實現 - 2 - 3.1 主程序設計與實現 - 2 - 3.2 服務器端程序設計與實現 - 3 - 3.

2、3 客戶端程序設計與實現 - 5 - 4. 系統(tǒng)測試 - 8 - 4.1 系統(tǒng)軟件測試 - 8 - 4.2 系統(tǒng)硬件測試 - 8 - 5. 總結和展望 - 9 - 6. 參考文獻 - 10 - 信息工程學院嵌入式系統(tǒng)設計課程設計 1. 課題研究意義和現狀 1.1 課題研究意義 隨著微機技術的不斷發(fā)展,在許多工程領域單片機的應用日趨廣泛,已逐漸取代了單板機。為了適應這一新形勢的變化,目前許多高校及一些中等專科學校已不再開設以單板機為主的“微機原理、接口及應用”課程,而直接講授單片機及有關技術。但是目前缺少相應的實驗設備及教材。鑒于這種情況,從教學和科研兩個角度出發(fā),我們

3、此次的畢業(yè)設計嘗試設計一種單片機教學實驗板,來滿足有關單片機教學實驗的要求。從教學實驗的角度出發(fā),該實驗板可適用于電類專業(yè)和非電類專業(yè)不同層次單片機教學實驗的要求,如:自動化,儀器儀表,電子技術,電子測量,計算機應用,機電一體化等各專業(yè),及機械專業(yè)。利用該板可以做各種編程實驗,和一些簡單的輸入輸出接口實驗。如彩燈實驗,數碼管顯示,音樂盒播放設計,鍵盤輸入,模擬量的輸入、輸出,數模轉換及電機正反轉等。上述實驗都不需要擴展硬件,該板上將提供全部接口和器件。同時為了強調學生的動手能力,在設計該實驗板時,我們把AT89C51單片機的所有控制線、地址線和數據線經驅動后,將全部引入一排接線端子上,這就給系

4、統(tǒng)的擴展提供了便利條件,我們可以在面包板上設計自己的接口電路,由單片機來控制實現。如存儲器的擴充、鍵盤/顯示接口芯片的擴展等、若連續(xù)做的話,可以使每個同學在自己占用的實驗板上,設計成一個獨立的應用系統(tǒng)。這對于同學們的實際工作能力,將會有一個很大的促進和提高。 1.2 課題研究現狀 嵌入式系統(tǒng)作為一個的熱門領域,涵蓋了微電子技術、電子信息技術、計算機軟件和硬件等多項技術領域的應用。隨著后PC時代來臨,嵌入式應用呈現系統(tǒng)復雜化,應用多樣化,硬件集約化、軟件平臺化等特點。 行業(yè)發(fā)展現狀與趨勢: 目前,在上海地區(qū),嵌入式系統(tǒng)開發(fā)涉及的行業(yè)眾多, 水平參差不齊, 大多數停留

5、在8位單片機開發(fā)這個層面上, 一部分單位開始采用32位機,并采用了實時操作系統(tǒng)。而具有能夠同時進行軟件設計和芯片設計的SOC系統(tǒng)設計的系統(tǒng)級高端人才幾乎沒有, 國際上領先的多核嵌入式系統(tǒng)設計, 可重構嵌入式系統(tǒng)設計在上海市的應用還停留在少數研究單位的研究中。 2. 系統(tǒng)總體方案設計及功能模塊介紹 2.1 系統(tǒng)概述及總體方案設計 2.1.1系統(tǒng)概述 通過u-boot,內核,根文件系統(tǒng)的移植實現文件的下載。 2.1.2 總體方案設計 1.通過SD啟動開發(fā)板; 2.將u-boot下載到開發(fā)板的內存中,并將u-boot燒寫到開發(fā)板的EMMC上; 3.重新啟動開發(fā)板,(從E

6、MMC啟動); 4.將內核下載到開發(fā)板的內存中; 網絡傳輸(tftp服務器和客戶端,tftp為文件傳輸協(xié)議); 5.將虛擬機中的一個叫做nfsdir的目錄掛載到開發(fā)板的根目錄; 掛載:nfsdir這個目錄下的內容,虛擬機可以和開發(fā)板實現共享; 掛載:通過nfs服務器實現; 6.最終實現下載文件程序的運行。 3. 系統(tǒng)軟件設計與實現 3.1 主程序設計與實現 系統(tǒng)移植與實現 1、新建/tftpboot目錄,若有則不用新建 2、將u-boot-fs4412.bin、uImage與exynos4412-origen.dtb拷貝到tftpb

7、oot目錄下 3、修改tftpboot目錄權限 sudo chmod -R 777 /tftpboot 4、新建/source目錄,若有則不用新建 5、將nfsdir壓縮包拷貝到該目錄下,解壓sudo tar -xf nfsdir.ok.tar 6、修改source目錄權限 sudo chmod -R 777 /source 7、檢查tftp與nfs服務器是否安裝 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進行安裝 8、修改配置文檔: tftp服務器: 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服務器狀態(tài) sudo service tftpd-hpa status 若為正在運行,則重啟:sudo service tftpd-hpa restart 若停止,則啟動:sudo service tftpd-hpa start nfs服務器: 1、sudo vim /etc/exports /source/nfsdir *(rw,sync,no_subtree_check,no_

10、root_squash) 2、查看nfs服務器狀態(tài) sudo service nfs-kernel-service status 若為正在運行,則重啟:sudo service nfs-kernel-server restart 若停止,則啟動:sudo service nfs-kernel-server start 9、啟動開發(fā)板 設置參數: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ā)板,重新設置參數: 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 服務器端程序設計與實現 開始 3.2.1服務器端主流程圖(如圖1) socket connect recv/send close

13、 結束 圖1 3.2.2服務器端主代碼 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 客戶端程序設計與實現

16、 3.3.1客戶端流程圖(如圖2) 開始 socket bind listen accept 結束 圖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端運行結果如下圖所示 圖3 Client端運行如下圖所示 圖4 4.2 系統(tǒng)硬件測試

21、 程序在虛擬機上運行結果如下所示 圖5 程序在開發(fā)板上運行如下所示 圖6 5. 總結和展望 在嵌入式的學習過程中,讓我了解了什么是嵌入式系統(tǒng)。它就是以應用為中心,以計算機技術為基礎,軟硬件可定制,適用于不同應用場合,對功能、可靠性、成本、體積、功耗有嚴格要求的計算機系統(tǒng)。他一般由嵌入式微處理器、外圍硬件設備、嵌入式操

22、作系統(tǒng)、用戶應用程序四個部分組成,用于實現對其他設備的控制、監(jiān)視或管理功能。嵌入式系統(tǒng)已經應用于科學研究、工業(yè)控制、軍事技術、交通通信、醫(yī)療衛(wèi)生、消費娛樂等領域,人們日常使用的手機、PDA、汽車、智能家電、GPS等均是嵌入式系統(tǒng)的典型代表。 老師在講解過程中,首先交給我們的是一些簡單的命令應用,Linux具有很豐富的命令,絕大多數命令具有大量的參數。在學習命令的過程中,只要你認真的看著老師操作還有認真聽著他講,你就會發(fā)現有些命令的操作還是很簡單的,不過在操作的過程中,我也有遇到有些困難,會出現你按照書上學習的例子,將命令輸入終端時會出現你不想要的結果,也就是錯誤的結果。這是問問旁邊的同學或是

23、懂的同學就可以解決了。在對于這部分的學習中,讓我知道了命令對于嵌入式的重要性。它是linux的重要內容,linux中所有的功能都是通過命令執(zhí)行。在實際應用中,為了減少系統(tǒng)開銷,經常不使用圖形界面,此時,對系統(tǒng)的所有操作都需要以命令方式來執(zhí)行。在嵌入式系統(tǒng)開發(fā)過程中,由于目標機的性能和配置比較低,因此,一般情況下目標機僅具有命令窗口而沒有圖形界面,對目標機的所有操作都通過命令來實現。 6. 參考文獻 《Linux設備驅動開發(fā)詳解(第2版)》——華清遠見嵌入式培訓中心宋老師著 《Cortex-M3+uC/OS-IT嵌入式系統(tǒng)開發(fā)入門與應用》——華清遠見嵌入式培訓中心著 《精通Linux設備驅動程序開發(fā)》——華清遠見嵌入式培訓中心宋老師翻譯 《Linux內核修煉之道》——華清遠見嵌入式培訓中心任橋偉老師著 《Linux那些事兒》——華清遠見嵌入式培訓中心任橋偉老師著 - 10 -

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關資源

更多
正為您匹配相似的精品文檔
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網版權所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對上載內容本身不做任何修改或編輯。若文檔所含內容侵犯了您的版權或隱私,請立即通知裝配圖網,我們立即給予刪除!