《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 業(yè)界動態(tài) > 實時內(nèi)核μC/OS-II下的網(wǎng)絡(luò)監(jiān)控系統(tǒng)的設(shè)計

實時內(nèi)核μC/OS-II下的網(wǎng)絡(luò)監(jiān)控系統(tǒng)的設(shè)計

2008-08-05
作者:高長艷1,2, 鄭喜鳳1, 丁鐵

  摘 要: 介紹了一種嵌入于單片機的Web服務(wù)器的設(shè)計過程,,給出了單片機控制下的網(wǎng)絡(luò)控制器RTL8019AS硬件平臺的設(shè)計、精簡的TCP/IP" title="TCP/IP">TCP/IP協(xié)議棧" title="協(xié)議棧">協(xié)議棧通過LAN訪問Internet的應(yīng)用方案,。同時簡明介紹了實時內(nèi)核μC/OS-II" title="C/OS-II">C/OS-II對整個系統(tǒng)的管理方案,,完成了對連接在系統(tǒng)I/O總線上的現(xiàn)有設(shè)備的監(jiān)控,。
  關(guān)鍵詞: Web服務(wù)器 單片機 μC/OS-II TCP/IP協(xié)議棧 動態(tài)IP配置


  隨著信息時代的到來,特別是互聯(lián)網(wǎng)的迅速普及,,人們開始越來越多地接觸到一個新概念——嵌入式產(chǎn)品,。將嵌入式系統(tǒng)" title="嵌入式系統(tǒng)">嵌入式系統(tǒng)接入Internet,不僅實現(xiàn)了設(shè)備的遠(yuǎn)程控制,、維護和升級,,而且可實現(xiàn)資源共享。通過網(wǎng)絡(luò)對設(shè)備進行監(jiān)控,,一個外部界面是必不可少的,,利用Web瀏覽器可使用戶通過網(wǎng)絡(luò)對遠(yuǎn)程系統(tǒng)實現(xiàn)管理和更新,大大簡化了人機界面的設(shè)計。若在系統(tǒng)中嵌入實時操作系統(tǒng),,將使系統(tǒng)具有極強的可移植性,,另外,硬件設(shè)備的添加與裁剪也具有極大的靈活性,。采用DHCP協(xié)議動態(tài)獲得IP相關(guān)信息,,使TCP/IP軟件不再依賴于存儲在芯片中的固定IP地址,這將為大型系統(tǒng)的安裝提供方便條件,。
  本設(shè)計的關(guān)鍵是如何在內(nèi)存資源有限的單片機系統(tǒng)上,,利用實時內(nèi)核μC/OS-II把信息變成可以在互聯(lián)網(wǎng)上傳輸?shù)腎P數(shù)據(jù)包,以便通過IE瀏覽器監(jiān)控遠(yuǎn)程設(shè)備的狀態(tài),。
1 網(wǎng)絡(luò)監(jiān)控系統(tǒng)" title="網(wǎng)絡(luò)監(jiān)控系統(tǒng)">網(wǎng)絡(luò)監(jiān)控系統(tǒng)概述
  本設(shè)計采用Internet監(jiān)控遠(yuǎn)程設(shè)備,,整個系統(tǒng)相當(dāng)于一個網(wǎng)絡(luò)服務(wù)器??蛻舳送ㄟ^IE瀏覽器對該服務(wù)器進行訪問,實時地獲得設(shè)備的狀態(tài)信息,,以便對設(shè)備進行控制和維護。這樣,,就要求服務(wù)器提供WWW服務(wù),,即實現(xiàn)HTTP協(xié)議。它應(yīng)被所有瀏覽器支持,,以保證任何地方的用戶都可通過瀏覽器下達命令,。在網(wǎng)絡(luò)接口上,本系統(tǒng)選擇以太網(wǎng)為其運行的網(wǎng)絡(luò)環(huán)境,。圖1所示為HTTP設(shè)計模型,。首先,客戶端的瀏覽器與Web服務(wù)器使用一個或多個TCP連接,,通過80號端口進行通信,,瀏覽器通過HTTP協(xié)議瀏覽事先存儲在EEROM中的控制網(wǎng)頁,通過該網(wǎng)頁傳遞控制命令到網(wǎng)絡(luò)服務(wù)器,,然后服務(wù)器對命令進行解析,,調(diào)用相應(yīng)的函數(shù)以控制外部I/O設(shè)備。


  整個網(wǎng)絡(luò)監(jiān)控系統(tǒng)包括硬件和軟件兩部分,。在硬件部分嵌入了TCP/IP協(xié)議棧,。因系統(tǒng)資源有限,在保持協(xié)議分層體系結(jié)構(gòu)的前提下,,應(yīng)盡量精簡協(xié)議內(nèi)容,。根據(jù)網(wǎng)絡(luò)監(jiān)控系統(tǒng)的原理,本系統(tǒng)實現(xiàn)了以下協(xié)議:DHCP,、HTTP,、TCP、IP、ICMP,、ARP,。
