《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 單片機嵌入式Internet技術的Web應用實現
單片機嵌入式Internet技術的Web應用實現
來源:微型機與應用2010年第11期
高小能,王馀鵬,,郭志飛
(浙江萬里學院 電子信息學院,,浙江 寧波 315100)
摘要: 利用簡化的開源TCP/IP協議棧uIP,在資源有限的單片機上實現嵌入式Internet技術,。通過uIP協議的應用程序接口實現基于HTTP協議的Web服務器應用服務,。給出Web應用服務的實現流程,編寫了實現Web應用服務的詳細程序代碼,。
Abstract:
Key words :

摘  要: 利用簡化的開源TCP/IP協議棧uIP,,在資源有限的單片機上實現嵌入式Internet技術。通過uIP協議的應用程序接口實現基于HTTP協議的Web服務器應用服務,。給出Web應用服務的實現流程,,編寫了實現Web應用服務的詳細程序代碼。
關鍵詞: 嵌入式Internet,;uIP協議棧,;應用程序接口;Web應用服務

    嵌入式Internet是指電子設備通過嵌入式模塊而非PC直接接入到Internet,,與Internet進行信息交互的過程,。目前Internet成為全球最大、信息最豐富的互聯網絡,。用戶甚至希望家電設備,、儀器儀表以及工業(yè)生產中的數據采集與控制等設備也能夠連接到Internet上,因為這意味著用戶可以方便,、快捷,、低廉地通過網絡進行遠程控制、監(jiān)測和信息傳送,。美國貝爾實驗室的科學家預測,,未來將會產生比PC時代多成百上千倍的超級嵌入式Internet服務器。Internet技術和嵌入式技術的相互融合,,為嵌入式系統的設計和產品開發(fā)帶來了前所未有的發(fā)展空間和機遇,。
1 單片機嵌入式Web應用的硬件系統設計
    在硬件系統的設計中,本文采用了ATMEL公司開發(fā)的高性能8位AVR(Advanced RISC)單片機AT90S8515,,該單片機內置8 KB可編程Flash,,使用精簡指令集,支持C語言及匯編語言,,與MCS 8051系列單片機相比在性能上有很大的提高,,在目前單片機開發(fā)中用得較多,。因此利用AT90S8515單片機作為嵌入式系統的微處理器,通過網絡控制芯片將嵌入式系統與Internet相連接,。其硬件系統框圖如圖1所示,。

單片機嵌入式Web應用的硬件系統設計

    在電路的硬件系統組成中,注意以下幾點:
    (1)單片機與網卡芯片的接口電路
    AT90S8515單片機所提供的8位數據總線PA0~PA7分別對應連接網卡的SD0~SD7引腳,;5根地址線PC0~PC4對應連接網卡的SA0~SA4引腳,;讀信號線RD、寫信號線WR與RTL8019AS的相應信號線連接[1],。復位通過PB0控制,,PB1片選地址使能[2]。外接時鐘電路單片機為8 MHz,,網卡芯片為20 MHz,。
    (2)存儲器擴展電路
    一般單片機片內數據存儲器容量為64 KB,這樣的存儲空間在進行單片機Web應用系統的開發(fā)時顯得過小,。因此需要擴展數據存儲器,,擴展容量隨系統數據使用量而定。對于Web應用,,需要很大的存儲空間存放網頁等數據,,所以本系統采用靜態(tài)RAM HM62256芯片作為存儲器擴展電路。
    (3)RTL8019AS工作方式
    RTL8019AS有3種工作方式:跳線方式,、即插即用方式和RT免跳線方式[1],。在嵌入式應用場合,為了降低系統的復雜性,,單片機盡量少接不必要的芯片,。所以將RTL8019AS選擇工作在跳線方式。其IOCS16B引腳接下拉電阻,,JP引腳端接高電平,。
    (4)MAX232串口電平轉換電路
    在現場控制端,由于單片機輸出為TTL電平,,現場數據采集系統(如傳感器)輸出為EIA電平,,而MAX232芯片可以完成單片機和現場數據采集系統間的雙向電平轉換[3]。
    (5)網絡隔離濾波接口電路
    在網絡接入端需要一個網絡隔離濾波器HR901170A,。HR901170A主要對系統電路起保護作用,,減少信號共模干擾,完成信號的傳輸,。HR901170A的內部集成了RJ45接口,可以直接接入到Internet,。
