基于ARM9的嵌入式Web服務器的研究與應用_第1頁
基于ARM9的嵌入式Web服務器的研究與應用_第2頁
基于ARM9的嵌入式Web服務器的研究與應用_第3頁
基于ARM9的嵌入式Web服務器的研究與應用_第4頁
基于ARM9的嵌入式Web服務器的研究與應用_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、目 錄第 1 章 序言.11.1 選題背景.11.2 選題目的及意義.11.3 選題完成情況.2第 2 章 本項目用到的關(guān)鍵技術(shù).32.1 嵌入式系統(tǒng)構(gòu)建技術(shù).32.2 ARM9 體系結(jié)構(gòu)技術(shù)概述 .4第 3 章 系統(tǒng)總體結(jié)構(gòu)和硬件設(shè)計與實現(xiàn).53.1 嵌入式硬件環(huán)境的介紹.53.2 核心部件選型.53.3 系統(tǒng)硬件模塊設(shè)計與實現(xiàn).63.4 硬件開發(fā)環(huán)境簡介.73.5 嵌入式系統(tǒng)開發(fā)環(huán)境的建立.7第 4 章 系統(tǒng)軟件設(shè)計與實現(xiàn).84.1 LINUX2.6 內(nèi)核的移植.84.2 嵌入式文件系統(tǒng)的移植.104.3 以太網(wǎng)驅(qū)動程序的移植.11第 5 章 嵌入式 WEB 服務器的研究與實現(xiàn).125.1

2、 嵌入式 WEB服務器的原理 .125.2 BOA服務器工作過程.145.3 CGI 工作過程 .15第 6 章 嵌入式 WEB 服務器的應用.156.1 無人值守通信機房遠程監(jiān)控系統(tǒng)的應用.156.2 無人值守通信機房遠程監(jiān)控系統(tǒng)的軟件設(shè)計.166.3 用戶管理.186.4 通信機房遠程監(jiān)測系統(tǒng)的實時數(shù)據(jù)模塊.226.5 通信機房遠程監(jiān)測系統(tǒng)的歷史數(shù)據(jù)模塊.23第 7 章 實訓總結(jié).247.1 實訓工作總結(jié)與展望.247.2 項目中未完成的工作.24參考文獻.251第第 1 1 章章 序言序言1.11.1 選題背景選題背景近幾十年來,隨著嵌入式技術(shù)和網(wǎng)絡技術(shù),特別是以太網(wǎng)技術(shù)的快速發(fā)展,越來

3、越多特定環(huán)境現(xiàn)場都需要能夠借助于嵌入式系統(tǒng)接入 Internet 進行遠程監(jiān)控。嵌入式系統(tǒng)接入玩 Internet 成為了當前嵌入式領(lǐng)域研究的熱點之一,將嵌入式 Web 服務器移植到嵌入式系統(tǒng)后接入 Internet,該嵌入式系統(tǒng)相當于一個功能齊全的小型 Web 服務器,在遠程即可啟動瀏覽器通過 Internet 獲取該 Web服務器發(fā)布的信息,進而實現(xiàn)遠程實時監(jiān)視、控制甚至維護。本文以 ARM9 處理器芯片 S3C2410A 和嵌入式 Linux 為平臺,結(jié)合了嵌入式 Web 技術(shù)和嵌入式數(shù)據(jù)庫技術(shù),對嵌入式 Web 服務器進行研究。1.21.2 選題目的及意義選題目的及意義近幾十年來,隨著

4、嵌入式技術(shù)和網(wǎng)絡技術(shù),特別是以太網(wǎng)技術(shù)的快速發(fā)展,越來越多特定環(huán)境現(xiàn)場,比如無人值守的通信機房、大型糧庫、電氣火災易發(fā)場所等等,都需要能夠借助于嵌入式系統(tǒng)接入 Internet 進行遠程監(jiān)控。嵌入式系統(tǒng)通過 HTTP 協(xié)議將現(xiàn)場采集的數(shù)據(jù)以 Web 頁面的形式傳送到遠程計算機的瀏覽器上顯示,維護人員能夠在遠程實時監(jiān)視、控制、調(diào)節(jié)監(jiān)控現(xiàn)場。相對于傳統(tǒng)的遠程監(jiān)控模式,基于嵌入式的遠程監(jiān)控系統(tǒng)具有各個模塊集成度高、性能穩(wěn)定、成本低、體積小等優(yōu)點。嵌入式系統(tǒng)接入 Internet 成為了當前嵌入式領(lǐng)域研究的熱點之一。將嵌入式 Web 服務器移植到嵌入式系統(tǒng)后接入 Internet,該嵌入式系統(tǒng)相當于一

5、個功能齊全的小型 Web 服務器,在遠程即可啟動瀏覽器(比如 IE)通過 Internet 獲取該 Web 服務器發(fā)布的信息,進而實現(xiàn)遠程實時監(jiān)視、控制甚至維護,并且,這種基于 HTML 標準化的 web 用戶界面降低了為不同操作平臺而定制人機界面的開發(fā)費用、人員培訓費用和系統(tǒng)升級維護費用。2嵌入式 Web 服務器接入 Internet 后,需要處理來自遠程客戶端的連接請求和傳輸大量的數(shù)據(jù),一方面要求嵌入式硬件處理能力更強;另一方面隨著傳輸數(shù)據(jù)增多,并且數(shù)據(jù)類型更加復雜,在嵌入式系統(tǒng)中以文件存儲數(shù)據(jù)的傳統(tǒng)存儲形式遠遠滿足不了需求,解決辦法是使用嵌入式數(shù)據(jù)庫來存儲并且管理數(shù)據(jù)。在設(shè)計嵌入式系統(tǒng)時