2 硬件平臺設(shè)計
  本設(shè)計采用以太網(wǎng)作為網(wǎng)絡(luò)的運行環(huán)境,在硬件上需要有網(wǎng)絡(luò)控制芯片,。目前市面上有許多以太網(wǎng)絡(luò)控制芯片,,但其大多數(shù)都耗電量高、功能復(fù)雜,,不適合用于價格低廉的嵌入式系統(tǒng)中,。在這里選用RTL8019AS[1],其好處是NE2000兼容,、軟件移植性好,、接口簡單、不需轉(zhuǎn)換芯片如PCI-ISA橋等,。而單片機選擇89C55,,它有20K的ROM,內(nèi)部結(jié)構(gòu)簡單,,只要代碼能夠移植于它,,就能較輕松地移植于其它架構(gòu)的CPU,比如ARM等,。圖2為硬件原理框圖,。24C64用來存儲物理地址及設(shè)備的相關(guān)信息等;外部RAM為數(shù)據(jù)處理提供緩存,。系統(tǒng)提供了RS232接口用來進行測試,,提供了RJ45接口以便連接到以太網(wǎng)。


3 操作系統(tǒng)的選擇
  根據(jù)監(jiān)控系統(tǒng)的特點,,系統(tǒng)必須滿足實時性和并發(fā)性的要求,,以便更好地支持TCP/IP運行時的調(diào)度,所以應(yīng)用軟件應(yīng)該基于嵌入式實時操作系統(tǒng),。適合于片上的實時操作系統(tǒng)比較多,,但是代碼公開且適合移植于51系列單片機的卻很少,主要有μC/OS-II,、RTX51,、Small RTOS51等,。實時內(nèi)核μC/OS-II是專門為單片機嵌入式應(yīng)用而設(shè)計的,,圖3為嵌入式實時操作系統(tǒng)的內(nèi)部結(jié)構(gòu)圖。它主要采用標(biāo)準(zhǔn)的ANSI C語言寫成,,與硬件有關(guān)的部分使用匯編語言編寫,,以使操作系統(tǒng)能很方便地移植到其它的處理器。可見,,使用嵌入式操作系統(tǒng)時,應(yīng)用軟件只與上層的代碼有關(guān)而與處理器無關(guān),,在進行軟件移植時僅需對與硬件相關(guān)的底層函數(shù)進行修改,因此這樣的應(yīng)用軟件具有良好的可移植性和穩(wěn)定的可靠性,。在μC/OS-II下編寫TCP/IP協(xié)議,,比傳統(tǒng)的前后臺系統(tǒng)要方便很多;用它分配內(nèi)存緩沖區(qū),,使用前申請,,使用后釋放,可有效地利用系統(tǒng)資源,。在程序設(shè)計時將TCP/IP協(xié)議棧做成任務(wù),,而用戶程序在另外的任務(wù)中運行。這樣,,單片機可在完成原來控制系統(tǒng)功能的前提下,,實現(xiàn)網(wǎng)絡(luò)通信。從代碼長度上看,, 實現(xiàn)基本功能的TCP/IP協(xié)議棧比Linux等其它操作系統(tǒng)優(yōu)勢更大,。


