国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Linux的嵌入式WebServer的設(shè)計(jì)與實(shí)現(xiàn)

2014-05-30 10:48:04周麗麗
電腦知識(shí)與技術(shù) 2014年9期
關(guān)鍵詞:服務(wù)器

周麗麗

摘要:提出基于ARM9和Linux嵌入Web服務(wù)器的實(shí)現(xiàn)方案,介紹了基于S3C2410處理器嵌入式Web服務(wù)器的硬件電路和軟件設(shè)計(jì),通過(guò)搭建嵌入式交叉編譯環(huán)境,移植BootLoader、Linux內(nèi)核、文件系統(tǒng)、Boa網(wǎng)絡(luò)服務(wù)器,給出了嵌入式Web服務(wù)器的實(shí)現(xiàn)方法,通過(guò)通用網(wǎng)關(guān)接口CGI,成功實(shí)現(xiàn)了動(dòng)態(tài)網(wǎng)絡(luò)服務(wù)。

關(guān)鍵詞:S3C2410處理器;Linux;Web 服務(wù)器;BOA 網(wǎng)絡(luò)服務(wù)器

中圖分類(lèi)號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)09-1966-03

嵌入式系統(tǒng)具有功能特定、規(guī)模可變、擴(kuò)展靈活、有一定的實(shí)時(shí)性和穩(wěn)定性、系統(tǒng)式內(nèi)核比較小等特點(diǎn)。隨著Internet技術(shù)持續(xù)發(fā)展,嵌入式產(chǎn)品的上網(wǎng)被寄予厚望。然而,以TCP/IP協(xié)議為核心的網(wǎng)絡(luò)軟件對(duì)于計(jì)算機(jī)系統(tǒng)的運(yùn)算速度、內(nèi)存空間要求相對(duì)較高。由于早期的CPU和單片機(jī)是嵌入式系統(tǒng)中的主體,運(yùn)算能力有限,速度很慢,內(nèi)存空間有限,硬件上的限制阻礙了網(wǎng)絡(luò)的嵌入式應(yīng)用。近年來(lái),計(jì)算機(jī)硬件特別是CPU的發(fā)展得到很大幅度的提升,已經(jīng)可以將操作系統(tǒng)、TCP/IP協(xié)議軟件以及相應(yīng)的應(yīng)用軟件存放在以Flash為主的存儲(chǔ)器中。操作系統(tǒng)和TCP/IP協(xié)議軟件隨著Linux的普及揭開(kāi)了神秘的面紗,嵌入式產(chǎn)品的網(wǎng)絡(luò)化逐漸成為現(xiàn)實(shí)。

1 硬件系統(tǒng)設(shè)計(jì)

從技術(shù)上來(lái)講,嵌入式產(chǎn)品網(wǎng)絡(luò)化有多種方式。比如:有的是通過(guò)專(zhuān)門(mén)Webserver實(shí)現(xiàn),有的是通過(guò)專(zhuān)用網(wǎng)關(guān)連接,也有的是在嵌入式產(chǎn)品中擴(kuò)展傳統(tǒng)網(wǎng)絡(luò)技術(shù),通過(guò)嵌入式系統(tǒng)本身的架構(gòu)實(shí)現(xiàn)Webserver功能。前兩種方案構(gòu)成比較簡(jiǎn)單,實(shí)現(xiàn)的功能也比較單一,所以本文重在闡述后者,也即基于Linux的嵌入式Webserver系統(tǒng)的構(gòu)建(硬件系統(tǒng)結(jié)構(gòu)框圖見(jiàn)圖1)。

該系統(tǒng)主要由S3C2410處理器、Flash存儲(chǔ)器、SDRAM、JTAG接口電路和時(shí)鐘、復(fù)位、電源電路組成,通過(guò)專(zhuān)用以太網(wǎng)接口電路連接以太網(wǎng),并通過(guò)RS232接口電路與PC電腦相連。其中核心處理器S3C2410采用Samsung公司生產(chǎn)的一款基于32位ARM核的RISC嵌入式處理器核,該處理?yè)碛歇?dú)立的16KB數(shù)據(jù)Cache和16KB指令Cache,SD主機(jī)和MMC接口,NAND閃存控制器,2個(gè)USB主機(jī),1個(gè)USB設(shè)備,采用272-FBGA芯片封裝,最高頻率可運(yùn)行在203MHz。