6、使用嵌入式數(shù)據(jù)庫將極大地增強嵌入式系統(tǒng)的整體性能,縮短嵌入式系統(tǒng)的開發(fā)周期,同時借助數(shù)據(jù)庫的安全性檢查可以提高嵌入式系統(tǒng)的整體安全性能。正是基于以上背景,本論文搭建了 ARM9 嵌入式 Linux 的嵌入式軟硬件平臺,在此軟硬件平臺之上實現(xiàn)了嵌入式 web 服務器 Boa 和嵌入式數(shù)據(jù)庫SQLite,采用 C 語言和 HTML 設(shè)計了一個無人值守通信機房遠程監(jiān)控系統(tǒng)來體現(xiàn)嵌入 web 服務器和嵌入式數(shù)據(jù)庫的應用。1.31.3 選題完成情況選題完成情況.1 嵌入式系統(tǒng)平臺的構(gòu)建嵌入式系統(tǒng)平臺的構(gòu)建嵌入式系統(tǒng)硬件采用 S3C241OA 為嵌入式處理器,主要的外圍設(shè)備包括:64MB

7、的 SDRAM、ZMB 的 NORFlash、64MB 的 NANDFlash 以及外擴的DM9O0010/100M 以太網(wǎng)控制器。裁剪 Linux2.6 內(nèi)核為嵌入式操作系統(tǒng),移植以太網(wǎng)驅(qū)動程序以及根文件系統(tǒng)的制作。.2 嵌入式嵌入式 WebWeb 服務器的研究與實現(xiàn)服務器的研究與實現(xiàn)選擇 Boa 作為嵌入式 Web 服務器,研究 Boa 服務器的源碼,學習使用 CGI技術(shù)開發(fā) Web 應用程序。 .3 嵌入式嵌入式 WebWeb 服務器在無人值守通信機房遠程監(jiān)控系統(tǒng)中的應服務器在無人值守通信機房遠程監(jiān)控系統(tǒng)中的應用。用。以一個無人值守通信機房遠程監(jiān)控系統(tǒng)為例

8、介紹了嵌入式 web 服務器的應用,詳細闡述了無人值守通信機房遠程監(jiān)控系統(tǒng)各個模塊的設(shè)計。3第第 2 2 章章 本項目用到的關(guān)鍵技術(shù)本項目用到的關(guān)鍵技術(shù)2.12.1 嵌入式系統(tǒng)構(gòu)建技術(shù)嵌入式系統(tǒng)構(gòu)建技術(shù)嵌入式系統(tǒng)是一類特殊的計算機系統(tǒng),具有功耗低、體積小、集成度高等特點,通常由嵌入式硬件系統(tǒng)、嵌入式操作系統(tǒng)和應用軟件構(gòu)成。他們之間的關(guān)系如圖 2-1 所示。圖 2-1 嵌入式系統(tǒng)基本結(jié)構(gòu)圖在介紹了嵌入式系統(tǒng)的基本結(jié)構(gòu)后,本章以下幾小節(jié)將首先介紹嵌入式系統(tǒng)的硬件環(huán)境,然后詳細介紹嵌入式交叉編譯環(huán)境的構(gòu)建,接著闡述了嵌入式系統(tǒng)軟件環(huán)境的建立,包括 Linux2.6 內(nèi)核的移植、根文件系統(tǒng)的制作、以太

9、網(wǎng)驅(qū)動程序的移植,最后對構(gòu)建的嵌入式軟硬件平臺進行了測試。42.22.2 ARM9ARM9 體系結(jié)構(gòu)技術(shù)概述體系結(jié)構(gòu)技術(shù)概述對于 ARM9 系列,其基本內(nèi)核是 ARM9TDMI,主要有 7 部分構(gòu)成。比較最常用的是 ARM920T 內(nèi)核。ARM920T 結(jié)構(gòu)主要部分有:ARM9TDMI 內(nèi)核CPU、MMU、Cache、協(xié)處理器接口、運行跟蹤信息接口(ETM)、JTAG 調(diào)試接口、總線接口等 7 部分構(gòu)成。圖 2-2 ARM920T 結(jié)構(gòu)框圖ARM9 采用哈佛(Harvard)結(jié)構(gòu),程序存儲器與數(shù)據(jù)存儲器分開,提供了較大的存儲器帶寬。同時,大多數(shù) DSP 都采用此結(jié)構(gòu)。RM9 為五級流水(取指,

10、譯碼,執(zhí)行,緩沖/數(shù)據(jù),回寫),平均功耗為 0.7mW/MHz。時鐘速度為120MHz-200MHz,每條指令平均執(zhí)行 1.5 個時鐘周期。ARM9 系列微處理器包含ARM920T、ARM922T 和 ARM940T 三種類型,主要應用在手持產(chǎn)品、視頻電話、PDA、數(shù)字消費產(chǎn)品、機頂盒、家用網(wǎng)關(guān)等方面。5第第 3 3 章章 系統(tǒng)總體結(jié)構(gòu)和硬件設(shè)計與實現(xiàn)系統(tǒng)總體結(jié)構(gòu)和硬件設(shè)計與實現(xiàn)3.3.1 1 嵌入式硬件環(huán)境的介紹嵌入式硬件環(huán)境的介紹本論文的硬件平臺為廣州致遠電子有限公司的 MagicARM2410 教學實驗平臺,它的中央處理器(CPU)是韓國三星公司基于 ARM920T 內(nèi)核開發(fā)的s3C24

