2 系統(tǒng)軟件實(shí)現(xiàn)
系統(tǒng)的軟件設(shè)計(jì)與實(shí)現(xiàn)是本系統(tǒng)實(shí)現(xiàn)的關(guān)鍵之一。
2.1 系統(tǒng)軟件:包括嵌入式操作系統(tǒng)與設(shè)備驅(qū)動(dòng)程序
嵌入式操作系統(tǒng)是支持嵌入式系統(tǒng)應(yīng)用的操作系統(tǒng)軟件,是在系統(tǒng)實(shí)時(shí)性、硬件相關(guān)性、軟件固態(tài)化等方面有著突出特點(diǎn)的專用操作系統(tǒng)。由于Cold Fire系列芯片是沒有MMU (內(nèi)存管理單元Memory Management Unit)的處理器,而 uClinux是專為那些沒有MMU的嵌入式處理器開發(fā)的,所以本系統(tǒng)采用uClinux嵌入式操作系統(tǒng)。
uClinux是Linux的一個(gè)嵌入式版本,它是源代碼開放的嵌入式操作系統(tǒng),其內(nèi)核的二進(jìn)制映像文件可以做到小于512K。uClinux針對無MMU的處理器設(shè)計(jì),支持多任務(wù),具有完備的TCP/IP協(xié)議棧并支持多種網(wǎng)絡(luò)協(xié)議。uClinux還支持多種文件系統(tǒng),如ROMFS、NFS和JFFS等。另外,uClinux可移植性很強(qiáng),用戶通過重新配置、編譯內(nèi)核,很方便將其移植到68K、Dragon Ball、Cold Fire、Power PC、ARM等多種處理器計(jì)算平臺(tái)。當(dāng)前uClinux提供2.0和2.4兩個(gè)內(nèi)核版本。
本系統(tǒng)采用uClinux嵌入式操作系統(tǒng)主要需要解決以下三個(gè)問題:
第一,實(shí)時(shí)性問題。uClinux本身并沒有關(guān)注實(shí)時(shí)性問題,它并不是為了Linux的實(shí)時(shí)性而提出的。而本系統(tǒng)中的數(shù)據(jù)采集功能對操作系統(tǒng)的實(shí)時(shí)性有一定要求。通過給uClinux打上其它Rt-linux的實(shí)時(shí)性補(bǔ)丁,就可以增強(qiáng)uClinux的實(shí)時(shí)性,滿足這個(gè)系統(tǒng)的實(shí)時(shí)要求。
第二,JFFS文件系統(tǒng)的建立。uClinux系統(tǒng)采用Romfs作為根文件系統(tǒng),Romfs文件系統(tǒng)不支持動(dòng)態(tài)擦寫保存。而本系統(tǒng)中的嵌入式的Web Server在運(yùn)行過程中,要求能夠動(dòng)態(tài)地保存一些數(shù)據(jù),并且當(dāng)系統(tǒng)重新啟動(dòng)時(shí),保存的數(shù)據(jù)依然存在。所以我們需要充分發(fā)揮Flash可擦寫的優(yōu)勢,在系統(tǒng)運(yùn)行過程中,動(dòng)態(tài)地擦寫Flash來保存數(shù)據(jù)。通過建立JFFS文件系統(tǒng),可以用Flash來保存數(shù)據(jù),即將Flash作為系統(tǒng)的硬盤來使用??梢韵癫僮饔脖P上的文件一樣操作Flash芯片上的文件和數(shù)據(jù)。系統(tǒng)運(yùn)行的參數(shù)可以實(shí)時(shí)保存到Flash芯片中,在系統(tǒng)斷電后數(shù)據(jù)仍然存儲(chǔ)在Flash芯片中。為實(shí)現(xiàn)Flash上的JFFS文件系統(tǒng),我們需要在內(nèi)核中加入對JFFS文件系統(tǒng)和Flash設(shè)備的支持,并針對具體的Flash 芯片修改設(shè)備驅(qū)動(dòng)程序,生成設(shè)備節(jié)點(diǎn)并將JFFS文件系統(tǒng)掛接到Flash 設(shè)備上。
第三,編寫各個(gè)設(shè)備的驅(qū)動(dòng)程序。主要包括串口驅(qū)動(dòng)程序、以太網(wǎng)接口驅(qū)動(dòng)程序、BDM調(diào)試接口驅(qū)動(dòng)程序和FLASH芯片驅(qū)動(dòng)程序。
2.2 嵌入式Web Server軟件系統(tǒng)實(shí)現(xiàn)
嵌入式Web Server的軟件系統(tǒng)包括五個(gè)部分: ①HTTP引擎; ②虛擬文件系統(tǒng); ③配置模塊; ④安全模塊; ⑤應(yīng)用程序接口模塊。
圖3 嵌入式Web Server軟件系統(tǒng)示意圖
其中HTTP引擎負(fù)責(zé)響應(yīng)用戶的請求、通過虛擬文件系統(tǒng)訪問靜態(tài)數(shù)據(jù)信息、通過應(yīng)用程序接口得到動(dòng)態(tài)數(shù)據(jù)信息。
虛擬文件系統(tǒng)為嵌入式Web Server提供虛擬文件服務(wù),虛擬文件系統(tǒng)使用數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)文件大小、修改時(shí)間等信息。對于存儲(chǔ)HTML文件需要的動(dòng)態(tài)信息建立數(shù)據(jù)結(jié)構(gòu)保存腳本的指針和腳本所調(diào)用函數(shù)的名稱。通過虛擬文件系統(tǒng)將Java、 GIF、 PDF、 HTML以及文本等文件形式編譯為Web服務(wù)器認(rèn)可的代碼,而獨(dú)立于具體的文件系統(tǒng)。
配置模塊使系統(tǒng)管理員可以從任何一臺(tái)標(biāo)準(zhǔn)的Web瀏覽器上設(shè)置嵌入式Web Server參數(shù),在系統(tǒng)啟動(dòng)中定義的配置環(huán)境變量包括并發(fā)連接數(shù)、Socket端口、主機(jī)名稱、根文件路徑、缺省初始文件以及非活動(dòng)超時(shí)和時(shí)區(qū)等。
配置模塊對標(biāo)準(zhǔn)瀏覽器的開放使得安全問題更加重要,尤其是對網(wǎng)絡(luò)設(shè)備的配置和控制信息的訪問成為安全保護(hù)的重點(diǎn)。安全模塊通過在服務(wù)器上定義安全域和對每個(gè)安全域定義的用戶名和密碼實(shí)現(xiàn)對敏感信息的保護(hù)。還可以對請求數(shù)據(jù)采取加密措施實(shí)現(xiàn)安全保護(hù)功能。
應(yīng)用程序接口模塊實(shí)現(xiàn)和嵌入式應(yīng)用系統(tǒng)的數(shù)據(jù)交換。在嵌入式Web Server中,應(yīng)用程序接口與嵌入式操作系統(tǒng)通信,實(shí)現(xiàn)對嵌入系統(tǒng)的配置、監(jiān)視和控制,是嵌入式Web Server軟件系統(tǒng)的核心。而應(yīng)用程序接口模塊常見的有CGI(Common Gateway Interface)、SSI(Server Side Include)和HCPA(HTML-to-C Preprocessor Approach)等3種形式。
本系統(tǒng)應(yīng)用程序接口模塊采用CGI形式。CGI提供嵌入式Web Server一個(gè)執(zhí)行外部程序的通道,CGI程序經(jīng)過編譯成為可執(zhí)行文件,放在服務(wù)器端運(yùn)行。嵌入式Web Server根據(jù)用戶的請求調(diào)用相應(yīng)的CGI程序。并由嵌入式Web Server將CGI程序得到的動(dòng)態(tài)信息封裝到頁面中,發(fā)送到用戶瀏覽器上。
評論