2 嵌入式Internet的TCP/IP協議實現
2.1 嵌入式TCP/IP協議

    軟件編程是實現嵌入式Web系統的關鍵,。Web通信中的數據封裝,、解析都是由單片機軟件實現的。軟件實現主要包括兩部分:一是單片機精簡TCP/IP協議棧的實現,,對數據的逐層打包,、封幀、傳送等流程[2],;二是單片機Web應用服務的實現,。
    由單片機組成的嵌入式Web往往應用于特殊的、專用的領域,,一般不需要太多的功能,,這與PC機上的網絡應用有很大的不同。支持PC機進行Internet通信的TCP/IP協議是一個非常龐大的協議簇,。而單片機芯片沒有足夠的空間資源,,所以從嵌入式網絡應用和單片機空間資源兩個方面考慮,都沒有必要在單片機上實現完整的TCP/IP協議,。目前市場上沒有統一的標準的實現嵌入式Internet的TCP/IP協議軟件,,需要開發(fā)人員根據具體應用的需要去開發(fā)一套適用于單片機的嵌入式TCP/IP協議,工作量異常龐大,,開發(fā)周期較長,。一種比較簡單和易實現的做法是使用由瑞士計算機科學院的Adam Dunkels等開發(fā)的免費公開源代碼的小型TCP/IP協議,即uIP協議棧,,它專門為8位和16位單片機編寫,。uIP的代碼大小為3 304 B,對單片機RAM的需求為360 B,,遠遠小于TCP/IP協議對資源的要求,。有關uIP詳述和應用例程可見參考文獻[4]。
2.2 uIP驅動底層網絡設備RTL8019AS
    uIP是一個僅包含3層網絡層核心協議的協議棧,,uIP自身不包含任何類型的底層網絡驅動和上層應用程序,,它只提供接口函數供用戶開發(fā)使用。因此為了完成與底層網絡設備的交互,,用戶必須根據網絡設備的類型,,在uIP中自行實現對底層網絡設備的驅動。本文采用的網絡設備是RTL8019AS網卡,,因此需要在uIP中實現對RTL8019AS網卡的驅動[4]。
    RTL8019AS驅動程序包括:RTL8019AS芯片初始化,、芯片復位以及數據的發(fā)送和接收,。RTL8019AS芯片初始化可以通過初始化函數void init_8019(void)完成。芯片復位通過芯片上的RSTDRV引腳執(zhí)行復位操作,,該引腳高電平有效,。
3 單片機上嵌入式Web服務器的軟件實現
3.1 Web服務器的建立

    在進行以上的工作之后,,用戶就可以建立Web服務器,通過uIP協議實現不同的微控制器或工作站之間的通信,。Web服務器和客戶端瀏覽器間的通信采用HTTP協議,。嵌入式系統經常需要根據用戶的指令,采集系統的當前數據信息傳送給客戶端瀏覽器,,為實現這種客戶端瀏覽器和Web服務器的動態(tài)交互,,需要在服務器端采用通用網關接口CGI(Common Gateway Interface)技術。CGI是一個在服務器上運行的程序,,它分析處理用戶發(fā)送到服務器上的數據信息,,完成動態(tài)文件資源的創(chuàng)建和處理,再將用戶信息返回給客戶端,。
    Web服務器初始化完成后,,服務器等待客戶端的連接請求,客戶端瀏覽器輸入服務器的IP地址后發(fā)一個物理地址解析協議(ARP)請求包,,服務器收到后進行應答,。客戶端收到應答包后發(fā)送超文本傳輸協議(HTTP)包,,服務器收到HTTP包后開始建立與客戶端的TCP連接并作出對此包的響應,。客戶端收到響應包后即斷開連接,,服務器偵測到客戶端斷開了連接也同時斷開連接,。
3.2 Web服務器數據處理流程
    當系統的網卡接收到從網絡傳送來的數據包后,首先分析目的地址是否與自己的物理地址一致,,如果不一致,,則丟棄此包;如果一致,,則讀取網絡數據并分析,。如果是ARP請求包,則轉入ARP處理程序,,并發(fā)送一個ARP應答包給客戶端,。如果是IP包,則交由IP層處理,,同時去掉以太網首部[4-5],。IP層根據IP首部的協議字段分析該IP包屬于什么數據包,如果是UDP包則,,丟棄,;如果是ICMP請求包,則發(fā)送一個ICMP應答包給客戶端;如果是TCP包且IP地址和端口號正確,,則接收數據包,,數據解包后,,將數據部分通過串口輸出,,控制MAX232現場設備。反之,,如果現場通過串口發(fā)送數據到單片機,,單片機將數據按照TCP協議格式打包,送入RTL8019AS,,由RTL8019AS將數據發(fā)送到局域網中,。根據需要還可以在收到串口數據時,先完成數據預處理,,再將處理好的數據送到局域網,。具體的處理過程如圖2所示。