11、10A。s3C2410A 適用于 POS 機、手持設(shè)備、數(shù)字多媒體播放設(shè)備等等,具有價格低、功耗低、性能高等優(yōu)點。該實驗平臺主要由微處理器、存儲模塊、控制模塊、以太網(wǎng)接口模塊、USB 接口模塊、液晶顯示模塊、仿真調(diào)試模塊組成。嵌入式硬件系統(tǒng)由嵌入式處理器和外圍設(shè)備組成,為嵌入式系統(tǒng)軟件運行提供了物理平臺,是整個嵌入式系統(tǒng)的基礎(chǔ)。嵌入式操作系統(tǒng)包括文件系統(tǒng),操作系統(tǒng)內(nèi)核以及驅(qū)動程序,是整個嵌入式系統(tǒng)的邏輯控制核心。嵌入式操作系統(tǒng)向上為應用程序開發(fā)提供 API 接口,向下提供與硬件設(shè)備交互的接口,同時還要管理復雜的系統(tǒng)資源,如內(nèi)存管理,進程調(diào)度等。3.23.2 核心部件選型核心部件選型3.3.2.

12、1S3C24102.1S3C2410 處理器處理器S3C2410 處理器是 Samsung 公司基于 ARM 公司的 ARM920T 處理器核,采用0.18um 制造工藝的 32 位微控制器。該處理器擁有:獨立的 16KB 指令 Cache 和16KB 數(shù)據(jù) Cache,MMU,支持 TFT 的 LCD 控制器,NAND 閃存控制器,3 路UART,4 路 DMA,4 路帶 PWM 的 Timer ,I/O 口,RTC,8 路 10 位 ADC,Touch Screen 接口,IIC-BUS 接口,IIS-BUS 接口,2 個 USB 主機,1 個 USB 設(shè)備,SD 主機和 MMC 接口,2

13、 路 SPI。S3C2410 處理器最高可運行在 203MHz。核心板的尺寸僅相當于名片的 2/3 大小,尺寸如此小巧的嵌入式核心板是國內(nèi)首創(chuàng)。開發(fā)商可以充分發(fā)揮想象力,設(shè)計制造出小體積,高性能的嵌入式應用產(chǎn)品。6CLE16ALE17CE9RE8WE18R/B7IO129IO230IO331IO432IO541IO642IO743IO844K9F1208DATA 0DATA 1DATA 2DATA 3DATA 4DATA 5DATA 6DATA 7CLEALEnFCEnFREnFWER/nB2.2 NANDNAND FlashFlash 存儲器存儲器S3C2410 內(nèi)部有 NAN

14、D Flash 控制器,支持從 NADN Flash 啟動。圖 3-1 所示是 NAND Flash 連接圖。S3C2410 采用一組內(nèi)部寄存器來完成 NAND Flash 的操作。圖 3-1 NAND Flash 連接圖3.33.3 系統(tǒng)硬件模塊設(shè)計與實現(xiàn)系統(tǒng)硬件模塊設(shè)計與實現(xiàn)與嵌入式 Web 服務器應用相關(guān)的幾個模塊:微處理器 S3C241OA、存儲模塊、以太網(wǎng)接口模塊。.1 微處理器微處理器 S3C241OAS3C241OAS3C2410A 采用了 ARM 公司設(shè)計的 ARM92OT 內(nèi)核,0.18um 工藝的 CMOS 存儲器單元和標準宏單元。s3C241OA 以下豐富

15、的內(nèi)部設(shè)備:16KB 的指令 Cache 和16KB 的數(shù)據(jù) cache,MMu 虛擬存儲器管理,支持 NANDFlash 系統(tǒng)引導,系統(tǒng)管理器,3 通道 UART,4 通道 DMA,1/0 端口,RTc,8 通道 10 位 ADc, USB 主機接口,USB 設(shè)備接口,2 個 SPI 總線接口以及內(nèi)部 PLL 時鐘倍頻器。.2 存儲模塊存儲模塊S3C24lOA 通過外部總線接口擴展了 2 片 SDRAM 和 1 片 NORFlash。其中,SDRAM 使用的是 H 師公司的 HY57V651620,容量為 64MB;NORFlash 采用的是 SST公司的 SST39vF16

16、01,容量為 ZMB。這兩種存儲器相當于通用計算機的內(nèi)存條,7用來運行各種程序。NANDFlash(Samsung 公司的 K9F1208)是 S3C2410A 通過NANDFlashBUS 擴展的一片存儲設(shè)備,容量為 64MB。它就相當于通用計算機的硬盤,用來存放各種數(shù)據(jù)和程序。53C2410A 既支持從 NANDFlash 啟動,又支持從NORFlash 啟動,可通過 OMO 引腳進行選擇,當 OMO 為低電平時,系統(tǒng)從NANDFlash 啟動;當 OMO 為高電平或懸空時,系統(tǒng)從 NORFlash 啟動。.3 以太網(wǎng)接口模塊以太網(wǎng)接口模塊本實驗平臺使用 DAVICOM 公