2 開(kāi)發(fā)環(huán)境Linux平臺(tái)建立

ARM Linux開(kāi)發(fā)首先要有ARM Linux編譯開(kāi)發(fā)環(huán)境,常見(jiàn)做法是采用所謂“虛擬開(kāi)發(fā)環(huán)境”方式。也就是主機(jī)使用Windows操作系統(tǒng),虛擬機(jī)安裝Linux系統(tǒng),然后在虛擬機(jī)上建立ARM Linux編譯開(kāi)發(fā)環(huán)境。虛擬機(jī)搭建工具可以使用WMware WorkStation,它的完整使用過(guò)程大體分為:建立一個(gè)新的虛擬機(jī)、配置安裝好的虛擬機(jī)、配置虛擬機(jī)的網(wǎng)絡(luò)3個(gè)部分。

2.1 虛擬機(jī)建立

建立虛擬機(jī)的操作并不復(fù)雜,打開(kāi)VMware軟件環(huán)境,按照向?qū)崾局鸩讲僮鳎敝两Y(jié)束,就可以順利完成全部過(guò)程。具體操作如下:首先啟動(dòng)VMware WorkStation 軟件,單擊【File】→ 【New】→【Virtual Machine】選項(xiàng),會(huì)出現(xiàn)一個(gè)VMware安裝向?qū)Т翱冢ㄒ?jiàn)圖2)。依指引操作,直至出現(xiàn)虛擬機(jī)相關(guān)參數(shù)的界面(見(jiàn)圖3),單擊【Finish】按鈕,這時(shí)候就已經(jīng)建立完成一個(gè)虛擬機(jī)了。

2.2 虛擬機(jī)配置

虛擬機(jī)配置是指對(duì)虛擬機(jī)的硬盤(pán)大小、內(nèi)存容量和網(wǎng)絡(luò)類(lèi)型等各項(xiàng)參數(shù)進(jìn)行設(shè)置修改的過(guò)程,虛擬機(jī)安裝完成之后,就可以進(jìn)行虛擬機(jī)配置。具體單擊“Edit virtual machine settings”,開(kāi)始進(jìn)行參數(shù)設(shè)置,可以對(duì)虛擬機(jī)的Devices進(jìn)行配置(見(jiàn)圖4)。

2.3 配置網(wǎng)絡(luò)

配置虛擬機(jī)網(wǎng)絡(luò)也就是搭建Linux編譯開(kāi)發(fā)環(huán)境,它主要完成三大目標(biāo)任務(wù)。一是目標(biāo)板通過(guò)NFS協(xié)議掛接到服務(wù)器的開(kāi)發(fā)目錄下,二是開(kāi)發(fā)終端通過(guò)串口監(jiān)視目標(biāo)程序的運(yùn)行,三是利用Samba服務(wù)器的開(kāi)發(fā)目錄映射到終端的一個(gè)本地目錄。完成Linux編譯開(kāi)發(fā)環(huán)境的搭建主要包括準(zhǔn)備源文件、搭建工作目錄、創(chuàng)建系統(tǒng)變量、創(chuàng)建binutils、編譯內(nèi)核以及創(chuàng)建boot-trap gcc、gblic、GCC和G++等過(guò)程。

3 軟件系統(tǒng)設(shè)計(jì)

3.1 Boot Loader移植

當(dāng)前比較流行的Boot Loader是由韓國(guó)Mizi公司開(kāi)發(fā)的Vivi,它針對(duì)ARM9處理器設(shè)計(jì),提供比較完備的命令體系,操作起來(lái)十分方便。該文即以Vivi為例來(lái)說(shuō)明Boot Loader的移植過(guò)程。

Vivi在通常情況下有兩種工作模式。第一種是啟動(dòng)加載模式,也稱(chēng)為自主模式,是 BootLoader的常規(guī)工作模式。這個(gè)過(guò)程不需要用戶(hù)介入,Boot Loader自動(dòng)從目標(biāo)機(jī)上將操作系統(tǒng)加載到存儲(chǔ)器中運(yùn)行。第二種被稱(chēng)為下載模式,此時(shí)BootLoader會(huì)向用戶(hù)提供一個(gè)命令行接口,目標(biāo)機(jī)通過(guò)串口從主機(jī)下載文件。

