1. gzyueqian
      13352868059
      首頁 > 新聞中心 > > 正文

      基于ARMlinux的嵌入式遠程測控系統設計

      更新時間: 2007-09-24 09:10:12來源: 粵嵌教育瀏覽量:743

        前言

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

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


      圖1 硬件系統框圖

        2、軟件系統

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


      圖2 軟件結構圖

        2.1 基于Boa的Web服務器
       
        嵌入式linux主要有三個web Server:Hapd、Thttpd和Boa。Httpd是簡單的一個web Server。它的功能弱,不支持認證,不支持CG1。Thttpd和Boa都支持認證、CGI等,功能都比較全。Boa是一個單任務的小型Httpd服務器,源代碼開放、性能,特別適合應用在嵌入式系統中。下面介紹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的編制見下。
         
        需要說明的是,Linux下的應用程序的配置都是以配置文件的形式提供的,~般都是放在目標板/ete/目錄下或者/ctc/config目錄下,但Boa的配置文件Boa.conf一般都放置在目標板/home/httpd/目錄下。本系統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可執行文件必須放到/home/httpd/cgi~bin目錄下。
         
        2.2 CGI程序技術原理
         
        CGI(Common Gateway Interface)是外部擴展應用程序與WWW服務器交互的一個標準接口。按照CGI標準編寫的外部擴展應用程序可以處理客戶端瀏覽器輸入的數據,從而完成客戶端與服務器的交互操作。而CGI規范定義了Web服務器如何向擴展應用程序發送消息,在收到擴展應用程序的信息后又如何進行處理等內容。通過CGI可以提供許多靜態的Html網頁無法實現的功能。其www與CGI的工作原理如下。
         
        HTTP協議是WWW的基礎,它基于客戶/服務器模型。一個服務器可以為分布在網絡各處的客戶提供服務。它是建立在TCP/IP協議之上的“無連接”協議。每次連接只處理一個請求。當一個請求到來時,便創建一個子進程為用戶的連接服務。根據請求的不同,服務器會返回HTML文件或通過CGI凋用外部應用程序,返回處理結果。服務器通過CGI與外部程序和腳本之問進行交互,根據客戶端在進行請求時所采取的方法,服務器會收集客戶所提供的信息,并將該部分信息發送給指定的CGI擴展程序。CGI擴展程序對信息進行處理并將結果返回服務器。服務器對信息進行分析后,將結果發送網客戶端。
         
        外部CGI程序與www服務器進行通信、傳遞有關參數和處理結果是通過環境變量、命令行參數和標準輸入來進行的。服務器提供了客戶端(瀏覽器)與CGI擴展程序之問的信息交換的通道。客戶的請求通過服務器的標準輸出傳送給CGI的標準輸入。CGI對信息進行處理后,會將結果發回到它的標準輸入,然后由眼務器將處理結果發送給客戶端。
         
        2.3 CGI外部擴展程序的編制
         
        服務器程序可以通過三種途徑接收信息:環境變量、命令行和標準輸入。具體使用哪一種方法要由<FORM>標簽的Method屬性來決定。在“Method=GET”時,向CGI程序傳遞表單編碼信息的正常做法是通過命令來進行的。
         
        大多數表單編碼信息都是通過Qucry-String的環境變量來傳遞的。如果“Method=POST”,表單信息將通過標準輸入來讀取。還有一種不使用表單就可以向CGI傳送信息的方法。那就是把信息直接追回在URL地址后面,信息和URL之間用問號(?)來分隔。本測控系統采用的是GET方法。下面是遠程控制LED閃爍快慢的程序。其網頁如下頁圖3,其程序如下。
         
        <hl align =“center”>&nbsp;LED測試</hl>
        <form method=“get”action=“leds.cgi”name=”LED—TEST”)
        <div align=“center”>
        <center>
        <table border=“0”width=“280”>
        <p align=“center”><input type=“radio”name=“speed”value=“show”checked>慢速
        <p align=“center”><input type=“radio”name=“speed”value=“normal”>中速
        </td>
        <p align=“center”><input type=“radio”name=“speed”value=“rast”>高速
        <td colspan=“2”width=“272”>
        <p align=“center”><input type=“submit”value=確定“name=”submit></td>
        </table>
        </div>
        </from>
         
        <p align=“center”></p>
        其中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//通過Query_String的環境變量傳遞給應用程序。
        echo “Content-type:texe/html;charset=gb2312”
        echo
        /bin/cat led =result.template
        exit 0

        led—control是編譯好的可執行的應用程序,通過led驅動來實現對LED的控制。因為S3C2410有MMU,所以通過操作系統來對硬件控制需要驅動程序來實現。其數據采集部分也類似,不再單獨說明。


      圖3 實驗結果

         3、測試結果

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

        找們開發的基于ARMLinux的遠程測控系統,在真正意義上實現了通過互聯網進行遠程測控。它具有一般通用平臺性能,特別適合實時性要求不很強的家電網絡監控和遠程工業控制。當然隨著硬件和網絡速度提高及操作系統實時性的改善,將會大大提高此測控系統的性能,因此有很好的應用前景。

      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 亚洲一区二区中文字幕无 | 中文字幕在线观看AV | 日韩精品在线视频 | 日本一夲道DVD在线观看 | 日韩亚洲欧美在线v | 日本丝袜综合久久 |