17、司的 DM9000 快速以太網(wǎng)控制處理器,該處理器配備有標準 10M/100M 自適應,16K 大容量的 FIFO,4 路多功能 GPIO,全雙工工作等功能。MagicARM2410 試驗箱主板使用 16 位總線控制 DMg000 以太網(wǎng)控制器,數(shù)據(jù)總線 DATA1DATA15 與 DM9000 的 SD0SD15 接,地址線 SA4 一 SA4 進行了相應的連接,片選線 nGCG3 與芯片的 AEN 相連。DM9000 以太網(wǎng)控制器的工作基址為 0X300。3.43.4 硬件開發(fā)環(huán)境簡介硬件開發(fā)環(huán)境簡介硬件平臺為廣州致遠電子有限公司的 MagicARM2410 教學實驗平臺,它的中央處理器(

18、CPU)是韓國三星公司基于 ARM920T 內(nèi)核開發(fā)的 s3C2410A。s3C2410A適用于 POS 機、手持設(shè)備、數(shù)字多媒體播放設(shè)備等等,具有價格低、功耗低、性能高等優(yōu)點。該實驗平臺主要由微處理器、存儲模塊、控制模塊、以太網(wǎng)接口模塊、USB 接口模塊、液晶顯示模塊、仿真調(diào)試模塊組成。3.53.5 嵌入式系統(tǒng)開發(fā)環(huán)境的建立嵌入式系統(tǒng)開發(fā)環(huán)境的建立由于嵌入式系統(tǒng)缺乏足夠的系統(tǒng)資源而不能在本機上(目標機)進行開發(fā),因此,嵌入式軟件開發(fā)形成了自己獨特的交叉開發(fā)方式。也就是說,在開發(fā)者將軟件編寫好以后,先在宿主機上采用適合目標機的編譯器對軟件進行編譯,然后將編譯后的可執(zhí)行程序下載到目標機。如果可執(zhí)

19、行程序在目標機上不能達到用戶的預期目標,則要在宿主機上對目標機進行相應的交叉調(diào)試。嵌入式系統(tǒng)開發(fā)環(huán)境一般由如下部分構(gòu)成:宿主機,目標機,工作站以及將連接網(wǎng)絡環(huán)境。8所謂宿主機,就是進行交叉編譯的主機,論文采用的基于 32 位 X86 平臺的Cent0S 服務器。目標機就是交叉編譯后的可執(zhí)行程序?qū)嶋H運行的環(huán)境,也就是MagicARM2410 實驗平臺。根據(jù)宿主機與目標機通信的目的不同,他們之間的連接方式分為三種: 以太網(wǎng)連接主要用于嵌入式操作系統(tǒng)內(nèi)核和根文件系統(tǒng)的下載; 并口連接主要用于 BootLoader 的移植和系統(tǒng)的調(diào)試; 串口連接主要用于應用軟件的調(diào)試。通過交換機和網(wǎng)線將工作站、宿主機

20、、嵌入式系統(tǒng)組建成一個小型的局域網(wǎng),兩兩之間能夠相互通信,在本論文中,直接操作宿主機不太方便,效率較低,解決的辦法就在工作站安裝了 windowsXP 系統(tǒng),通過工作站利用遠程聯(lián)機軟件登入宿主機,這樣既解決了操作不便的問題,又能夠?qū)λ拗鳈C和目標機進行操作和管理。第第 4 4 章章 系統(tǒng)軟件設(shè)計與實現(xiàn)系統(tǒng)軟件設(shè)計與實現(xiàn)4.14.1 Linux2.6Linux2.6 內(nèi)核的移植內(nèi)核的移植由于 Linux 操作系統(tǒng)的內(nèi)核源代碼是使用 C 語言編寫的,這使得它具有良好的可移植性,只需要一些修改就能移植到不同的處理器平臺上。同時 Linux是一款 GNU 標準的開源操作系統(tǒng),用戶可以免費下載,并能夠依據(jù)

21、需要對其進行修改。所以 Linux 操作系統(tǒng)成為嵌入式系統(tǒng)開發(fā)首選的操作系統(tǒng)。Linux 內(nèi)核 2.6 版本對 53C2410A 處理器的支持十分完善,在 S3C241OA 處理器上移植 Linux 只需要要較少的修改。內(nèi)核移植主要包括修改內(nèi)核代碼和配置內(nèi)核選項兩部分,具體移植步驟如下:1、準備 Linux2.6.28 內(nèi)核源代碼。先下載源代碼,并解壓至/base 目錄下:#tarzxvflinux-2.6.28.tar.gz C /base#cd/base/linux-2.6.282、內(nèi)核依據(jù)各個分層次結(jié)構(gòu)的 Makefile 進行編譯,首先修改 Linux-2.6.289目錄下的頂層 Ma

22、kefile 文件,目的是為了修改 Linux 內(nèi)核支持的處理器體系結(jié)構(gòu)和指定編譯內(nèi)核所需的編譯器。#vi Makefile將 ARCH ?=$(SUBARCH)修改為 ARCH =arm將 CROSS_COMPILE ?= 修改為CROSSCOMPILE =/usr/loc3.4.1/bin/arm-linux-3、因為 MagieARM2410 的 BootLoader 已經(jīng)對 Nandflah 進行了分區(qū),要避免 LinuX 內(nèi)核再次對 Nandnah 進行分區(qū)。#vi arch/arm/Plat-s3c24xx/common-smdk.c /找到如下數(shù)據(jù)結(jié)構(gòu)Static structP

