



下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
基于ARM-Linux的Web服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)摘要:隨著嵌入式技術(shù)的發(fā)展和后PC時(shí)代的到來,嵌入式系統(tǒng)被越來越廣泛地應(yīng)用到各個(gè)領(lǐng)域中。同時(shí),信息技術(shù)的迅速發(fā)展也使得嵌入式設(shè)備與Internet的結(jié)合成為必然趨勢(shì)。本文在ARM平臺(tái)上裁剪、配置和移植了Linux內(nèi)核和根文件系統(tǒng),并通過對(duì)web技術(shù)的深入研究最終設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)輕量級(jí)的嵌入式web服務(wù)器。關(guān)鍵詞:嵌入式系統(tǒng);web服務(wù)器;HTTPCGI1引言隨著信息技術(shù)和網(wǎng)絡(luò)的高度發(fā)達(dá),當(dāng)前人們面對(duì)的各類信息資源極為豐富,只有借助各種計(jì)算機(jī),才能對(duì)這些信息進(jìn)行處理。同時(shí),隨著后 PC時(shí)代的到來,計(jì)算機(jī)的概念不再局限于以前的PC而是包括形態(tài)各異、性能千差萬別的各類嵌入式系統(tǒng)。從人們?nèi)粘I钪惺謾C(jī)、 PDA到家中的空調(diào)、冰箱,再到國防、通信、工業(yè)控制等都有嵌入式的影子。在這個(gè)信息時(shí)代,只有 Internet與嵌入式設(shè)備結(jié)合起來才能代表嵌入式技術(shù)的未來發(fā)展方向,而嵌入式 Web服務(wù)器則是這個(gè)方向上的重要應(yīng)用[1]。本文通過在在32位的ARM開發(fā)板上移植LINUX操作系統(tǒng)搭建起開發(fā)環(huán)境,并實(shí)現(xiàn)了基于ARM-LINUX勺輕量WE?務(wù)器。2開發(fā)環(huán)境的建立2.1硬件平臺(tái)的建立本系統(tǒng)選用的是開發(fā)版核心是 Samsung公司的S3C2410處理器,它基于ARM公司的ARM920處理器核,采用0.18um制造工藝的32位微控制器[2]。它集成了以下部件:獨(dú)立的16KB指令Cache和16KB數(shù)據(jù)Cache,MMU支持TFT的LCD控制器,NAN[閃存控制器,3路UART4路DMA4路帶PW啲Timer,I/O口,RTC8路10位ADCTouchScreen接口,IIC-BUS接口,IIS-BUS接口,2個(gè)USB主機(jī),1個(gè)USB設(shè)備,SD主機(jī)和MM(接口,2路SPI。S3C2410處理器最高可運(yùn)行在203MHzarm-cross-3.3.2,在此不詳?shù)穆窂较聦ふ铱蓤?zhí)行arm-linux系統(tǒng)的建立,以開發(fā)板上的bootloader為基礎(chǔ)。2.2軟件環(huán)境的建立在進(jìn)行嵌入式系統(tǒng)的開發(fā)時(shí),我們的目標(biāo)平臺(tái)只有有限的存儲(chǔ)空間和運(yùn)算能力,因此,在ARM平臺(tái)上對(duì)程序進(jìn)行本機(jī)編譯就不太可能了。通過交叉編譯工具,我們就可以在 arm-cross-3.3.2,在此不詳?shù)穆窂较聦ふ铱蓤?zhí)行arm-linux系統(tǒng)的建立,以開發(fā)板上的bootloader為基礎(chǔ)??蓤?zhí)行程序[3]。本文中使用的是arm-linux嵌入式架構(gòu),因此我們使用linux系列工具鏈。我們可以下載安裝集成交叉工具鏈?zhǔn)霭惭b過程,安裝好后下文將默認(rèn)在/usr/local/arm/bin文件。接下來旦(1) Linux內(nèi)核移植將Linux內(nèi)核源碼放到工作目錄下,并解壓,然后修改內(nèi)核源碼根目錄下的Makefile文件,給出編譯工具鏈的路徑,如下所示:CROSS_COMPILE=/usr/local/arm/bin/arm-linux-gcc 然后修改arch/arm/plat-s3c24xx/common-smdk.c 文件,修改NandFlash的分區(qū)信息和NandFlash的硬件信息,可根據(jù)開發(fā)板的配置修改;接著用makemenuconfig命令對(duì)內(nèi)核進(jìn)行基本配置,最后用makezImage命令生成內(nèi)核映像。(2) 配置根文件系統(tǒng)首先需要下載busybox工具和cramfs工具進(jìn)行配
置、編譯和安裝,Busybox的編譯過程與內(nèi)核的編譯過程很接近都是先 makemenuconfig進(jìn)行配置,然后在make進(jìn)行編譯。最后一步執(zhí)行makeallinstall 命令時(shí)會(huì)在busybox目錄下生成_install 文件夾,在這個(gè)文件夾下創(chuàng)建系統(tǒng)文件目錄,必須有的目錄是: /dev、/bin、/usr、/sbin、/lib、/etc、/proc、/sys,接著添加設(shè)備文件、庫文件等,最后用mkcramfs_installrootfs 命令打包。3web服務(wù)器具體實(shí)現(xiàn)在嵌入式web服務(wù)器中,我們要實(shí)現(xiàn)的具體功能主要是靜態(tài)網(wǎng)頁以及能與用戶通過瀏覽器進(jìn)行交互的動(dòng)態(tài)網(wǎng)頁,客戶端的動(dòng)態(tài)請(qǐng)求是通過服務(wù)器端的CGI程序來實(shí)現(xiàn)的,因此服務(wù)器必須要與 CGI程序通信。下面本文分析設(shè)計(jì)過程的幾個(gè)要點(diǎn):3.1建立socket連接Web服務(wù)器與客戶端的連接的建立是通過申請(qǐng)?zhí)捉幼?Socket)實(shí)現(xiàn)的。具體流程,用到的系統(tǒng)調(diào)用有:Socket():返回一個(gè)類似于文件描述符的套接字句柄; bind():將套接字:對(duì)申請(qǐng)的socket進(jìn)行監(jiān)聽,以隨時(shí)接收客戶端發(fā)來的請(qǐng)求;:對(duì)申請(qǐng)的socket進(jìn)行監(jiān)聽,以隨時(shí)接收客戶端發(fā)來的請(qǐng)求;:如有連接到達(dá)則接收連接,返回一個(gè)新的套接字句柄; read():從返回的套接字句柄中讀取客戶端傳來的數(shù)據(jù)。并發(fā)請(qǐng)求的處理為了處理并發(fā)請(qǐng)求,我們應(yīng)當(dāng)創(chuàng)建新的進(jìn)程來處理與3.2客戶端的連接,在linux中使用進(jìn)程號(hào)(PID)來識(shí)別不同的進(jìn)程。系統(tǒng)調(diào)用fork()用來在已存在的進(jìn)程中創(chuàng)建一個(gè)新進(jìn)程,新進(jìn)程稱為子進(jìn)程,原進(jìn)程則稱為父進(jìn)程。它的返回值用來判斷是父進(jìn)程還是子進(jìn)程,如果子進(jìn)程中返回0,父進(jìn)程中返回子進(jìn)程ID,出錯(cuò)返回-1,具體過程如圖2所示。3.3HTTP報(bào)文解析HTTP協(xié)議規(guī)范里規(guī)定了一些基本的規(guī)則,用 CR表示回車,LF表示換行,SP表示空格,HT表示制表符。HTTP消息包括客戶機(jī)向服務(wù)器的請(qǐng)求消息和服務(wù)器向客戶機(jī)的響應(yīng)消息兩種。這兩種類型的消息都由一個(gè)開始行(start-line),零個(gè)或更多個(gè)頭域(message-header),—個(gè)指示頭域結(jié)束的空行(也就是以一個(gè)CRLF為前綴的什么也沒有的行),最后一個(gè)可有可無的消息實(shí)體(message-body)組成⑸。請(qǐng)求消息開始行格式如下:MethodSPRequest-URISPHTTP-VersionCRL其中Method表示請(qǐng)求方法;Request-URI是一個(gè)統(tǒng)一資源標(biāo)識(shí)符,標(biāo)識(shí)請(qǐng)求的資源在服務(wù)器上的位置;HTTP-Version表示請(qǐng)求的HTTP協(xié)議版本。請(qǐng)求方法描述了對(duì)指定資源執(zhí)行的動(dòng)作,常用的方法有有兩種: GET方法表示請(qǐng)求獲取Request-URI所標(biāo)識(shí)的資源,POS■方法告訴服務(wù)器將附在請(qǐng)求實(shí)體中的信息發(fā)送到Request-URI。響應(yīng)消息的開始行格式如下:HTTP-VersionSPStatus-CodeSPReason-PhraseCRLF其中,HTTP-Version表示服務(wù)器HTTP協(xié)議的版本;Status-Code表示服務(wù)器發(fā)回的響應(yīng)狀態(tài)代碼;Reason-Phrase表示狀態(tài)代碼的文本描述。相應(yīng)狀態(tài)代碼有三位數(shù)字組成,第一個(gè)數(shù)字定義了響應(yīng)的類別,且有五種可能取值,后兩位數(shù)字不同的組合代表不同的狀態(tài):表1HTTF響應(yīng)狀態(tài)碼取值描述1XX表示請(qǐng)求已接收,繼續(xù)處理2XX成功接收,比如200表示處理成功。3XX重定向,要完成請(qǐng)求必須進(jìn)行更進(jìn)一步的操作4XX客戶端錯(cuò)誤,比如404表示訪問的指定資源不存在5XX服務(wù)器端錯(cuò)誤HTTP的頭域包括通用頭,請(qǐng)求頭,響應(yīng)頭和實(shí)體頭四個(gè)部分。每個(gè)頭域由一個(gè)域名,冒號(hào)和域值三部分組成。頭域中記載了報(bào)文的屬性,禾用這些信息可以實(shí)現(xiàn)客戶端與 WEB服務(wù)器之間的請(qǐng)求或應(yīng)答,它包括報(bào)文的數(shù)據(jù)類型、壓縮方法、語言、長度、壓縮方法、最后一次修改時(shí)間、數(shù)據(jù)有效期等信息。3.4與CGI程序通信公共網(wǎng)管接口CGI是web服務(wù)器與服務(wù)器方web程序通信的標(biāo)準(zhǔn)。按照CGI標(biāo)準(zhǔn)編寫的服務(wù)器端的外部擴(kuò)展應(yīng)用程序(我們稱為CGI程序)可以處理客戶端WWW覽器輸入的協(xié)同工作數(shù)據(jù),完成客戶端與服務(wù)器的交互操作。服務(wù)器與CGI通信的途徑有三個(gè):命令行變?cè)?、環(huán)境變量、標(biāo)準(zhǔn)輸入輸出流。命令行變?cè)钚凶冊(cè)峭ㄟ^執(zhí)行程序的命令行傳輸給程序的參數(shù)。環(huán)境變量環(huán)境變量時(shí)執(zhí)行程序外部的變量,用于定義程序的執(zhí)行環(huán)境,服務(wù)器在接受客戶端發(fā)來的請(qǐng)求時(shí)應(yīng)將基本的環(huán)境變量的值設(shè)置好以供CGI程序訪問。常用的環(huán)境變量有以下幾種:REQUEST_METl表示HTTP青求方法,QUERY_STRIN表示CGI程序URL中之后的數(shù)據(jù),當(dāng)使用GET方法時(shí),客戶端傳輸?shù)臄?shù)據(jù)可以通過讀取該變量而獲得;CONTENT_LENG表示客戶端傳輸數(shù)據(jù)的字節(jié)數(shù)。我們可以調(diào)用 setenv()來實(shí)現(xiàn)環(huán)境變量的設(shè)置,如下所示setenv(constchar*name,constchar*value,intoverwrite); 參數(shù)name為環(huán)境變量名稱字符串,參數(shù)value則為變量內(nèi)容,參數(shù)overwrite用來決定是否要改變已存在的環(huán)境變量,如果overwrite不為0,而該環(huán)境變量原已有內(nèi)容,則原內(nèi)容會(huì)被改為參數(shù)value所指的變量內(nèi)容;如果overwrite為0,且該環(huán)境變量已有內(nèi)容,則參數(shù)value會(huì)被忽略。標(biāo)準(zhǔn)輸入輸出流標(biāo)準(zhǔn)輸入時(shí)字符方式程序受到的鍵盤收入,但服務(wù)器也可以將鍵盤輸入以外的輸入,如FORMS單中的數(shù)據(jù)作為標(biāo)準(zhǔn)輸入重定向到程序中,CGI程序同樣可以對(duì)其進(jìn)行處理。同樣的,服務(wù)器可以將 CGI程序的輸出重定向到客戶端瀏覽器,就像服務(wù)器自身控制臺(tái)顯示的標(biāo)準(zhǔn)輸出一樣,如下所示:dup2(intfd,STDOUT_FILENO)STDOUT_FILEN表示標(biāo)準(zhǔn)輸出,這樣我們就將標(biāo)準(zhǔn)輸出重定向到了指定的描述符上,這里我們可以指定為連接的 socket描述符。4實(shí)驗(yàn)結(jié)果將本文的程序在硬件平臺(tái)上運(yùn)行起來后,我們可以在遠(yuǎn)端使用普通 PC機(jī)上的瀏覽器來訪問ARMS上的服務(wù)器。在此我們將ARMS的IP地址設(shè)為32,那么我們?cè)跒g覽器的地址欄輸入32可以訪問服務(wù)器了。5結(jié)束語在硬件平臺(tái)上實(shí)現(xiàn)了本文的web服務(wù)器后,就可以在任意PC機(jī)上通過瀏覽器請(qǐng)求服務(wù)器端的靜態(tài)頁面或CGI程序的執(zhí)行,只要在服務(wù)器端添加需要的CGI程序,就能在遠(yuǎn)程客戶端實(shí)現(xiàn)對(duì)嵌入式設(shè)備的控制。隨著網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,這種通過互聯(lián)網(wǎng)遠(yuǎn)程控制設(shè)備的方式將得到越來越廣泛的應(yīng)用。更多計(jì)算機(jī)職稱論文就在中國專業(yè)職稱論文網(wǎng)!參考文獻(xiàn)張紀(jì)坤,張小全.嵌入式Linux系
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電力系統(tǒng)持續(xù)運(yùn)營的風(fēng)險(xiǎn)管理與預(yù)警系統(tǒng)設(shè)計(jì)
- 借款合同范本q
- 科技與美食文化的碰撞打造未來餐飲連鎖
- 樹林競價(jià)合同范本
- 土地托管中介合同范本
- 知識(shí)產(chǎn)權(quán)保護(hù)企業(yè)創(chuàng)新的動(dòng)力源泉
- 維修裝潢合同范本
- 二零二五年度加裝電梯項(xiàng)目施工人員培訓(xùn)與資質(zhì)審查協(xié)議
- 工程改裝合同范本
- 痛風(fēng)患者的營養(yǎng)平衡與飲食調(diào)整策略
- 生產(chǎn)建設(shè)項(xiàng)目水土保持補(bǔ)償費(fèi)免征申請(qǐng)表
- 合成纖維第五章干法紡絲
- GBZ/T(衛(wèi)生) 277-2016職業(yè)病危害評(píng)價(jià)通則
- GB/T 5267.3-2008緊固件熱浸鍍鋅層
- GB/T 3498-2008潤滑脂寬溫度范圍滴點(diǎn)測(cè)定法
- GB/T 31586.2-2015防護(hù)涂料體系對(duì)鋼結(jié)構(gòu)的防腐蝕保護(hù)涂層附著力/內(nèi)聚力(破壞強(qiáng)度)的評(píng)定和驗(yàn)收準(zhǔn)則第2部分:劃格試驗(yàn)和劃叉試驗(yàn)
- GB/T 15175-2012固體激光器主要參數(shù)測(cè)量方法
- 建筑工程施工進(jìn)度計(jì)劃網(wǎng)絡(luò)圖和橫道圖
- HP工作站BIOS詳解參考模板
- 員工培訓(xùn)、考試、積分記錄表
- 微專題:地理時(shí)空“尺度觀”思想課件
評(píng)論
0/150
提交評(píng)論