Vivi既可實(shí)現(xiàn)對(duì)ARM920T內(nèi)核的支持,也可實(shí)現(xiàn)對(duì)S3C2410板級(jí)的驅(qū)動(dòng)支持,移植過(guò)程并不復(fù)雜。一般要求先下載和安裝源碼包,然后根據(jù)硬件結(jié)構(gòu)、Linux系統(tǒng)版本及編譯工具修改源文件即可,具體包括以下幾個(gè)步驟:一是進(jìn)行Vivi中與軟件相關(guān)的修改,二是進(jìn)行Vivi中與硬件有關(guān)的初始化,三是進(jìn)行一些支持Nor Flash和Nang Flash啟動(dòng)的修改。

3.2 內(nèi)核系統(tǒng)移植

在完成Boot Loader移植之后,就要開(kāi)始內(nèi)核的移植。Linux內(nèi)核源碼的頂層是usr/src/linux目錄,在此目錄下可以看到大量子目錄。比如存放體系結(jié)構(gòu)相關(guān)核心代碼的arch 目錄,存放用來(lái)重構(gòu)核心大文件的include目錄,存放內(nèi)核初始化代碼的init目錄,存放體系結(jié)構(gòu)特有內(nèi)存管理程序的mm目錄以及drivers目錄、ipc目錄、modules目錄、fs目錄等。

ARM Linux內(nèi)核的移植,主要有以下幾個(gè)步驟。第一,下載和安裝內(nèi)核源代碼包;第二,下載內(nèi)核補(bǔ)丁程序;第三,內(nèi)核裁剪,并根據(jù)硬件系統(tǒng)的要求修改內(nèi)核,選擇或編寫(xiě)驅(qū)動(dòng)程序;第四,編譯并最終生成映像文件。由于不同ARM處理器的內(nèi)核版本不一定相同,所以在移植之前,需要首先選擇一個(gè)適合處理器的內(nèi)核。本系統(tǒng)選用具有S3C2410的Linux-2.6.14內(nèi)核,移植過(guò)程首先是去官方網(wǎng)站下載Linux-2.6.14內(nèi)核,并通過(guò)命令:tarjxvfhnux一2.6.14.tar.bzZ解壓內(nèi)核。接下來(lái)修改makefile文件,主要是修改和體系結(jié)構(gòu)相關(guān)的代碼。然后進(jìn)行內(nèi)核編譯,根據(jù)makefile文件的指示,使用make menuconfig:進(jìn)行菜單式配置,組織內(nèi)核各模塊間的關(guān)系,記錄各模塊間的聯(lián)系。

3.3 根文件系統(tǒng)cramfs移植

根文件系統(tǒng)的移植,是嵌入式系統(tǒng)移植的重要內(nèi)容。只有順利完成根文件系統(tǒng)的掛載,嵌入式系統(tǒng)移植才能宣告完成。根文件系統(tǒng)移植一般包括以下步驟:第一,建立文件系統(tǒng)基本目錄結(jié)構(gòu)。最頂端的稱(chēng)為根目錄/,其它目錄和文件樹(shù)根向下分支,如用于存儲(chǔ)二進(jìn)制文件的/bin目錄、存儲(chǔ)管理系統(tǒng)二進(jìn)制文件的/sbin目錄等。第二,復(fù)制基本文件到/sbin目錄。其中最重要的就是init程序,它是保障系統(tǒng)和運(yùn)行的最基本程序,必不可少。此外還包括執(zhí)行進(jìn)程初始化文件/Linuxrc、調(diào)用程序配置網(wǎng)絡(luò)的/mnt/etc/init.d/rcS文件等。第三,配置系統(tǒng)用戶(hù),保證只有通過(guò)設(shè)置的特定組的特定用戶(hù)才能合法使用系統(tǒng),實(shí)現(xiàn)系統(tǒng)的安全性。第四,根據(jù)系統(tǒng)實(shí)際應(yīng)用需要,添加相關(guān)應(yīng)用程序和系統(tǒng)設(shè)備文件。