3.3 單片機上的Web服務器編程
    uIP協議棧提供了一個稱為宏的UIP_APPCALL的應用程序接口供用戶設計應用程序時使用[4],。要在單片機上實現Web Server服務,,首先將該宏定義為一個應用程序函數名,然后在此函數中實現HTTP協議,。完成后,,用戶可以從局域網內的任何客戶機訪問該單片機Web服務器。如果分配一個公網IP地址,,則也可以從Internet上訪問此Web服務器,。實現的程序如下:
    #define UIP_APPCALL uip_http /*定義宏UIP_APPCALL為uip_http的應用程序函數*/
    void uip_http(void)           /*開始實現http協議建立Web服務器*/
    {struct uip http_state*s;
    s=(struct uip app_state*)uip_conn->appstate,;
    if(uip_connected())
      {…                       /*打開連接接口函數,,開始一個新的應用程序連接*/
          }
     if(uip_newdat()||uip_rexmit())  /*接收數據接口或重發(fā)數據接口函數,應用程序發(fā)送數據*/
      {if(uip_datalen()>0)     /*判定數據的大小接口函數
        {if(uip_conn->lport==80)  /*收到新連接端口號為80的請求,,此即http應用*/
           {update_table_data(),;
              s->dataptr=newpage;
              s->dataleft=1957,;
              uip_send(s->dataptrs->dataleft),; /*發(fā)送上述http應用數據*/
            }
         }
     }
    if(uip_acked())      /*返回ACK數據確認接口函數*/
     {if(s->dataleft>uip_mss()&&uip_conn->lport==80)
       {s->dataptr+=uip_conn->len;
        s->dataleft-=uip-conn->len,;
        uip_send(s->dataptrs->dataleft),;
        }
      return;
     }
    if(uip_poll())
     {…                /*輪詢接口函數用于輪詢各個客戶端發(fā)起的連接*/
        return,;
        }
      if(uip_timedout()||      /*判斷連接是否超時*/
      uip_closed()||          /*關閉當前的連接*/
      uip_aborted())         /*中斷連接接口*/
      {return,;}
    }
    本文設計的系統成功應用在寧波市某商業(yè)廣場的地下停車場監(jiān)測系統中。由于該商業(yè)廣場停車場業(yè)務量較大,常常導致車位飽和而客戶不知道的情形下進入停車場尋找車位,,而該停車場規(guī)定進入停車場超過15 min的車輛即開始收費,。導致客戶常常尋找超過規(guī)定的時間而仍未找到停車位但需付費,從而發(fā)生客戶和管理方之間的糾紛,,影響商業(yè)廣場的整體形象,。使用了該系統后,各個車位上的數據采集系統實時采集停車信息并反饋給系統,。系統在停車場入口處顯示停車場當前有無可停車位以及哪些區(qū)域有空閑車位等信息,。如果車位已滿,將會顯示無可停車位,。除此之外,,管理人員還可通過客戶端進行查詢、計時計費等工作,。本系統最大的優(yōu)點是開發(fā)費用低廉且操作簡單,。在本文設計的系統中,客戶端使用普通的Web瀏覽器,,通過Internet即可與單片機嵌入式Web應用服務器進行通信,。客戶端瀏覽器不需要開發(fā)額外的軟件,,也不需要瀏覽器支持特別的功能,。客戶端可通過訪問嵌入式Web服務器的網頁內容與之進行交互,。嵌入式Web與現場控制接口互連,,可實現對被控設備的遠程監(jiān)測、控制,、診斷,、管理及維護等。嵌入式技術和Internet技術的相互融合,,加速了電子設備的網絡化應用趨勢,。應用單片機作為嵌入式Internet技術的硬件設備可以降低系統的成本。本文設計的嵌入式Web系統根據不同的應用需求,,稍加修改即可應用在智能家電,、智能建筑、儀器儀表,、通訊產品,、工業(yè)控制等眾多領域。
參考文獻
[1] 李正軍.現場總線與工業(yè)以太網及其應用系統設計[M].北京:人民郵電出版社,,2008.
[2] 求是科技.單片機典型模塊設計實例導航[M].北京:人民郵電出版社,,2008.
[3] 華清遠見嵌入式培訓中心.嵌入式Linux C編程入門[M].北京:人民郵電出版社,,2007.
[4] uIP協議棧網絡站點.http://dunkels.com/adam/uip/.2010.
[5] 羅鈺.深入淺出Linux TCP/IP協議棧[M].北京:人民郵電出版社,2008.

此內容為AET網站原創(chuàng),,未經授權禁止轉載,。