23、latform-device_initdata*smdk-devs=/&s3c_device_nand, 注釋掉或者刪除該語句,防止 Linux 對 nandflash行二次擦除和分區(qū).&smdk_led4,&smdk_led5,&smdk_led6,&smdk_led7,;4、修改 BoadL0ader 中的 para.bin 文件將其中的 ttySO 改為 ttySACO,要通專門修改 param.bin 的軟件來完成.5、配置內(nèi)核。在配置內(nèi)核前,先拷貝 S3C2410A 開發(fā)板的默認配置到內(nèi)核目錄下,以簡化配置過程。#cp arch/ann/eon

24、figs/s3e2410_defconfig.config#make menuconfig/以下是配置內(nèi)核的主要選項。GeneralsetuP-*Configurestandardkernelfeatures(forsmallsystems) -SystemTyPe-s3C2410Maehines-*SMDK2410/A9M2410Boot oPtions-將(root=/dev/hdal ro init=/bin/bash console=ttySACO)Defaultkernel10commandstring 改成(root=/dev/ram rw ramdisk=4096console=

25、tty0console=ttySACO,11520ON8)Default kernel commandstringNetwork device support-Ethenet(10or1OOMbit) -DM9000support/支持 DM9000 網(wǎng)卡Generic Media Independent Interface device supportFilesystems-Kernel automounter supportKemel automounter version 4 support(also supports V3)Pseudo filesystems-*Virtualmemo

26、ry file system support(former shm fs)Network FileSystems-NFSfilesystemsupport*Root filesystem on NFS保存退出,產(chǎn)生.config 文件。6、編譯內(nèi)核。#make zlmage 編譯完成以后,會生成內(nèi)核鏡像文件/base/linux-2.6.14/arch/arm/boot/zImage,透過串口將這個文件下載到目標機上。重啟目標機就會看到 Linux 內(nèi)核啟動畫面。4.24.2 嵌入式文件系統(tǒng)的移植嵌入式文件系統(tǒng)的移植在嵌入式系統(tǒng)中,當嵌入式 Linux 內(nèi)核運行以后,需要加載合適的文件系統(tǒng),用

27、于管理、組織各種文件。常用的嵌入式系統(tǒng)文件包括 Cramfs 文件系統(tǒng)、Yaffs 文件系統(tǒng)和 JFFSZ 文件系統(tǒng)等。嵌入式 Linux 系統(tǒng)中的文件系統(tǒng)常常采用樹型結(jié)構(gòu),如圖 4-1 所示為本系統(tǒng)采用的 Cramfs 文件系統(tǒng)的組織結(jié)構(gòu)。在 Linux 系統(tǒng)中,包括硬件設(shè)備在內(nèi)的一切都以文件的形式存在。整個文件系統(tǒng)掛載在根目錄(/)上,然后根據(jù)不同的分類以樹形組織在一起。下面簡要介紹一些重要的目錄。111) 整個文件系統(tǒng)的掛載點。2) .bin:一般用戶可執(zhí)行的命令。3) /sbin 超級用戶(root)可執(zhí)行的命令。4) /etc:一些服務和程序的配置文件,比如 res,linuxrc。

28、5) /dev:包括系統(tǒng)的硬件設(shè)備文件,比如 null.console。6) /Proc:不占用硬盤空間,在系統(tǒng)啟動時由系統(tǒng)維護,存放一些系統(tǒng)的信息,比如 cpu,內(nèi)存,NandFlash 的使用信息 。4.34.3 以太網(wǎng)驅(qū)動程序的移植以太網(wǎng)驅(qū)動程序的移植前面已經(jīng)制作好了內(nèi)核和文件系統(tǒng)的鏡像文件,接著將它們下載到實驗平臺,但發(fā)現(xiàn)無法獲取 IP 地址,也 ping 不通宿主機。然后在/Proc 目錄下也找不到網(wǎng)絡設(shè)備,所以可以推斷主機無法識別網(wǎng)絡設(shè)備,也就是沒有相應的以太網(wǎng)驅(qū)動程序。為了以后進行嵌入式 Web 服務器的研究和開發(fā),移植以太網(wǎng)驅(qū)動程序十分重要。本系統(tǒng)平臺外擴了一路 10/100M

29、Ps 以太網(wǎng)接口電路,該電路的核心芯片是DAVICOCM 公司的 DM9000 自適應網(wǎng)絡芯片。圖 4-2 為 DM9000 和 S3C2410A 處理器的電路連接示意圖。下面主要介紹與以太網(wǎng)驅(qū)動移植的相關(guān)的端口連接。S3C2410A 的 16 根數(shù)據(jù)總線 DAIA0DATA15 與 DM9000 芯片的 SDO 一 SD15 相連;片選線與 DM9O00 的 AEN 相連,CMD 連接 S3C2410A 的地址總線 ADDR,由s3c2410A 的說明文檔可查地址和數(shù)據(jù)端口地址分別為 0 x18000000 和Ox18000004;EECS 拉高:16bit 模式;EECK 拉高,INT 連

30、接到 2440EINT7:INT 腳為低時為有效中斷信號,中斷線為 EINT7,EEECS、EEDO、EECK 引腳懸空。12圖 4-2DM9000 和說額 S3c2410A 處理器的電路連接示意圖有了以上對硬件接口的分析,移植以太網(wǎng)驅(qū)動程序就比較簡單了。以太網(wǎng)驅(qū)動程序的移植通常包括以下幾步:網(wǎng)絡設(shè)備的初始化,網(wǎng)絡設(shè)備向內(nèi)核注冊,網(wǎng)絡設(shè)備收發(fā)數(shù)據(jù),網(wǎng)絡設(shè)備的內(nèi)核移植。下面詳細介紹 DM9000 驅(qū)動程序的移植。1)DM9000 的初始化。DM9000 的初始化包括地址注冊的物理地址,數(shù)據(jù)注冊的物理地址以及 DM9000 中斷注冊的物理地址。在 linux 一2.6.29/arch/arm/pl