嵌入式系統(tǒng)有多個(gè)根文件系統(tǒng)可供選擇,其中Cramfs 是Linus Torvalds開(kāi)發(fā)的一個(gè)具備嵌入式系統(tǒng)基本特性的文件系統(tǒng)。它是只讀的,可以做到高效隨機(jī)讀取,不會(huì)降低系統(tǒng)速度,所以在各種根文件系統(tǒng)中是個(gè)較好的選擇。cramfs移植首先是把/usr目錄下的全部?jī)?nèi)容制成一個(gè)cramfs的Image文件,再把這個(gè)Image文件mount上來(lái),然后通過(guò)loopback設(shè)備來(lái)完成block設(shè)備任務(wù),也就是在/etc/init.d/rcS腳本前面部分加上mount命令,經(jīng)由loopback設(shè)備把這個(gè)cramfs的image文件mount到/usr目錄上去。最后生成目錄樹(shù)映像文件,根文件系統(tǒng)cramfs也就基本建成了。

4 系統(tǒng)的調(diào)試與集成

嵌入式Linux系統(tǒng)主要有三個(gè)Web服務(wù)器,即httpd、thttpd和boa。其中httpd支持超文本協(xié)議,thttpd提供HTTP和簡(jiǎn)單的CGI支持。本系統(tǒng)選擇boa Web服務(wù)器,它小巧高效,支持CGI,源代碼開(kāi)放,非常適合嵌入式系統(tǒng)。實(shí)際安裝時(shí),把index.html放置在/etc/boa/web,用C語(yǔ)言編寫(xiě)CGI程序,名為httpRpmCgi.c。程序通過(guò)httpRpmCgi4Nvs (HTTP_REQ_ID reqId) 對(duì)CGI參數(shù)要進(jìn)行編碼轉(zhuǎn)換,如+變成空格等,找出retpage參數(shù),用httpGetEnv(“QUERY_STRING”)獲得數(shù)據(jù),再通過(guò)arm-Linux-gcc進(jìn)行交叉編譯,將得到的可執(zhí)行文件httpRpmCgi.cgi拷貝到主機(jī)的/etc/boa/cgi-bin,然后用ifconfig設(shè)置目標(biāo)板ip地址為192.168.3.26。啟動(dòng)Boa服務(wù)器,在瀏覽器地址欄輸入http:// 192.168.3.26/ cgi-bin/httpRpmCgi.cgi,即可看到默認(rèn)頁(yè)面。至此,CGI腳本測(cè)試通過(guò),嵌入式WebServer移植成功。

參考文獻(xiàn):

[1] 崔永紅,馬德寶.基于ARM的嵌入式WebServer研究與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2008(8).

[2] 金西,黃汪.嵌入式Linux技術(shù)及其應(yīng)用[J].計(jì)算機(jī)應(yīng)用,2000(7).

[3] 顧詠楓,陳章龍.嵌入式Linux裁剪方法[J].小型微型計(jì)算機(jī)系統(tǒng),2003(9).

[4] 蘇東.主流ARM嵌入式系統(tǒng)設(shè)計(jì)技術(shù)與實(shí)例精解[M].北京:電子工業(yè)出版社,2007.

猜你喜歡
服務(wù)器
通信控制服務(wù)器(CCS)維護(hù)終端的設(shè)計(jì)與實(shí)現(xiàn)
得形忘意的服務(wù)器標(biāo)準(zhǔn)
計(jì)算機(jī)網(wǎng)絡(luò)安全服務(wù)器入侵與防御
服務(wù)器操作系統(tǒng)可信加固技術(shù)研究
湖北電力(2016年10期)2016-04-25 07:55:55
關(guān)于Linux的視頻服務(wù)器開(kāi)發(fā)與實(shí)現(xiàn)分析
河南科技(2014年18期)2014-02-27 14:14:43
積分刷刷刷-FTP服務(wù)器篇
日土县| 临江市| 都江堰市| 扶余县| 铜川市| 衡山县| 松桃| 宿松县| 桂阳县| 林周县| 岳普湖县| 金溪县| 花垣县| 日喀则市| 同仁县| 福海县| 视频| 运城市| 庄河市| 离岛区| 长泰县| 庆安县| 临城县| 石柱| 桐梓县| 江口县| 木兰县| 从江县| 广南县| 化德县| 阿克苏市| 湖口县| 剑川县| 霍邱县| 湘乡市| 镇原县| 怀宁县| 周宁县| 文成县| 灯塔市| 中西区|