<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 測試測量 > 設計應用 > 基于A(yíng)RMlinux的嵌入式遠程測控系統設計

基于A(yíng)RMlinux的嵌入式遠程測控系統設計

作者:祝紅軍,朱霞 時(shí)間:2008-03-18 來(lái)源:中國測控網(wǎng) 收藏
前言

    目前,大多數遠程測控系統中,系統的硬件采用8/16位的單片機,軟件多采用匯編語(yǔ)言編程,該編程僅包含一個(gè)簡(jiǎn)單的循環(huán)處理的控制流程;單片機與單片機(或上位機)之間的通信通過(guò)RS232、RS485或CAN總線(xiàn)來(lái)組成局域網(wǎng),再用Pc機作為Web服務(wù)器,與Internet進(jìn)行通訊。這樣的遠程測控設備成本高、體積大、速度慢、功耗大?,F在,32位嵌入式CPU價(jià)格已下降,性能指標也有提高,為嵌入式系統的廣泛應用提供了可能性?;谏鲜銮闆r,我們將嵌入式系統應用于遠程測控系統,大大提高了測控系統的性能,同時(shí)降低了成本和功耗,體積也大大減小。
   
    嵌入式系統一般應用嵌入式操作系統來(lái)開(kāi)發(fā)。在嵌入式操作系統的選擇上,由于Linux有完整開(kāi)放的源代碼,因而它具有修改和優(yōu)化系統、內核穩定、適用于多種CPU和多種硬件平臺、支持網(wǎng)絡(luò )等特點(diǎn),所以選擇Linux作為嵌入式操作系統較好。本文提出的基于A(yíng)RMlinux的嵌入式遠程測控系統不僅能夠實(shí)現本地數據采集與控制,還能實(shí)現遠程測控任務(wù)。
   
    1、硬件系統

本文引用地址:http://dyxdggzs.com/article/80229.htm

    硬件系統如圖1。S3C2410包含一個(gè)16/32-bit的Risc(ARM920T)的CPU內核,主頻200Hz,內部含有8通道1O位AD轉換器和大量的I/O口、LCD控制器等豐富接口,能運行Ucosll、ARMlinux和Wince嵌入式操作系統,DM 9OOO是10M/100M以太網(wǎng)接口控制芯片。本硬件系統結構簡(jiǎn)單,成本低,不需要Pc機就可直接接入Internet。


圖1 硬件系統框圖

    2、軟件系統

    嵌入式操作系統是整個(gè)嵌入式系統的核心。本系統選擇ARMlinux系統。由于嵌入式系統的存儲容量很小,因此要把ARMLinux操作系統裝入有限的存儲器內,就要對它進(jìn)行裁剪。很多資料對此都有論述,這里就不再累述。下面主要介紹基于操作系統上的遠程測控軟件設計。其體系結構如圖2。


圖2 軟件結構圖

    2.1 基于Boa的Web服務(wù)器
   
    嵌入式linux主要有三個(gè)web Server:Hapd、Thttpd和Boa。Httpd是最簡(jiǎn)單的一個(gè)web Server。它的功能最弱,不支持認證,不支持CG1。Thttpd和Boa都支持認證、CGI等,功能都比較全。Boa是一個(gè)單任務(wù)的小型Httpd服務(wù)器,源代碼開(kāi)放、性能優(yōu)秀,特別適合應用在嵌入式系統中。下面介紹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目錄下執行make即可生成Boa可執行文件。將其復制到ramdisk加載mount的目錄的bin里面后,等一同加入配置文件和HTML/CGI文件后,重做ramdisk即可。
   
    配置文件Boa.conf的編制見(jiàn)下。
   
    需要說(shuō)明的是,Linux下的應用程序的配置都是以配置文件的形式提供的,~般都是放在目標板/ete/目錄下或者/ctc/config目錄下,但Boa的配置文件Boa.conf一般都放置在目標板/home/httpd/目錄下。本系統Boa.conf文件的編寫(xiě)程序為:
   
    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頁(yè)面index.html必須放/home/httpd/html目錄下,CGI可執行文件必須放到/home/httpd/cgi~bin目錄下。
   
    2.2 CGI程序技術(shù)原理
   
    CGI(Common Gateway Interface)是外部擴展應用程序與WWW服務(wù)器交互的一個(gè)標準接口。按照CGI標準編寫(xiě)的外部擴展應用程序可以處理客戶(hù)端瀏覽器輸入的數據,從而完成客戶(hù)端與服務(wù)器的交互操作。而CGI規范定義了Web服務(wù)器如何向擴展應用程序發(fā)送消息,在收到擴展應用程序的信息后又如何進(jìn)行處理等內容。通過(guò)CGI可以提供許多靜態(tài)的Html網(wǎng)頁(yè)無(wú)法實(shí)現的功能。其www與CGI的工作原理如下。
   
    HTTP協(xié)議是WWW的基礎,它基于客戶(hù)/服務(wù)器模型。一個(gè)服務(wù)器可以為分布在網(wǎng)絡(luò )各處的客戶(hù)提供服務(wù)。它是建立在TCP/IP協(xié)議之上的“無(wú)連接”協(xié)議。每次連接只處理一個(gè)請求。當一個(gè)請求到來(lái)時(shí),便創(chuàng )建一個(gè)子進(jìn)程為用戶(hù)的連接服務(wù)。根據請求的不同,服務(wù)器會(huì )返回HTML文件或通過(guò)CGI凋用外部應用程序,返回處理結果。服務(wù)器通過(guò)CGI與外部程序和腳本之問(wèn)進(jìn)行交互,根據客戶(hù)端在進(jìn)行請求時(shí)所采取的方法,服務(wù)器會(huì )收集客戶(hù)所提供的信息,并將該部分信息發(fā)送給指定的CGI擴展程序。CGI擴展程序對信息進(jìn)行處理并將結果返回服務(wù)器。服務(wù)器對信息進(jìn)行分析后,將結果發(fā)送網(wǎng)客戶(hù)端。
   
    外部CGI程序與www服務(wù)器進(jìn)行通信、傳遞有關(guān)參數和處理結果是通過(guò)環(huán)境變量、命令行參數和標準輸入來(lái)進(jìn)行的。服務(wù)器提供了客戶(hù)端(瀏覽器)與CGI擴展程序之問(wèn)的信息交換的通道??蛻?hù)的請求通過(guò)服務(wù)器的標準輸出傳送給CGI的標準輸入。CGI對信息進(jìn)行處理后,會(huì )將結果發(fā)回到它的標準輸入,然后由眼務(wù)器將處理結果發(fā)送給客戶(hù)端。
   
    2.3 CGI外部擴展程序的編制
   
    服務(wù)器程序可以通過(guò)三種途徑接收信息:環(huán)境變量、命令行和標準輸入。具體使用哪一種方法要由