31、ats3c24xx 添加了三個結(jié)構(gòu)my_dm9000_resource,my_dm9000_platdata,my_device_dm9000 用于 DM90009的初始化。2)注冊 DM9000 到內(nèi)核。在 arm/arm/mach-s3c24l0/devs.h 文件中添加如下一行:extern struct platform_device my_device_dm9000;在arm/arm/maeh_s3e24l0/maeh_smdk24l0.c 文件中的*smdk2410_devices_initdata 添加&s3c_device 處 dm9000, 。3)網(wǎng)絡設(shè)備收發(fā)數(shù)據(jù)先在

32、內(nèi)核自帶的 DM9000 網(wǎng)卡驅(qū)動源碼 driver/net/dm9000.c 中添加下面必要的頭文件和宏定義。接著利用 for 循環(huán)設(shè)置芯片 MAC 地址,最后使能 DMg000的中斷。4)設(shè)備驅(qū)動程序加載到內(nèi)核這步比較容易,在內(nèi)核編譯配置選項中,driver-net-10/100Mnet-13DM9O00support 選項選中,然后重新編譯,最后將包含 DM9000 驅(qū)動程序的內(nèi)核下載到系統(tǒng)。第第 5 5 章章 嵌入式嵌入式 WebWeb 服務器的研究與實現(xiàn)服務器的研究與實現(xiàn)5.15.1 嵌入式嵌入式 WebWeb 服務器的服務器的原理原理以 ARM9 處理器芯片 S3C241OA 和嵌

33、入式 Linux 為平臺,結(jié)合了嵌入式 Web技術(shù)和嵌入式數(shù)據(jù)庫技術(shù),對嵌入式 Web 服務器進行研究,選用 Samsung 公司的 S3C2410A 處理器和嵌入式 Linux 操作系統(tǒng),搭建了嵌入式 Web 服務器所需要的軟硬件平臺。構(gòu)建了嵌入式 Web 服務器的軟件平臺,包括內(nèi)核、文件系統(tǒng)以及以太網(wǎng)驅(qū)動程序設(shè)計,編譯后將他們下載到目標板上調(diào)試、運行。嵌人式Web 服務器采用 Browser/Server 的方式來工作, 在這種工作方式下, 客戶端要有一個瀏覽器程序, 而服務器端則需要有一個 Web 服務器。客戶端可以使用瀏覽器來訪問 Web 服務器, 并可通過網(wǎng)頁來進行相應的設(shè)置和操作。

34、嵌人式 Web 服務器的核心部分是通過 boa 實現(xiàn)的, 而應用程序接口模塊則采用 CGI 來實現(xiàn)。對嵌入式 Web 服務器 Boa 的源碼進行了深入的分析,也分析了嵌入式數(shù)據(jù)庫 SQLite 的體系結(jié)構(gòu)、API 接口,最后成功將嵌入式 Web 服務器技術(shù)和嵌入式數(shù)據(jù)庫技術(shù)應用于無人值守通信機房遠程監(jiān)控系統(tǒng)。當 Web 瀏覽器發(fā)送一個 HTTP 請求給 Web 服務器,如果 Web 服務器判斷這個請求為動態(tài)請求,自己不能處理,就將這個請求提交給 CGI 程序處理,CGI 程序?qū)⒄埱蟮挠嘘P(guān)數(shù)據(jù)設(shè)置成環(huán)境變量,然后在 Web 服務器與 CGI 程序之間建立標準輸入輸出兩條通道,CGI 程序通過標準

35、輸出將處理結(jié)果返回給 Web 服務器,Web 服務器再將處理結(jié)果會送到客戶端并用瀏覽器進行顯示。Boa服務器支持CGI。根據(jù)需要, 編寫各種控制程序, 實現(xiàn)數(shù)據(jù)的動態(tài)交互。將Boa源碼移植到目標板上, 首先要使用交叉編譯工具將Boa源碼編譯成目標板上可運行的程序。具體做法為, 在源碼下運行而Configure命令來得到MakeFile文件, 然后修改MakeFile中的編譯工具,將其改為宿主機的交叉編譯工具, 如CC =/usr/local/arm/2.95.3/bin/arm linux gcc CPP =/usr/local/arm/2.95.3/bin/arm linux gcc -E1

36、4然后在宿主機上進行編譯, 得到目標板上可運行Boa。編譯后的可以編譯到內(nèi)核, 也可直接將其下載到目標板上。要使得boa能夠運轉(zhuǎn)起來, 還需要對配置文件boa.conf進行相應的配置。主要的配置選項包括偵聽端口Port。訪問日志AccessLog;錯誤日志ErroeLog;存放HTML文件的根目錄DocumentRoot等。配置好boa.conf后, 就可將相應的文件按照配置好的路徑進行存放。這樣就可正常運轉(zhuǎn)起來。CGI是Web服務器與外部擴展應用程序交互的一種標準接口。在設(shè)計Web服務器時, 可以根據(jù)CGI標準來編寫相應的擴展程序, 以實現(xiàn)客戶端與服務器間的動態(tài)互。5.25.2 BoaBoa

