基于ARM11在Linux平臺下網(wǎng)絡(luò)通信的設(shè)計與實現(xiàn)
摘要:ARM11 系列微處理器是ARM 公司近年推出的新一代RISC 處理器,其性能得到全面的提高。嵌入式Linux 有著微型的內(nèi)核、可裁剪的模塊以及高性能的網(wǎng)絡(luò)通信等功能。兩者的結(jié)合能滿足消費類電子、無線設(shè)備、網(wǎng)絡(luò)應(yīng)用、汽車電子等嵌入式應(yīng)用的需求。
本文引用地址:http://butianyuan.cn/article/148007.htm隨著CPU制造工藝的飛速發(fā)展,越來越多的高性能、低功耗的嵌入式微處理器應(yīng)用到我們生活中的各個方面,ARM11采用ARM公司新一代的指令架構(gòu)ARMv6,其主頻最高可達到1GHz,功耗低至0.4mW/MHz,采用8級流水線技術(shù)。另一方面,它對存儲器系統(tǒng)進行改善,使其更加適用于操作系統(tǒng)對硬件上的需求。
Linux是在Unix的基礎(chǔ)上發(fā)展起來的,它是一種安全、穩(wěn)定、免費并且能移植到多種架構(gòu)的處理器平臺。Linux分為多個模塊,可裁剪一些次要的模塊以減小程序量,從而更好地滿足微處理器對功耗和成本的要求。
1 嵌入式Linux 軟件開發(fā)環(huán)境的搭建
1.1 嵌入式Linux 開發(fā)環(huán)境簡述
嵌入式Linux驅(qū)動程序的開發(fā)需在以Linux為內(nèi)核的操作系統(tǒng)系統(tǒng)下進行,為方便開發(fā)時的數(shù)據(jù)傳輸及信息反饋,安裝VMware虛擬機軟件,并且在其中安裝Ubuntu 10.10操作系統(tǒng)。需要注意的是,操作系統(tǒng)的版本不能太低,因為版本過低,很多工具都無法找到對應(yīng)的支持包,導(dǎo)致一些軟件的失效。
Ubuntu是以Linux為內(nèi)核的操作系統(tǒng),在Ubuntu安裝之初,系統(tǒng)會要求你輸入要新建的賬戶和密碼,這個新建的賬戶用于Ubuntu第一次啟動時的默認登錄賬戶。Ubuntu10.10支持圖形用戶界面,但Linux中還有很多功能都不能以圖形界面的形式表達。
因此,要學(xué)好Linux,就必須對Linux的命令行有比較深入的了解。
Ubuntu10.10會自動安裝VMware工具,用于虛擬機系統(tǒng)與宿主機之間的文件傳輸?shù)?,即用戶可以直接拖動宿主機的文件到虛擬機中。若沒有自動安裝,則選擇VM項下的Install VMware Tools進行安裝。
Linux對普通用戶有一定的權(quán)限限制,如安裝一些支持包時就必須以根用戶的權(quán)限才能進行操作。為方便每次啟動Linux時都以根用戶登陸,可在第一次登陸時進入超級終端,并打開/etc/gdm目錄下的用戶配置文件:custom.conf.即每次登陸時都以root的權(quán)限進行登陸。
1.2 交叉編譯器
交叉編譯器是一種計算機環(huán)境中運行的編譯程序,能編譯出可在另外一種環(huán)境下運行的代碼,我們就稱這種編譯器為交叉編譯器。該文中,我們要在CISC X86架構(gòu)的普通個人電腦中編寫代碼,編譯后的程序在RISC ARMv6架構(gòu)的ARM11微處理器中運行。
1.3 網(wǎng)絡(luò)文件系統(tǒng)
NFS是Network File System的簡寫,即網(wǎng)絡(luò)文件系統(tǒng)。NFS允許一個系統(tǒng)在網(wǎng)絡(luò)上與他人共享目錄和文件。通過使用NFS,用戶和程序可以像訪問本地文件一樣訪問遠端系統(tǒng)上的文件。在嵌入式開發(fā)中,NFS使得開發(fā)時硬件平臺和電腦間文件的傳輸極為方便。
1.4 網(wǎng)絡(luò)編程實驗
實現(xiàn)典型的客戶機/服務(wù)器程序。客戶機、服務(wù)器模式要求每個應(yīng)用程序應(yīng)由兩部分組成:一個部分負責(zé)啟動通信,另一個部分負責(zé)對它進行應(yīng)答。他們通常運行在不同的主機上,分別被稱為客戶機和服務(wù)器。服務(wù)器是指能在網(wǎng)絡(luò)上可提供服務(wù)的任何程序??蛻魴C是指用戶為了得到某種服務(wù)所需要運行的應(yīng)用程序。一個服務(wù)器接受網(wǎng)絡(luò)上客戶機的請求,完成服務(wù)后將結(jié)果返回給客戶機。
2 嵌入式Linux硬件平臺的搭建
2.1 linux 引導(dǎo)程序
嵌入式linux引導(dǎo)程序一般選用u-boot,全稱Universal Boot Loader ,是遵循GPL條款的開放源碼項目。首先設(shè)置撥碼開關(guān)配置ARM11從SD卡中讀取u-boot,再通過超級終端,將讀取到的u-boot拷貝到ARM11板載的NAND Flash中,再設(shè)置啟動方式配置ARM11從Flash中啟動,至此,完成嵌入式linux在ARM11平臺下引導(dǎo)程序的加載。
2.2 linux 內(nèi)核
完成u-boot的加載后,內(nèi)核文件可以直接通過超級終端從PC中傳輸?shù)角度胧介_發(fā)平臺中。通常是把內(nèi)核文件傳輸?shù)絥andflash特定的地址中暫存起來,再通過燒寫命令將該內(nèi)核文件燒寫到特定的內(nèi)核地址中去即完成嵌入式linux內(nèi)核的燒寫。
2.3 嵌入式Linux 文件系統(tǒng)
嵌入式Linux文件系統(tǒng)中的文件是數(shù)據(jù)的集合,文件系統(tǒng)不僅包含著文件中的數(shù)據(jù)而且還有文件系統(tǒng)的結(jié)構(gòu),所有Linux 用戶和程序看到的文件、目錄、軟連接及文件保護信息等都存儲在其中。常用的文件系統(tǒng)為yaffs2文件系統(tǒng)和cramfs文件系統(tǒng)。Yaffs是第一個專門為Nandflash存儲器設(shè)計的嵌入式文件系統(tǒng),適用于大容量的存儲設(shè)備,并且是在GPL協(xié)議下發(fā)布的。Cramfs文件系統(tǒng)是專門為NorFlash設(shè)計的只讀壓縮的文件系統(tǒng),采用實時解壓縮方式,小巧且快速。
3 結(jié)束語
基于ARM11在Linux平臺下網(wǎng)絡(luò)通信程序的流程圖總結(jié)如圖2所示。
本文就目前對于嵌入式linux及其網(wǎng)絡(luò)通信進行闡述,以嵌入式為知識背景,該設(shè)計主要由六個過程(NFS、交叉編譯器、網(wǎng)絡(luò)編程實驗、linux引導(dǎo)程序、linux內(nèi)核、嵌入式Linux文件系統(tǒng))組成。其他嵌入式Linux應(yīng)用程序的編寫過程也與此類似。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)linux相關(guān)文章:linux教程
通信相關(guān)文章:通信原理
評論