當前位置:文思屋>學習教育>畢業論文>

嵌入式Linux系統CGI程式設計技術

文思屋 人氣:2.46W
來源:微控制器及嵌入式系統應用 作者:廣東工業大學 鄭 偉 徐榮華 王欽若
摘要:在詳細介紹一種嵌入式Web伺服器BOA的實現與配置方法的基礎上,以一個Web線上遠端監控GPIO(通用輸入/輸出)的程式為例項,介紹嵌入式Linux系統下CPU程式設計技術。

1 概述

嵌入式Linux系統CGI程式設計技術

隨著網際網路應用的普及,越來越多的資訊化產品需要接入網際網路通過Web頁面進行遠端訪問。嵌入式Web系統提供了一種經濟、實用的網際網路嵌入式接入方案。這裡結合一種嵌入式Web Server BOA來介紹嵌入式Linux系統下的CGI程式設計技術。

2 Web Server BOA的實現與配置

2.1 uClinux下,主要有三個Web Server:HTTPD、THTTPD和BOA。HTTPD是最簡單的一個Web Server,它的功能最弱,不支援認證,不支援CGI。THTTPD和BOA都支援認證、CGI等,功能都比較全。BOA是一個單任務的小型HTTP伺服器,原始碼開放、效能優秀,特別適合應用在嵌入式系統中。目前的uClinux的程式碼中已經包含BOA的原始碼。在uClinux下實現BOA,只需要對BOA做一些配置和修改。以下是配置的過程。

(1)編譯BOA到核心

首先,需要把BOA編譯到核心,即執行make menuconfig,在應用程式選單中network application項下面選擇boa。該操作需要重新編譯核心。

(2)編制配置檔案

在Linux作業系統下,應用程式的配置都是以配置檔案的形式提供的,一般都是放在目標板/etc/目錄下或者/etc/config目錄下。但boa的配置檔案一般都旋轉在目標板/home/httpd/目錄下。

例如,一個典型的檔案格式如下:

ServerName Samsung-ARM

DocumentRoot/home/httpd

ScriptAlias/cgi-bin/home/httpd/cgi-bin/

ScriptAlias//home/httpd/

它指定了HTML頁面必須放到/home/httpd目錄下,cgi外部擴充套件程式必須放到/home/httpd/cgi-bin目錄下。

(3)編譯燒寫核心

重新編譯核心後,通過燒寫工具燒寫核心,就可以在PC上通過IE瀏覽器訪問開發板上的Web Server。例如,輸入開發板的IP地址,即可訪問到自己做的網頁了。並且,通過編寫CGI外部擴充套件程式,可以實現動態Web技術,下面將詳細介紹。

2.2 具有MMU平臺的Linux下B0A的實現與配置

對於有MMU(記憶體管理單元)的平臺,如armlinux和ppclinux,可以到網上下載一個主流版本的boa發行包。因為是執行在目標系統,所以要用交叉編譯工具編譯,即需要修改boa/src/Makefile裡面的編譯器。例如:

CC=/LinuxPPC/CDK/bin/powerpc-linux-gcc

CPP=/LinuxPPC/CDK/bin/powerpc-linux-g

然後直接在boa/src目錄下執行make,即可生成BOA可執行檔案;將其編譯入核心,並燒寫到儲存裝置,就可以實現訪問BOA伺服器。

3 CGI程式設計技術

CGI(Common Gateway Interface)是外部應用擴充套件應用程式與WWW伺服器互動的一個標準介面。按照CGI標準編寫的外部擴充套件應用程式可以處理客戶端瀏覽器輸入的資料,從而完成客戶端與伺服器的互動操作。而CGI規範就定義了Web伺服器如何向擴充套件應用程式傳送訊息,在收到擴充套件應用程式的資訊後又如何進行處理等內容。通過CGI可以提供許多靜態的HTML網頁無法實現的功能,比如搜尋引擎、基於Web的資料庫訪問等等。

3.1 工作原理

(1)WWW和CGI的工作原理

HTTP協議是WWW的基礎,它基於客戶/伺服器模型,一個伺服器可以為分佈在網路中處的客戶提供服務;它是建立在TCP/IP協議之上的“無連線”協議,每次連線只處理一個請求。在伺服器上,執行產著一個守護程序對埠進行監聽,等待來自客戶的請求。當一個請求到來時,將建立一個子程序為使用者的連線服務。根據請求的不同,伺服器返回HTML檔案或者通過CGI呼叫外部應用程式,返回處理結果。伺服器通過CGI與外部程式和指令碼之間進行互動,根據客戶端在進行請求時所採取的方法,伺服器會收集客戶所提供的資訊,並將該部分資訊傳送給指定的`CGI擴充套件程式。CGI擴充套件程式進行資訊處理並將結果返回伺服器,然後伺服器對資訊進行分析,並將結果傳送回客戶端。