37、 服務器工作過程服務器工作過程Boa 服務器的工作流程如圖 5-1 所示,在 Boa 服務器啟動以后,首先進行Web 服務器的初始化工作,包括創(chuàng)建環(huán)境變量、創(chuàng)建 TCP 套接字、綁定端口、開始偵聽、進入循環(huán)結(jié)構(gòu),以及等待接受客戶端瀏覽器的請求。當客戶端請求到來時,Boa 服務器驗證客戶端的請求能否通過,若不能通過驗證,則丟棄客戶端的請求,繼續(xù)偵聽客戶端的請求;否則接受請求。接受數(shù)據(jù)包請求以后,Web 服務器分析客戶端的請求,解析請求的方式,若為靜態(tài)頁面請求 Web 服務器調(diào)用 initget()函數(shù)進行處理;若為 CGI 動態(tài)請求,web 服務器調(diào)用init_get()函數(shù)進行處理,將結(jié)果放回

38、給客戶端的瀏覽器,完成處理后,關(guān)閉與客戶端的 TCP 連接,返回等待客戶端的請求。處理靜態(tài)頁面請求的 initget()函數(shù)的基本執(zhí)行流程。init-get()函數(shù)首先會取消 cGI 環(huán)境變量,獲取文件 req 一pathname 的信息,并且根據(jù) req結(jié)構(gòu)更新文件信息,然后將數(shù)據(jù)寫入 req 一datasemem,process-get()函數(shù)完成的功能為將 request 結(jié)構(gòu)中的 datae-men 字符串返回套接字并在用戶瀏覽器上顯示相應的內(nèi)容。15 圖 5-1Boa 服務器的工作流程圖 5.35.3 CGICGI 工作過程工作過程CGI 是外部擴展應用程序與 Web 服務器交互的一

39、個標準接口,遵循 CGI 標準的外部擴展應用程序能夠處理 Web 客戶端與 Web 服務器之間的動態(tài)交互,這樣擴展了 Web 服務器的功能,豐富了對網(wǎng)絡的使用。CGI 的工作原理如圖 5-2 所示,當 Web 瀏覽器發(fā)送一個 HTTP 請求給 Web 服務器,如果 Web 服務器判斷這個請求為動態(tài)請求,自己不能處理,就將這個請求提交給 CGI 程序處理,CGI 程序?qū)⒄埱蟮挠嘘P(guān)數(shù)據(jù)設(shè)置成環(huán)境變量,然后在Web 服務器與 CGI 程序之間建立標準輸入輸出兩條通道,CGI 程序通過標準輸出將處理結(jié)果返回給 Web 服務器,Web 服務器再將處理結(jié)果會送到客戶端并用瀏覽器進行顯示。16圖 5-2CG

40、I 的工作原理圖第第 6 6 章章 嵌入式嵌入式 WebWeb 服務器的應用服務器的應用前幾章搭建了嵌入式系統(tǒng)的軟硬件平臺,實現(xiàn)了嵌入式 Web 服務器以及嵌入式數(shù)據(jù)庫系統(tǒng)。本章以設(shè)計一個無人值守通信機房遠程監(jiān)控系統(tǒng)為例來介紹嵌入式 Web 服務器的應用。6.16.1 無人值守通信機房遠程監(jiān)控系統(tǒng)的無人值守通信機房遠程監(jiān)控系統(tǒng)的應用應用無人值守通信機房遠程監(jiān)控系統(tǒng)的總體設(shè)計如圖 6-1,本系統(tǒng)采用總線進行集中控制,嵌入式 Web 服務器負責上下級模塊、數(shù)據(jù)處理、儲存等等。機房供電監(jiān)測模塊負責監(jiān)控電網(wǎng)運行情況和后備電源(UPS)的狀態(tài),通過電壓互感器、電流互感器來獲取交流電的各項參數(shù)。機房安全監(jiān)

41、測模塊負責處理機房內(nèi)環(huán)境的監(jiān)測和控制,通過多傳感器負責收集機房的各種環(huán)境參數(shù),包括溫度、濕度、門窗開/關(guān)狀況。這樣能發(fā)揮各個傳感器的優(yōu)勢,全方位的集信息,盡可能地消除信息的不確定性。維護人員可以在遠端通過瀏覽器訪問本嵌入式 Web 服務器發(fā)布的信息,進而實現(xiàn)對無人值守通信機房的遠程監(jiān)控?;谇度胧?Web 服務器的無人值守通信機房遠程監(jiān)控系統(tǒng)運行穩(wěn)定,該系統(tǒng)具有較好的人機交互界面,實現(xiàn)了對無人值守通信機房的溫度、濕度、門窗開關(guān)狀態(tài)、電機狀態(tài)等參數(shù)的遠程監(jiān)控,達到了預期的設(shè)計目標。17圖 6-1 無人值守遠程監(jiān)控系統(tǒng)的總體設(shè)計6.26.2 無人值守通信機房遠程監(jiān)控系統(tǒng)的軟件設(shè)計無人值守通信機房遠

42、程監(jiān)控系統(tǒng)的軟件設(shè)計本軟件設(shè)計是基于嵌入式 Linux 操作平臺,采用目前流行的 B/S (browser/server)結(jié)構(gòu),采用 C 編寫 CGI 應用程序,后臺為 sQLite 數(shù)據(jù)庫。數(shù)據(jù)庫接受客戶端的服務請求,把處理結(jié)果或是中間數(shù)據(jù)返回給客戶端,保存這些信息。嵌入式 Web 服務器和前端模塊通信,獲取機房的各種信行狀態(tài),把所有的運行狀態(tài)保存在內(nèi)存區(qū)域中,并把這些信息寫入 sQLite 庫中。按遠程監(jiān)控系統(tǒng)的功能可以將系統(tǒng)劃為如圖 6-2 所示的 5 個模塊,分用戶管理模塊、供電檢測模塊、安全監(jiān)測模塊、歷史數(shù)據(jù)模塊和退出系統(tǒng)。用戶登錄模塊添加查詢修改刪除18圖 6-2 無人值守機房遠程

