實(shí)時(shí)內(nèi)核uC/OS-II下的網(wǎng)絡(luò)監(jiān)控系統(tǒng)的設(shè)計(jì) 作者: 時(shí)間:2007-03-09 來(lái)源:網(wǎng)絡(luò) 加入技術(shù)交流群 掃碼加入和技術(shù)大咖面對(duì)面交流海量資料庫(kù)查詢(xún) 收藏 摘要:介紹了一種嵌入式于單片機(jī)的Web服務(wù)器的設(shè)計(jì)過(guò)程,給出了單片機(jī)控制下的網(wǎng)絡(luò)控制器RTL8019AS硬件平臺(tái)的設(shè)計(jì)、精簡(jiǎn)的TCP/IP協(xié)議棧通過(guò)LAN訪問(wèn)Internet的應(yīng)用方案。同時(shí)簡(jiǎn)明介紹了實(shí)時(shí)內(nèi)核uC/OS-II對(duì)整個(gè)系統(tǒng)的管理方案,完成了對(duì)連接在系統(tǒng)I/O總線上的現(xiàn)有設(shè)備的監(jiān)控。 關(guān)鍵詞:Web服務(wù)器 單片機(jī) uC/OS-II TCP/IP協(xié)議棧 動(dòng)態(tài)IP配置 隨著信息時(shí)代的到來(lái),特別是互聯(lián)網(wǎng)的迅速普及,人們開(kāi)始越來(lái)越多地接觸到一個(gè)新概念--嵌入式產(chǎn)品。將嵌入式系統(tǒng)接入Internet。不僅實(shí)現(xiàn)了設(shè)備的遠(yuǎn)程控制、維護(hù)和升級(jí),而且可實(shí)現(xiàn)資源共享。通過(guò)網(wǎng)絡(luò)對(duì)設(shè)備進(jìn)行監(jiān)控,一個(gè)外部界面是必不可少的,利用Web瀏覽器可使用戶(hù)通過(guò)網(wǎng)絡(luò)對(duì)遠(yuǎn)程系統(tǒng)實(shí)現(xiàn)管理和更新,大大簡(jiǎn)化了人機(jī)界面的設(shè)計(jì)。若在系統(tǒng)中嵌入實(shí)時(shí)操作系統(tǒng),將使系統(tǒng)具有極強(qiáng)的可移植性,另外,硬件設(shè)備的添加與裁剪也具有極龐大的靈活性。采用DHCP協(xié)議動(dòng)態(tài)獲得IP相關(guān)信息,使TCP/IP軟件不再依賴(lài)于存儲(chǔ)在芯片中的固定IP地址,這將為大型系統(tǒng)的安裝提供方便條件。 本設(shè)計(jì)的關(guān)鍵是如何在內(nèi)存資源有限的單片機(jī)系統(tǒng)上,利用實(shí)時(shí)內(nèi)核uC/OS-II把信息變成可以在互聯(lián)網(wǎng)上傳輸?shù)腎P數(shù)據(jù)包,以便通過(guò)IE瀏覽器監(jiān)控遠(yuǎn)程設(shè)備的狀態(tài)。1 網(wǎng)絡(luò)監(jiān)控系統(tǒng)概述 本設(shè)計(jì)采用Internet監(jiān)控遠(yuǎn)程設(shè)備,整個(gè)系統(tǒng)相當(dāng)于一個(gè)網(wǎng)絡(luò)服務(wù)器。客戶(hù)端通過(guò)IE瀏覽器對(duì)該服務(wù)器進(jìn)行訪問(wèn),實(shí)時(shí)地獲得設(shè)備的狀態(tài)信息,以便對(duì)設(shè)備進(jìn)行控制和維護(hù)。這樣,就要求服務(wù)器提供WWW服務(wù),即實(shí)現(xiàn)HTTP協(xié)議。它應(yīng)被所有瀏覽器支持,以保證任何地方的用戶(hù)都可通過(guò)瀏覽器下達(dá)命令。在網(wǎng)絡(luò)接口上,本系統(tǒng)選擇以太網(wǎng)為其運(yùn)行的網(wǎng)絡(luò)環(huán)境。圖1所示為HTTP設(shè)計(jì)模型。首先,客戶(hù)端的瀏覽器與Web服務(wù)器使用一個(gè)或多個(gè)TCP連接,通過(guò)80號(hào)端口進(jìn)行通信,瀏覽器通過(guò)HTTP協(xié)議瀏覽事先存儲(chǔ)在EEROM中的控制網(wǎng)頁(yè),通過(guò)該網(wǎng)頁(yè)傳遞控制命令到網(wǎng)絡(luò)服務(wù)器,然后服務(wù)器對(duì)命令進(jìn)行解析,調(diào)用相應(yīng)的函數(shù)控制外部I/O設(shè)備。 整個(gè)設(shè)備監(jiān)控系統(tǒng)包括硬件和軟件兩部分。在硬件部分嵌入了TCP/IP協(xié)議棧。因系統(tǒng)資源有限,在保持協(xié)議分層體系結(jié)構(gòu)的前提下,應(yīng)盡量精簡(jiǎn)協(xié)議內(nèi)容。根據(jù)網(wǎng)絡(luò)監(jiān)控系統(tǒng)的原理,本系統(tǒng)實(shí)現(xiàn)了以下協(xié)議:DHCP、HTTP、TCP、IP、ICMP、ARP。 2 硬件平臺(tái)設(shè)計(jì) 本設(shè)計(jì)采用以太網(wǎng)作為網(wǎng)絡(luò)的運(yùn)行環(huán)境,在硬件上需要有網(wǎng)絡(luò)控制芯片。目前市場(chǎng)上有許多以太網(wǎng)絡(luò)控制芯片,但其大多數(shù)都耗電量高、功能復(fù)雜,不適合用于價(jià)格低廉的嵌入式系統(tǒng)中。在這里選用RTL8019AS,其好處是NE2000兼容、軟件移植性好、接口簡(jiǎn)單、不需轉(zhuǎn)換芯片如PCI-ISA橋等。而單片機(jī)選擇89C55,它有20K的ROM,內(nèi)部結(jié)構(gòu)簡(jiǎn)單,只要代碼能夠移植于它,就能較輕松地移植于其它架構(gòu)的CPU,比如ARM等。圖2為硬件原理框圖。24C64用來(lái)存儲(chǔ)物理地址及設(shè)備的相關(guān)信息等;外部RAM為數(shù)據(jù)處理提供緩存。系統(tǒng)提供了RS232接口用來(lái)進(jìn)行測(cè)試,提供了RJ45接口以便連接到以太網(wǎng)。3 操作系統(tǒng)的選擇 根據(jù)監(jiān)控系統(tǒng)的特點(diǎn),系統(tǒng)必須滿(mǎn)足實(shí)時(shí)性和并發(fā)性的要求,以便更好地支持TCP/IP運(yùn)行時(shí)的調(diào)度,所以應(yīng)用軟應(yīng)該基于嵌入式實(shí)時(shí)操作系統(tǒng)。適合于片上的實(shí)時(shí)操作系統(tǒng)比較多,但是代碼公開(kāi)且適合移植51系列單片機(jī)的卻很少,主要有uC/OS-II、RTX51、Small RTOS51等。實(shí)時(shí)內(nèi)核uC/OS-II是專(zhuān)門(mén)為單片機(jī)嵌入式應(yīng)用而設(shè)計(jì)的,圖3為嵌入式實(shí)時(shí)操作系統(tǒng)的內(nèi)部結(jié)構(gòu)圖。它主要采用標(biāo)準(zhǔn)的ANSI C語(yǔ)言寫(xiě)成,與硬件有關(guān)的部分使用匯編語(yǔ)言編寫(xiě),以使操作系統(tǒng)能很方便地移植到其它的處理器。可見(jiàn),使用嵌入式操作系統(tǒng)時(shí),應(yīng)用軟件只與上層的代碼有關(guān)與處理器無(wú)關(guān),在進(jìn)行軟件移植時(shí)僅需對(duì)與硬件相關(guān)的底層函數(shù)進(jìn)行修改,因此這樣的應(yīng)用軟件具有良好的可移植性和穩(wěn)定的可靠性。在uC/OS-II下編寫(xiě)TCP/IP協(xié)議,比傳統(tǒng)的前后臺(tái)系統(tǒng)要方便很多;用它分析內(nèi)存緩存區(qū),使用前申請(qǐng),使用后釋放,可有效地利用系統(tǒng)資源。在程序設(shè)計(jì)時(shí)將TCP/IP協(xié)議棧做成任務(wù),而用戶(hù)程序在另外的任務(wù)中運(yùn)行。這樣,單片機(jī)可在完成原來(lái)控制系統(tǒng)功能的前提下,實(shí)現(xiàn)網(wǎng)絡(luò)通信。從代碼長(zhǎng)度上看,實(shí)現(xiàn)基本功能的TCP/IP協(xié)議棧比Linux等其它操作系統(tǒng)優(yōu)勢(shì)更大。 4 軟件設(shè)計(jì) 軟件設(shè)計(jì)是網(wǎng)絡(luò)監(jiān)控系統(tǒng)設(shè)計(jì)的重要部分,主要完成RTL8019AS的驅(qū)動(dòng)、uC/OS-II對(duì)應(yīng)系統(tǒng)的管理及TCP/IP協(xié)議棧的實(shí)現(xiàn)。 4.1 uC/OS-II操作系統(tǒng)的應(yīng)用 uC/OS-II可以根據(jù)需要進(jìn)行相應(yīng)裁剪后移植到51單片機(jī)上。用它對(duì)系統(tǒng)進(jìn)行管理,使得程序易讀,且便于移植。藽/OS-II主要負(fù)責(zé)管理網(wǎng)卡初始化、創(chuàng)建系統(tǒng)資源、創(chuàng)建任務(wù)等三部分工作。在系統(tǒng)資源的創(chuàng)建上,使用TxSem、RxSem信號(hào)量及TxQFIFO隊(duì)列。當(dāng)需要發(fā)送或接收數(shù)據(jù)時(shí),觸發(fā)RTL8019AS中斷,CPU將中斷向量進(jìn)入中斷服務(wù)子程序,進(jìn)行事件處理。中斷服務(wù)子程序根據(jù)RTL8019AS內(nèi)部中斷狀態(tài)寄存器IMR的值確定系統(tǒng)所處狀態(tài),通過(guò)兩個(gè)信號(hào)量TxSemPost和RxSemPost切換系統(tǒng)任務(wù),使系統(tǒng)相應(yīng)信號(hào)量的一個(gè)任務(wù)進(jìn)入就緒態(tài)。發(fā)送數(shù)據(jù)幀的過(guò)程是通過(guò)檢查信號(hào)量TxSemPost而進(jìn)行的相應(yīng)處理,為了保證數(shù)據(jù)正確到達(dá)客戶(hù)端,這里采用了多次發(fā)送機(jī)制。當(dāng)信號(hào)量RxSemPost到來(lái)時(shí),開(kāi)始接收數(shù)據(jù)。如果數(shù)據(jù)幀正確,就根據(jù)數(shù)據(jù)包的大小申請(qǐng)合適的內(nèi)存空間存放該數(shù)據(jù),然后根據(jù)接收幀的目的地址的正確與否決定是否將該幀提交給上層應(yīng)用程序。若無(wú)誤則解析數(shù)據(jù)報(bào)頭,進(jìn)行相應(yīng)處理。4.2 RTL8019驅(qū)動(dòng) RTL8019AS完成數(shù)據(jù)包和電信號(hào)之間的相互轉(zhuǎn)換。驅(qū)動(dòng)程序主要包括芯片初始化、收包、發(fā)包三部分。物理信道上的收發(fā)操作采用以太網(wǎng)協(xié)議802.3幀格式。系統(tǒng)收發(fā)數(shù)據(jù)包的原理是單片機(jī)先將待發(fā)送的數(shù)據(jù)包存入RTL8019芯片RAM,給出發(fā)送緩沖區(qū)首地址和數(shù)據(jù)包長(zhǎng)度(寫(xiě)入TPSR、TBCR0,1)后,啟動(dòng)發(fā)送命令(CR=0x3E),即可實(shí)現(xiàn)RTL8019的發(fā)送功能。RTL8019會(huì)自動(dòng)按以太網(wǎng)協(xié)議完成發(fā)送并將結(jié)果寫(xiě)入狀態(tài)寄存器。RTL8019芯片接收緩沖區(qū)構(gòu)成一個(gè)循環(huán)FIFO隊(duì)列,PSTART、PSTOP兩個(gè)寄存器限定了循環(huán)隊(duì)列的開(kāi)始和結(jié)束頁(yè),CURR為寫(xiě)入指針,受芯片控制,BNRY為讀出指針,由主機(jī)程序控制。根據(jù)CURR==BNRY+1?可以判斷出是否收到新的數(shù)據(jù)包,新收到的數(shù)據(jù)包存于以CURR指出的地址為首址的RAM中。當(dāng)CURR==BNRY時(shí),芯片停止接收數(shù)據(jù)包。 4.3 網(wǎng)絡(luò)協(xié)議棧的實(shí)現(xiàn) 基于TCP/IP協(xié)議可以實(shí)現(xiàn)多種功能,本文主要討論HTTP協(xié)議,也就是Web服務(wù)在應(yīng)用層的主要構(gòu)成協(xié)議。由于TCP/IP協(xié)議棧本身是一種層式結(jié)構(gòu),所以在協(xié)議棧的設(shè)計(jì)上采用模塊化思想,逐層實(shí)現(xiàn),然后通過(guò)對(duì)各層接口函數(shù)的調(diào)用實(shí)現(xiàn)完整的協(xié)議棧。實(shí)現(xiàn)TCP/IP協(xié)議棧的大致流程如圖4所示。 要想將嵌入式系統(tǒng)作為一個(gè)終端并用TCP/IP連接起來(lái),就必須設(shè)定IP地址、網(wǎng)關(guān)和子網(wǎng)掩碼等信息。為了增強(qiáng)系統(tǒng)的靈活性,需要一種自動(dòng)配置能力,即系統(tǒng)自動(dòng)從中心服務(wù)器獲得IP地址等信息。實(shí)現(xiàn)這一功能的標(biāo)準(zhǔn)方法是通過(guò)主機(jī)動(dòng)態(tài)配置協(xié)議(DHCP)。DHCP是基于UDP層之上的應(yīng)用,采用端口68和67以廣播的形式進(jìn)行通訊,它的工作主要包括探查、賦予、請(qǐng)求、確認(rèn)等操作。 HTTP協(xié)議選擇定義請(qǐng)求-應(yīng)答機(jī)制獲得Web服務(wù)器上的文件。當(dāng)用戶(hù)訪問(wèn)Web服務(wù)器中的網(wǎng)頁(yè)時(shí),一個(gè)HTTP請(qǐng)求就會(huì)以多行字符串的形式從瀏覽器發(fā)送到Web服務(wù)器,第一行指定一個(gè)方法GET,后面跟著一串參數(shù)。服務(wù)器對(duì)客戶(hù)端的應(yīng)答需包含HTTP報(bào)文頭,如果請(qǐng)求成功,還包括文檔本身,這些信息沿TCP連接發(fā)送,直至傳送完成斷開(kāi)連接。含量少量信息的報(bào)文頭包含成功或失敗狀態(tài)及傳輸文檔的內(nèi)容類(lèi)型(文本、HTML、GIF圖形等)。所有連接的相關(guān)信息如IP地址、客啟端口號(hào)、序列號(hào)、應(yīng)答號(hào)及TCP狀態(tài)等被放入一個(gè)結(jié)構(gòu)體,結(jié)構(gòu)體的每個(gè)元素均可看作一個(gè)連接狀態(tài)。服務(wù)器進(jìn)程關(guān)閉連接表示本次響應(yīng)結(jié)束。網(wǎng)頁(yè)信息以HTML文本格式存儲(chǔ)于EEROM中,Web服務(wù)器創(chuàng)建局部變理以匹配文檔中的特殊字符,這些信息通過(guò)HTTP協(xié)議沿TCP連接發(fā)送到瀏覽器,服務(wù)器在應(yīng)答文檔中碰到合適的字符,就替換一個(gè)變量值,實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)頁(yè)。 為了在服務(wù)器和客房端之間傳遞HTTP請(qǐng)求和應(yīng)答信息,需要一個(gè)可靠的通信信道,這由傳輸控制協(xié)議TCP提供。TCP提供一種面向連接的可靠的數(shù)據(jù)流服務(wù),它的主要任務(wù)是創(chuàng)建進(jìn)程到進(jìn)程的通信。數(shù)據(jù)傳輸分三個(gè)階段進(jìn)行:建立連接、傳輸數(shù)據(jù)、斷開(kāi)連接,實(shí)現(xiàn)起來(lái)相對(duì)復(fù)雜。由于嵌入式系統(tǒng)是服務(wù)器端,總是對(duì)客戶(hù)的連接請(qǐng)求給予響應(yīng),從不主動(dòng)發(fā)起連接請(qǐng)求,因此只要在保證嵌入式系統(tǒng)能夠?qū)CP分組進(jìn)行正確響應(yīng)的前提下,就可以對(duì)TCP協(xié)議進(jìn)行大幅度簡(jiǎn)化。嵌入式系統(tǒng)總是響應(yīng)客戶(hù)連接,始終是被動(dòng)地打開(kāi)連接,所以只需為建立連接過(guò)程中的嵌入式系統(tǒng)提供LISTEN、SYN_RCVD兩種狀態(tài)即可。雖然比標(biāo)準(zhǔn)狀態(tài)變遷圖中缺少了CLOSED、SYN_SENT狀態(tài),但LISTEN、SYN_RCVD足以描述系統(tǒng)建立連接時(shí)的狀態(tài)。當(dāng)系統(tǒng)在傳最后一個(gè)數(shù)據(jù)包時(shí),設(shè)置FIN,要求終止當(dāng)前連接。連接主動(dòng)關(guān)閉和同時(shí)關(guān)閉兩種情況都是可能發(fā)生的,因此只需為系統(tǒng)提供主動(dòng)關(guān)閉和同時(shí)關(guān)閉涉及到的狀態(tài)即可。圖4為了在主機(jī)之間傳遞TCP段,需要實(shí)現(xiàn)IP協(xié)議。IP協(xié)議的實(shí)現(xiàn)比較復(fù)雜,但是從實(shí)現(xiàn)Web服務(wù)器這一特定的要求出發(fā),主要需要把握如下兩點(diǎn)設(shè)計(jì)思想:第一,對(duì)接收到的IP數(shù)據(jù)報(bào)進(jìn)行處理,向上層協(xié)議進(jìn)行提交;第二;負(fù)責(zé)對(duì)TCP報(bào)文、ICMP報(bào)文進(jìn)行封裝,交給數(shù)據(jù)鏈路層進(jìn)行裝幀。實(shí)際上這是IP協(xié)議最基本的功能,也是Web服務(wù)器在網(wǎng)絡(luò)層必需的功能。ICMP協(xié)議負(fù)責(zé)傳遞差錯(cuò)報(bào)文及其它需要注意的信息,Ping利用ICMP協(xié)議的回響功能實(shí)現(xiàn)主機(jī)/服務(wù)器是否有應(yīng)答的測(cè)試。Ping的實(shí)現(xiàn)主要由ping請(qǐng)求、ping應(yīng)答和回顯操作三個(gè)函數(shù)完成。 由于采用以太網(wǎng)的接入方式,因此系統(tǒng)必須實(shí)現(xiàn)IEEE802.3標(biāo)準(zhǔn),主要由RTL8019AS完成,為了保證系統(tǒng)在以太網(wǎng)的通信,還需要實(shí)現(xiàn)ARP協(xié)議。ARP協(xié)議的本質(zhì)就是完成網(wǎng)絡(luò)地址到物理地址的映射,從而保證網(wǎng)絡(luò)的正確傳輸。整個(gè)ARP處理過(guò)程由ARP請(qǐng)求、ARP應(yīng)答、ARP處理三個(gè)函數(shù)實(shí)現(xiàn),ARP處理函數(shù)建立了ARP緩存表。 本文介紹的嵌入式網(wǎng)絡(luò)監(jiān)控系統(tǒng)采用IE瀏覽器作為客戶(hù)端界面,支持RS232和以太網(wǎng)的連接,可以通過(guò)以太網(wǎng)接入Internet,進(jìn)而實(shí)現(xiàn)從Internet上監(jiān)控嵌入式設(shè)備。在實(shí)際應(yīng)用中,如果I/O口連接了其它硬件設(shè)備,只需對(duì)變量的處理函數(shù)做相應(yīng)改動(dòng),就可實(shí)現(xiàn)遠(yuǎn)程監(jiān)控。系統(tǒng)內(nèi)部嵌入uC/OS-II操作系統(tǒng),使用靈活,可通過(guò)編程增加需要的功能。采用DHCP動(dòng)態(tài)獲得IP地址等信息,增強(qiáng)了系統(tǒng)的靈活性。本方案所實(shí)現(xiàn)的網(wǎng)絡(luò)監(jiān)控系統(tǒng)具有成本低、可視化、與平臺(tái)無(wú)關(guān)等特點(diǎn),可以廣泛應(yīng)用在工業(yè)控制領(lǐng)域,有很高的實(shí)用價(jià)值。 ------------ 關(guān)于μC/OS-II系列軟件版權(quán)的說(shuō)明 Micrium 公司產(chǎn)品包括μC/OS-II,μC/GUI,uC/FS,μC/TCP-IP,μC/USB等。Micrium 公司提供嵌入式系統(tǒng)應(yīng)用方面的產(chǎn)品,并對(duì)其軟件擁有知識(shí)產(chǎn)權(quán)。Micrium花費(fèi)了大量的時(shí)間和財(cái)力為嵌入式領(lǐng)域提供高質(zhì)量的軟件產(chǎn)品。所有上述產(chǎn)品都以源代碼的形式提供給客戶(hù),具有極大的適用性。產(chǎn)品不是免費(fèi)軟件,也不是開(kāi)放源碼的軟件,因此,不能免費(fèi)使用,需要清楚的闡明μC/OS-II和系列的軟件不是開(kāi)放源碼的免費(fèi)軟件,這是和Linux完全不一樣的。 開(kāi)發(fā)和研究者可以通過(guò)購(gòu)買(mǎi)Micrium公司的Jean先生的μC/OS-II的書(shū)籍,而得到μC/OS-II源代碼,但是僅可以作為個(gè)人和學(xué)校學(xué)習(xí)使用,所有和μC/OS-II直接和間接相關(guān)的商業(yè)目的行為,必須購(gòu)買(mǎi)使用μC/OS-II及系列產(chǎn)品的商業(yè)授權(quán),包括芯片/單板/系統(tǒng)廠家的任何參考設(shè)計(jì),教學(xué)設(shè)備和最終的產(chǎn)品,如果沒(méi)有得到Micrium公司Jean先生簽字的合法授權(quán)都是不合法的使用, 這在μC/OS-II的書(shū)籍Micrium公司(www.micrium.com)和中國(guó)代理商-北京麥克泰軟件公司網(wǎng)站(www.bmrtech.com)上面中有明確規(guī)定。 Micrium公司其它軟件如μC/GUI,μC/FS,μC/TCP-IP,μC/USB 等的銷(xiāo)售模式與μC/OS-II不同,如果沒(méi)有購(gòu)買(mǎi)使用授權(quán),完全不可以擁有該源代碼,也不能將源代碼用于產(chǎn)品的設(shè)計(jì),培訓(xùn),教學(xué)和生產(chǎn)。 μC/OS-II, μC/GUI,μC/FS,μC/TCP-IP,μC/USB 等授權(quán)方式有:?jiǎn)蝹€(gè)產(chǎn)品、產(chǎn)品線(系列)、按照CPU 劃分的產(chǎn)品三種形式,μC/OS-KA,μC/OS-VIEW 等工具是按照使用人的數(shù)目收取費(fèi)用的,相對(duì)起傳統(tǒng)的RTOS 動(dòng)輒2-3萬(wàn)美圓的開(kāi)發(fā)費(fèi)用和每塊單板的使用費(fèi)(根據(jù)數(shù)量從數(shù)百到幾個(gè)美圓),μC/OS-II及系列產(chǎn)品是采用一次性的收費(fèi)方式,應(yīng)該只是大約相當(dāng)于傳統(tǒng)RTOS 的10-20% 的總體費(fèi)用。 如果您正在將μC/OS-II系列軟件用于您的產(chǎn)品,您需要購(gòu)買(mǎi)并獲得正式使用授權(quán)。 北京麥克泰軟件技術(shù)有限公司 linux操作系統(tǒng)文章專(zhuān)題:linux操作系統(tǒng)詳解(linux不再難懂) tcp/ip相關(guān)文章:tcp/ip是什么
評(píng)論