標簽的Method屬性來(lái)決定。在“Method=GET”時(shí),向CGI程序傳遞表單編碼信息的正常做法是通過(guò)命令來(lái)進(jìn)行的。
   
    大多數表單編碼信息都是通過(guò)Qucry-String的環(huán)境變量來(lái)傳遞的。如果“Method=POST”,表單信息將通過(guò)標準輸入來(lái)讀取。還有一種不使用表單就可以向CGI傳送信息的方法。那就是把信息直接追回在URL地址后面,信息和URL之間用問(wèn)號(?)來(lái)分隔。本測控系統采用的是GET方法。下面是遠程控制LED閃爍快慢的程序。其網(wǎng)頁(yè)如下頁(yè)圖3,其程序如下。
   
     ;LED測試
     
   


   

   

   

<input type=“submit”value=確定“name=”submit>


   

   
   
   

 


    其中leds.cgi程序如下:
    #! /bin/sh
    Period=1+case $QUERY-STRING in
    *slow*)
    period=0.25
    ;;
    * normal *)
    period = 0.125
    ;;
    * fast *
    period=0.0625+;;
    * fast * ) + period =0.0626
    ;;
    esac
    /bin/echo $ period ? /tmp/led-control//通過(guò)Query_String的環(huán)境變量傳遞給應用程序。
    echo “Content-type:texe/html;charset=gb2312”
    echo
    /bin/cat led =result.template
    exit 0
    led—control是編譯好的可執行的應用程序,通過(guò)led驅動(dòng)來(lái)實(shí)現對LED的控制。因為S3C2410有MMU,所以通過(guò)操作系統來(lái)對硬件控制需要驅動(dòng)程序來(lái)實(shí)現。其數據采集部分也類(lèi)似,不再單獨說(shuō)明。

 


圖3 實(shí)驗結果

    3、測試結果

    首先建立好基于S3C2410嵌入式開(kāi)發(fā)環(huán)境,把編譯好的booloader、嵌入式linux內核和ramdisk燒人Flash中,然后起動(dòng)Boa服務(wù)器,在PC機的瀏覽器上輸人嵌入式系統的IP地址,即顯示出如圖3的網(wǎng)頁(yè)。通過(guò)點(diǎn)擊慢速、中速和高速,再點(diǎn)擊確定,測控板上LED的閃爍由慢變快,圓滿(mǎn)實(shí)現了設計目標。
   
    4、結論

    找們開(kāi)發(fā)的基于A(yíng)RMLinux的遠程測控系統,在真正意義上實(shí)現了通過(guò)互聯(lián)網(wǎng)進(jìn)行遠程測控。它具有一般通用平臺性能,特別適合實(shí)時(shí)性要求不很強的家電網(wǎng)絡(luò )監控和遠程工業(yè)控制。當然隨著(zhù)硬件和網(wǎng)絡(luò )速度提高及操作系統實(shí)時(shí)性的改善,將會(huì )大大提高此測控系統的性能,因此有很好的應用前景.



關(guān)鍵詞:

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>