43、監(jiān)控系統(tǒng)的軟件設(shè)計框圖6.36.3 用戶管理用戶管理用戶管理模塊用于管理登入無人值守通信機房遠程監(jiān)控系統(tǒng)的各個用戶及其密碼,包括添加、刪除、查詢、修改密碼等功能。當用戶想要登入本遠程監(jiān)控系統(tǒng)時必須要通過密碼安全驗證,進而提高了整個系統(tǒng)的安全性能。.1 測試登錄用戶驗證用例測試登錄用戶驗證用例通信機房遠程監(jiān)控系統(tǒng)包含管理員和一般用戶兩種用戶權(quán)限,整個用戶登錄驗證的流程圖如圖 5.3 所示。本系統(tǒng)只需要一個管理員 Admin,當用戶向 Boa服務器發(fā)送登錄請求后,Boa 服務器調(diào)用后臺的 CGI 程序,CGI 程序首先檢查登錄用戶是否為管理員(Admin),若登錄用戶為 Admin

44、,則比較登錄密碼是否與表供電檢測模塊當前數(shù)據(jù)保存數(shù)據(jù)安全檢測模塊當前數(shù)據(jù)保存數(shù)據(jù)歷史數(shù)據(jù)模塊當前數(shù)據(jù)保存數(shù)據(jù)退出系統(tǒng)退出系統(tǒng)主頁登錄頁面19Adminlnfo 中 Paasoword 欄數(shù)據(jù)相同,若相同,以管理員身份登錄。若登入用戶不為 Admin,則 CGI 程序會查詢 Userinfo 表中 User-ld 看是否有與登錄用戶相同的記錄,接著比較登錄密碼是否與相應 Password 欄數(shù)據(jù)相同,若相同,以一般用戶身份登錄。如果以上過程中出現(xiàn)用戶名或者密碼錯誤,CGI 程序會返回相應的出錯信息給客戶端瀏覽器。用戶登入通信機房遠程監(jiān)控系統(tǒng)的頁面如圖 6-3 所示。圖 6-3 用戶登錄驗證的流程

45、圖.2 測試登錄用戶驗證過程測試登錄用戶驗證過程圖 6-4 通信機房遠程監(jiān)控系統(tǒng)登錄頁面.3 測試添加用戶用例測試添加用戶用例添加記錄使用 INSERT 語句刪除數(shù)據(jù)庫表中相應的記錄,并將返回客戶端瀏覽器是否添加記錄成功,添加用戶頁面如圖 6-5 所示。圖 6-5 添加用戶頁面.4 測試刪除用戶用例測試刪除用戶用例刪除用戶使用 DELECT 語句刪除數(shù)據(jù)庫表中相應的記錄,并將返回客戶端瀏覽器是否刪除記錄成功。刪除用戶頁面如圖 6-6 所示。圖 6-6 刪除用戶頁面.5 測試查詢用戶用例測試查詢用戶用例查詢用戶使用 SELC

46、ET 語句從數(shù)據(jù)相應的表中查詢適當?shù)挠涗洠缓髮⒃撚涗浄祷氐娇蛻舳藶g覽器上顯示。查詢用戶信息頁面如圖 6-7 所示。圖 6-7 查詢用戶信息頁面.6 測試密碼修改用例測試密碼修改用例當 CGI 程序接收到用戶兩次輸入新密碼以后會根據(jù)兩次輸入密碼是否為六位以及兩次輸入密碼是否相同這兩個條件來驗證密碼的合法性,若滿足了這兩個條件則將新密碼寫入數(shù)據(jù)庫的表中,下次登錄就可以使用新密碼。反之,返回客戶端相應的出錯提示。密碼修改的具體流程如圖 6-8 所示。修改密碼頁面如圖 6-9 所示。圖 6-8 密碼修改流程圖圖 6-9 修改密碼頁面236.46.4 通信機房遠程監(jiān)測系統(tǒng)的實時數(shù)據(jù)

47、模塊通信機房遠程監(jiān)測系統(tǒng)的實時數(shù)據(jù)模塊.1 測試用例過程測試用例過程如圖 6-10 所示,通過用戶名和密碼正確地登入系統(tǒng)之后,系統(tǒng)默認顯示實時數(shù)據(jù)模塊。也可以點擊左邊功能列表的“實時數(shù)據(jù)”進入該頁面。此時顯示的為 2011/10/1010:10:01 時刻所獲取的數(shù)據(jù)。圖 6-10 通信機房遠程監(jiān)控系統(tǒng)實時數(shù)據(jù)顯示(2011/10/1010:10:0) 圖 6-11 通信機房遠程監(jiān)控系統(tǒng)實時數(shù)據(jù)顯示(2011/10/1010:11:20)通信機房遠程監(jiān)控系統(tǒng)實時數(shù)據(jù)模塊主要由以下數(shù)據(jù)組成:觀測時間、當前24電壓、當前電流、UPS 狀態(tài)、當前溫度、當前濕度、門窗狀態(tài)、電機狀態(tài)。顯示當前所采集的通信機房的各項數(shù)據(jù)

溫馨提示

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

最新文檔

評論

0/150

提交評論