基于Linux文件的功能設(shè)計與實現(xiàn).doc

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

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

5 積分

下載資源

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

資源描述:

《基于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è)名稱 : 計算機科學(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 課題研究意義 隨著微機技術(shù)的不斷發(fā)展,在許多工程領(lǐng)域單片機的應(yīng)用日趨廣泛,已逐漸取代了單板機。為了適應(yīng)這一新形勢的變化,目前許多高校及一些中等??茖W(xué)校已不再開設(shè)以單板機為主的“微機原理、接口及應(yīng)用”課程,而直接講授單片機及有關(guān)技術(shù)。但是目前缺少相應(yīng)的實驗設(shè)備及教材。鑒于這種情況,從教學(xué)和科研兩個角度出發(fā),我們

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

4、統(tǒng)的擴展提供了便利條件,我們可以在面包板上設(shè)計自己的接口電路,由單片機來控制實現(xiàn)。如存儲器的擴充、鍵盤/顯示接口芯片的擴展等、若連續(xù)做的話,可以使每個同學(xué)在自己占用的實驗板上,設(shè)計成一個獨立的應(yīng)用系統(tǒng)。這對于同學(xué)們的實際工作能力,將會有一個很大的促進(jìn)和提高。 1.2 課題研究現(xiàn)狀 嵌入式系統(tǒng)作為一個的熱門領(lǐng)域,涵蓋了微電子技術(shù)、電子信息技術(shù)、計算機軟件和硬件等多項技術(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位單片機開發(fā)這個層面上, 一部分單位開始采用32位機,并采用了實時操作系統(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.將虛擬機中的一個叫做nfsdir的目錄掛載到開發(fā)板的根目錄; 掛載:nfsdir這個目錄下的內(nèi)容,虛擬機可以和開發(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、 程序在虛擬機上運行結(jié)果如下所示 圖5 程序在開發(fā)板上運行如下所示 圖6 5. 總結(jié)和展望 在嵌入式的學(xué)習(xí)過程中,讓我了解了什么是嵌入式系統(tǒng)。它就是以應(yīng)用為中心,以計算機技術(shù)為基礎(chǔ),軟硬件可定制,適用于不同應(yīng)用場合,對功能、可靠性、成本、體積、功耗有嚴(yán)格要求的計算機系統(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、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)機的性能和配置比較低,因此,一般情況下目標(biāo)機僅具有命令窗口而沒有圖形界面,對目標(biāo)機的所有操作都通過命令來實現(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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

相關(guān)資源

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

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

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


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