4 軟件設(shè)計
  軟件設(shè)計是網(wǎng)絡(luò)監(jiān)控系統(tǒng)設(shè)計的重要部分,主要完成RTL8019AS的驅(qū)動,、μC/OS-II對應(yīng)用系統(tǒng)的管理及TCP/IP協(xié)議棧的實現(xiàn),。
4.1 μC/OS-II操作系統(tǒng)的應(yīng)用
  μC/OS-II可以根據(jù)需要進行相應(yīng)裁剪后移植[2]到51單片機上。用它對系統(tǒng)進行管理,,使得程序易讀,,且便于移植。μC/OS-II主要負(fù)責(zé)管理網(wǎng)卡初始化,、創(chuàng)建系統(tǒng)資源,、創(chuàng)建任務(wù)等三部分工作。在系統(tǒng)資源的創(chuàng)建上,,使用TxSem,、RxSem信號量[3]及TxQFIFO隊列[3]。當(dāng)需要發(fā)送或接收數(shù)據(jù)時,,觸發(fā)RTL8019AS中斷,,CPU將中斷向量進入中斷服務(wù)子程序,進行事件處理,。中斷服務(wù)子程序根據(jù)RTL8019AS內(nèi)部中斷狀態(tài)寄存器IMR的值確定系統(tǒng)所處狀態(tài),,通過兩個信號量TxSemPost和RxSemPost切換系統(tǒng)任務(wù),使等待相應(yīng)信號量的一個任務(wù)進入就緒態(tài),。發(fā)送數(shù)據(jù)幀的過程是通過檢查信號量TxSemPost而進行的相應(yīng)處理,,為了保證數(shù)據(jù)正確到達客戶端,,這里采用了多次發(fā)送機制。當(dāng)信號量RxSemPost到來時,,開始接收數(shù)據(jù),。如果數(shù)據(jù)幀正確,就根據(jù)數(shù)據(jù)包的大小申請合適的內(nèi)存空間存放該數(shù)據(jù),,然后根據(jù)接收幀的目的地址的正確與否決定是否將該幀提交給上層應(yīng)用程序,。若無誤則解析數(shù)據(jù)報頭,進行相應(yīng)處理,。
4.2 RTL8019驅(qū)動
  RTL8019AS完成數(shù)據(jù)包和電信號之間的相互轉(zhuǎn)換,。驅(qū)動程序主要包括芯片初始化、收包,、發(fā)包三部分,。物理信道上的收發(fā)操作采用以太網(wǎng)協(xié)議802.3幀格式[4]。系統(tǒng)收發(fā)數(shù)據(jù)包的原理是單片機先將待發(fā)送的數(shù)據(jù)包存入RTL8019芯片RAM,,給出發(fā)送緩沖區(qū)首地址和數(shù)據(jù)包長度(寫入TPSR,、TBCR0,1)后,啟動發(fā)送命令(CR=0x3E),,即可實現(xiàn)RTL8019的發(fā)送功能,。RTL8019會自動按以太網(wǎng)協(xié)議完成發(fā)送并將結(jié)果寫入狀態(tài)寄存器。RTL8019芯片接收緩沖區(qū)構(gòu)成一個循環(huán)FIFO隊列,,PSTART,、PSTOP兩個寄存器限定了循環(huán)隊列的開始和結(jié)束頁,CURR為寫入指針,,受芯片控制,,BNRY為讀出指針,由主機程序控制,。根據(jù)CURR==BNRY+1?可以判斷出是否收到新的數(shù)據(jù)包,,新收到的數(shù)據(jù)包存于以CURR指出的地址為首址的RAM中。當(dāng)CURR==BNRY時,,芯片停止接收數(shù)據(jù)包,。
