前言
目前,,大多數(shù)遠程測控" title="遠程測控">遠程測控系統(tǒng)中,系統(tǒng)的硬件采用8/16位的單片機,,軟件多采用匯編語言編程,,該編程僅包含一個簡單的循環(huán)處理的控制流程;單片機與單片機(或上位機)之間的通信通過RS232,、RS485或CAN總線來組成局域網(wǎng),,再用Pc機作為Web服務(wù)器,與Internet進行通訊,。這樣的遠程測控設(shè)備成本高,、體積大、速度慢、功耗大?,F(xiàn)在,,32位嵌入式CPU價格已下降,性能指標也有提高,,為嵌入式系統(tǒng)的廣泛應(yīng)用提供了可能性,。基于上述情況,,我們將嵌入式系統(tǒng)應(yīng)用于遠程測控系統(tǒng),,大大提高了測控系統(tǒng)的性能,同時降低了成本和功耗,,體積也大大減小,。
嵌入式系統(tǒng)一般應(yīng)用嵌入式操作系統(tǒng)來開發(fā)。在嵌入式操作系統(tǒng)的選擇上,,由于Linux有完整開放的源代碼,,因而它具有修改和優(yōu)化系統(tǒng)、內(nèi)核穩(wěn)定,、適用于多種CPU和多種硬件平臺,、支持網(wǎng)絡(luò)等特點,所以選擇Linux作為嵌入式操作系統(tǒng)較好,。本文提出的基于ARM" title="ARM">ARMlinux的嵌入式遠程測控系統(tǒng)不僅能夠?qū)崿F(xiàn)本地數(shù)據(jù)采集與控制,,還能實現(xiàn)遠程測控任務(wù)。
1,、硬件系統(tǒng)
硬件系統(tǒng)如圖1,。S3C2410包含一個16/32-bit的Risc(ARM920T)的CPU內(nèi)核,主頻200Hz,,內(nèi)部含有8通道1O位AD轉(zhuǎn)換器和大量的I/O口,、LCD控制器等豐富接口,能運行Ucosll,、ARMlinux和Wince嵌入式操作系統(tǒng),,DM 9OOO是10M/100M以太網(wǎng)接口控制芯片。本硬件系統(tǒng)結(jié)構(gòu)簡單,,成本低,,不需要Pc機就可直接接入Internet。
2,、軟件系統(tǒng)
嵌入式操作系統(tǒng)是整個嵌入式系統(tǒng)的核心,。本系統(tǒng)選擇ARMlinux系統(tǒng)。由于嵌入式系統(tǒng)的存儲容量很小,,因此要把ARMLinux操作系統(tǒng)裝入有限的存儲器內(nèi),,就要對它進行裁剪,。很多資料對此都有論述,這里就不再累述,。下面主要介紹基于操作系統(tǒng)上的遠程測控軟件設(shè)計,。其體系結(jié)構(gòu)如圖2。
2.1 基于Boa的Web服務(wù)器
嵌入式linux主要有三個web Server:Hapd,、Thttpd和Boa,。Httpd是最簡單的一個web Server。它的功能最弱,,不支持認證,不支持CG1,。Thttpd和Boa都支持認證,、CGI等,功能都比較全,。Boa是一個單任務(wù)的小型Httpd服務(wù)器,,源代碼開放、性能優(yōu)秀,,特別適合應(yīng)用在嵌入式系統(tǒng)中,。下面介紹Boa的移植與編譯。
對于有MMU嵌入式linux,,把Boa下載到Redhat宿主機上后,,解壓到任意目錄,再修改Boa/src/Makefde里面的編譯器,。例如:
CC=/opfhosfarmv41/bin/armv41—unkllown—linux—gcc
CPP=/opt/host/army41/bin/armv41—unknown—linux—g++
此后直接在Boa/src目錄下執(zhí)行make即可生成Boa可執(zhí)行文件,。將其復制到ramdisk加載mount的目錄的bin里面后,等一同加入配置文件和HTML/CGI文件后,,重做ramdisk即可,。
配置文件Boa.conf的編制見下。
需要說明的是,,Linux下的應(yīng)用程序的配置都是以配置文件的形式提供的,,~般都是放在目標板/ete/目錄下或者/ctc/config目錄下,但Boa的配置文件Boa.conf一般都放置在目標板/home/httpd/目錄下,。本系統(tǒng)Boa.conf文件的編寫程序為:
ServerName S A M S U N G—A R M
DocumentRoot/home/httpd/cgi—bin/
ScfiptAlias/index.html/home/httpd/html/index.html
它指定了HTML頁面index.html必須放/home/httpd/html目錄下,,CGI可執(zhí)行文件必須放到/home/httpd/cgi~bin目錄下。
2.2 CGI程序技術(shù)原理
CGI(Common Gateway Interface)是外部擴展應(yīng)用程序與WWW服務(wù)器交互的一個標準接口,。按照CGI標準編寫的外部擴展應(yīng)用程序可以處理客戶端瀏覽器輸入的數(shù)據(jù),,從而完成客戶端與服務(wù)器的交互操作。而CGI規(guī)范定義了Web服務(wù)器如何向擴展應(yīng)用程序發(fā)送消息,,在收到擴展應(yīng)用程序的信息后又如何進行處理等內(nèi)容,。通過CGI可以提供許多靜態(tài)的Html網(wǎng)頁無法實現(xiàn)的功能,。其www與CGI的工作原理如下。
HTTP協(xié)議是WWW的基礎(chǔ),,它基于客戶/服務(wù)器模型,。一個服務(wù)器可以為分布在網(wǎng)絡(luò)各處的客戶提供服務(wù)。它是建立在TCP/IP協(xié)議之上的“無連接”協(xié)議,。每次連接只處理一個請求,。當一個請求到來時,便創(chuàng)建一個子進程為用戶的連接服務(wù),。根據(jù)請求的不同,,服務(wù)器會返回HTML文件或通過CGI凋用外部應(yīng)用程序,返回處理結(jié)果,。服務(wù)器通過CGI與外部程序和腳本之問進行交互,,根據(jù)客戶端在進行請求時所采取的方法,服務(wù)器會收集客戶所提供的信息,,并將該部分信息發(fā)送給指定的CGI擴展程序,。CGI擴展程序?qū)π畔⑦M行處理并將結(jié)果返回服務(wù)器。服務(wù)器對信息進行分析后,,將結(jié)果發(fā)送網(wǎng)客戶端,。
外部CGI程序與www服務(wù)器進行通信、傳遞有關(guān)參數(shù)和處理結(jié)果是通過環(huán)境變量,、命令行參數(shù)和標準輸入來進行的,。服務(wù)器提供了客戶端(瀏覽器)與CGI擴展程序之問的信息交換的通道??蛻舻恼埱笸ㄟ^服務(wù)器的標準輸出傳送給CGI的標準輸入,。CGI對信息進行處理后,會將結(jié)果發(fā)回到它的標準輸入,,然后由眼務(wù)器將處理結(jié)果發(fā)送給客戶端,。
2.3 CGI外部擴展程序的編制
服務(wù)器程序可以通過三種途徑接收信息:環(huán)境變量、命令行和標準輸入,。具體使用哪一種方法要由標簽的Method屬性來決定,。在“Method=GET”時,向CGI程序傳遞表單編碼信息的正常做法是通過命令來進行的,。
大多數(shù)表單編碼信息都是通過Qucry-String的環(huán)境變量來傳遞的,。如果“Method=POST”,表單信息將通過標準輸入來讀取,。還有一種不使用表單就可以向CGI傳送信息的方法,。那就是把信息直接追回在URL地址后面,信息和URL之間用問號(?)來分隔,。本測控系統(tǒng)采用的是GET方法,。下面是遠程控制LED閃爍快慢的程序,。其網(wǎng)頁如下頁圖3,其程序如下,。