4.3 網(wǎng)絡(luò)協(xié)議棧的實現(xiàn)
  基于TCP/IP協(xié)議可以實現(xiàn)多種功能,本文主要討論HTTP協(xié)議[5],,也就是Web服務(wù)器在應(yīng)用層的主要構(gòu)成協(xié)議,。由于TCP/IP協(xié)議棧本身是一種層式結(jié)構(gòu),所以在協(xié)議棧的設(shè)計上采用模塊化思想,,逐層實現(xiàn),,然后通過對各層接口函數(shù)的調(diào)用實現(xiàn)完整的協(xié)議棧。實現(xiàn)TCP/IP協(xié)議棧的大致流程如圖4所示,。


  要想將嵌入式系統(tǒng)作為一個終端并用TCP/IP連接起來,,就必須設(shè)定IP地址、網(wǎng)關(guān)和子網(wǎng)掩碼等信息,。為了增強系統(tǒng)的靈活性,,需要一種自動配置能力,即系統(tǒng)自動從中心服務(wù)器獲得IP地址等信息,。實現(xiàn)這一功能的標(biāo)準(zhǔn)方法是通過主機動態(tài)配置協(xié)議(DHCP)[5],。DHCP是基于UDP層之上的應(yīng)用,采用端口68和67以廣播的形式進行通訊,,它的工作主要包括探查,、賦予、請求,、確認(rèn)等操作,。
  HTTP協(xié)議選擇定義請求-應(yīng)答機制獲得Web服務(wù)器上的文件。當(dāng)用戶訪問Web服務(wù)器中的網(wǎng)頁時,,一個HTTP請求就會以多行字符串的形式從瀏覽器發(fā)送到Web服務(wù)器,,第一行指定一個方法GET,后面跟著一串參數(shù),。服務(wù)器對客戶端的應(yīng)答需包含HTTP報文頭,,如果請求成功,還包括文檔本身,,這些信息沿TCP連接發(fā)送,,直至傳送完成斷開連接。含最少量信息的報文頭包含成功或失敗狀態(tài)及傳輸文檔的內(nèi)容類型(文本,、HTML,、GIF圖形等)。所有連接的相關(guān)信息如IP地址,、客戶端口號,、序列號、應(yīng)答號及TCP狀態(tài)等被放入一個結(jié)構(gòu)體,,結(jié)構(gòu)體的每個元素均可看作一個連接狀態(tài),。服務(wù)器進程關(guān)閉連接表示本次響應(yīng)結(jié)束。網(wǎng)頁信息以HTML文本格式存儲于EEROM中,,Web服務(wù)器創(chuàng)建局部變量以匹配文檔中的特殊字符,,這些信息通過HTTP協(xié)議沿TCP連接發(fā)送到瀏覽器,服務(wù)器在應(yīng)答文檔中碰到合適的字符,,就替換一個變量值,,實現(xiàn)動態(tài)網(wǎng)頁。
  為了在服務(wù)器和客戶端之間傳遞HTTP請求和應(yīng)答信息,,需要一個可靠的通信信道,,這由傳輸控制協(xié)議TCP提供,。TCP提供一種面向連接的可靠的數(shù)據(jù)流服務(wù),它的主要任務(wù)是創(chuàng)建進程到進程的通信,。數(shù)據(jù)傳輸分三個階段進行:建立連接,、傳輸數(shù)據(jù)、斷開連接,,實現(xiàn)起來相對復(fù)雜,。由于嵌入式系統(tǒng)是服務(wù)器端,總是對客戶的連接請求給予響應(yīng),,從不主動發(fā)起連接請求,,因此只要在保證嵌入式系統(tǒng)能夠?qū)CP分組進行正確響應(yīng)的前提下,就可以對TCP協(xié)議進行大幅度簡化,。嵌入式系統(tǒng)總是響應(yīng)客戶連接,,始終是被動地打開連接,所以只需為建立連接過程中的嵌入式系統(tǒng)提供 LISTEN,、SYN_RCVD兩種狀態(tài)即可,。雖然比標(biāo)準(zhǔn)狀態(tài)變遷圖中缺少了CLOSED、SYN_SENT狀態(tài),,但LISTEN,、SYN_RCVD足以描述系統(tǒng)建立連接時的狀態(tài)。當(dāng)系統(tǒng)在傳最后一個數(shù)據(jù)包時,,設(shè)置FIN,,要求終止當(dāng)前連接。連接主動關(guān)閉和同時關(guān)閉兩種情況都是可能發(fā)生的,,因此只需為系統(tǒng)提供主動關(guān)閉和同時關(guān)閉涉及到的狀態(tài)即可,。
  為了在主機之間傳遞TCP段,需要實現(xiàn)IP協(xié)議,。IP協(xié)議的實現(xiàn)比較復(fù)雜,,但是從實現(xiàn)Web服務(wù)器這一特定的要求出發(fā),主要需把握如下兩點設(shè)計思想:第一,,對接收到的IP數(shù)據(jù)報進行處理,,向上層協(xié)議進行提交;第二,,負(fù)責(zé)對TCP報文,、ICMP報文進行封裝,交給數(shù)據(jù)鏈路層進行裝幀,。實際上這是IP協(xié)議最基本的功能,,也是Web服務(wù)器在網(wǎng)絡(luò)層必需的功能。ICMP協(xié)議負(fù)責(zé)傳遞差錯報文及其它需要注意的信息, Ping利用ICMP協(xié)議的回響功能實現(xiàn)主機/服務(wù)器是否有應(yīng)答的測試,。Ping的實現(xiàn)主要由ping請求,、ping應(yīng)答和回顯操作三個函數(shù)完成。
  由于采用以太網(wǎng)的接入方式,,因此系統(tǒng)必須實現(xiàn)IEEE802.3標(biāo)準(zhǔn),,主要由RTL8019AS完成。為了保證系統(tǒng)在以太網(wǎng)的通信,,還需要實現(xiàn)ARP協(xié)議,。ARP協(xié)議的本質(zhì)就是完成網(wǎng)絡(luò)地址到物理地址的映射,,從而保證網(wǎng)絡(luò)的正確傳輸,。整個ARP處理過程由ARP請求、ARP應(yīng)答,、ARP處理三個函數(shù)實現(xiàn),,ARP處理函數(shù)建立了ARP緩存表。
  本文介紹的嵌入式網(wǎng)絡(luò)監(jiān)控系統(tǒng)采用IE瀏覽器作為客戶端界面,,支持RS232和以太網(wǎng)的連接,,可以通過以太網(wǎng)接入Internet,進而實現(xiàn)從Internet上監(jiān)控嵌入式設(shè)備,。在實際應(yīng)用中,,如果I/O口連接了其它硬件設(shè)備,只需對變量的處理函數(shù)做相應(yīng)改動,,就可實現(xiàn)遠(yuǎn)程監(jiān)控,。系統(tǒng)內(nèi)部嵌入μC/OS-II操作系統(tǒng),使用靈活,,可通過編程增加需要的功能,。采用DHCP動態(tài)獲得IP地址等信息,增強了系統(tǒng)的靈活性,。本方案所實現(xiàn)的網(wǎng)絡(luò)監(jiān)控系統(tǒng)具有成本低,、可視化、與平臺無關(guān)等特點,,可以廣泛應(yīng)用在工業(yè)控制領(lǐng)域,,有很高的實用價值。
參考文獻
1 REALTEK Datasheet.RTL8019AS RealPNP[J], 2000
2 μCOS51移植心得.http://www.armecos.com
3邵貝貝. 嵌入式實時操作系統(tǒng)μCOS-II. 北京:北京航空航天大學(xué)出版社,,2003
4楊 屹.NE2000網(wǎng)卡芯片驅(qū)動程序.巨龍公司系統(tǒng)集成開發(fā)部,,2002
5陳向群譯.嵌入式系統(tǒng)Web服務(wù)器——TCP/IP Lean. 北京:機械工業(yè)出版社,2003:187~214,,425~440

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點,。轉(zhuǎn)載的所有的文章,、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容,、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118,;郵箱:[email protected],。