基于Rabbit2000的嵌入式家庭網(wǎng)關(guān)設(shè)計
Internet的日益普及,信息共享程度的不斷提高,使得網(wǎng)絡(luò)和信息家電(IA)已越來越多的出現(xiàn)在人們的生活之中。家庭信息化網(wǎng)絡(luò)技術(shù)也成為世界上各大家電制造廠商研發(fā)的主要方向。信息家電是將普通家用電器利用數(shù)字技術(shù)、網(wǎng)絡(luò)技術(shù)及智能控制技術(shù)設(shè)計改進的新型家電產(chǎn)品。家電網(wǎng)絡(luò)化方案如圖1所示,信息家電可以實現(xiàn)家電互聯(lián)組成一個家庭內(nèi)部網(wǎng)絡(luò),同時這個家庭網(wǎng)絡(luò)又可以與外部互聯(lián)網(wǎng)相連接。從而可實現(xiàn)對家電的集中控制,根據(jù)個人習慣設(shè)定所有網(wǎng)絡(luò)家電的自動起停時間與自動運轉(zhuǎn)方式。同時可對家用電器的運行狀態(tài)進行遠程控制與故障監(jiān)測,為人們提供一個高效、便捷、現(xiàn)代化的生活環(huán)境。
圖1:家電網(wǎng)絡(luò)化方案
系統(tǒng)方案的提出
作為家庭內(nèi)部局域網(wǎng)與外部網(wǎng)絡(luò)交換信息的中間媒介,家庭網(wǎng)關(guān)應(yīng)實現(xiàn)如圖2所示的基本功能。
圖2 : 家庭網(wǎng)關(guān)基本功能
● 嵌入式TCP/IP協(xié)議棧
TCP/IP協(xié)議是一個四層協(xié)議系統(tǒng),包括數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層和應(yīng)用層,每一層負責不同的功能。其結(jié)構(gòu)框圖如圖3所示。嵌入式TCP/IP協(xié)議棧是家庭網(wǎng)關(guān)和外部Internet網(wǎng)絡(luò)通信的協(xié)議基礎(chǔ)。在復雜系統(tǒng)中,TCP/IP協(xié)議棧一般都作為操作系統(tǒng)的一部分,通過軟件實現(xiàn)。當前比較流行的嵌入式操作系統(tǒng)基本上都包含TCP/IP協(xié)議棧,適合于中高檔微處理器實現(xiàn)。但對于一般的以8/16位微處理器和單片機為代表的低成本嵌入式系統(tǒng)而言,TCP/IP協(xié)議應(yīng)盡可能精簡,一般僅取其內(nèi)核部分。鑒于單片機內(nèi)部資源有限,本設(shè)計中僅實現(xiàn)ARP、IP、ICMP、UDP、HTTP五種協(xié)議,提供了一個從網(wǎng)絡(luò)層到應(yīng)用層的完整通道。
圖3: TCP/IP協(xié)議層次結(jié)構(gòu)
嵌入式Web服務(wù)器是家庭網(wǎng)關(guān)面向外部通信網(wǎng)絡(luò)和遠程監(jiān)控用戶的窗口,家庭內(nèi)部各種智能應(yīng)用終端的信息和狀態(tài)均以網(wǎng)頁的形式通過Web服務(wù)器傳送給遠程監(jiān)控用戶,遠程監(jiān)控用戶通過網(wǎng)頁以CGI形式改變和控制家庭智能終端的參數(shù)和狀態(tài)。根據(jù)目前技術(shù)背景和應(yīng)用前景,Web服務(wù)器有三種不同的形式 :WWW Web服務(wù)器、WAP Web服務(wù)器、電話控制服務(wù)器。WWW Web服務(wù)器是指當前應(yīng)用最為廣泛的以HTTP協(xié)議和CGI為基礎(chǔ)的網(wǎng)絡(luò)服務(wù)器;WAP Web服務(wù)器是指以移動電話為代表的移動終端所支持的無線應(yīng)用協(xié)議為基礎(chǔ)的網(wǎng)絡(luò)服務(wù)器,是最為便捷最有前途的網(wǎng)絡(luò)服務(wù)器 ;電話控制服務(wù)器則是指支持用戶通過電話實現(xiàn)對家庭智能終端的監(jiān)視和控制的服務(wù)程序,這種方式技術(shù)含量較低,且一般只能控制少數(shù)家庭智能終端,無法實現(xiàn)對復雜家庭局域網(wǎng)的有效控制。
● 內(nèi)部網(wǎng)絡(luò)協(xié)議轉(zhuǎn)換
智能家庭局域網(wǎng)的樞紐,擔負著智能家庭局域網(wǎng)內(nèi)部各種不同協(xié)議子網(wǎng)之間的協(xié)議轉(zhuǎn)換工作,是處于智能家庭網(wǎng)關(guān)中與物理層接口的底層軟件,也是智能家庭網(wǎng)關(guān)的基礎(chǔ)。由于家庭內(nèi)部網(wǎng)絡(luò)有高速和低速之分,本設(shè)計僅側(cè)重于以信息家電為對象的低速家庭網(wǎng)絡(luò),并不涉及具體的計算機網(wǎng)絡(luò)和高速多媒體網(wǎng)絡(luò),故網(wǎng)絡(luò)協(xié)議轉(zhuǎn)換部分實現(xiàn)起來相對容易。
● 家庭智能控制與管理程序
家庭智能控制與管理程序是智能家庭網(wǎng)關(guān),乃至整個智能家庭局域網(wǎng)的核心,負責所有智能應(yīng)用終端的控制和管理功能。家庭智能控制與管理程序不僅需要根據(jù)遠程監(jiān)控用戶的指令完成對各種不同智能應(yīng)用終端的參數(shù)設(shè)置和控制,而且還要根據(jù)各種不同智能應(yīng)用終端的特性和家居生活的特點,制定一套有效合理的控制和管理策略,從而給家庭用戶提供一個舒適、便捷、安全的生活環(huán)境。家庭智能控制與管理是一個涉及技術(shù)領(lǐng)域廣泛、工程比較龐大的系統(tǒng)工程,研制一套切實有效的家庭智能控制與管理程序?qū)⑹且粋€比較漫長的反復探索過程。因此,本設(shè)計僅針對某些特定類型的智能應(yīng)用制定一套比較合理的智能控制和管理程序。
硬件設(shè)計實現(xiàn)方案
本設(shè)計采用Z-WORLD公司推出的低成本的嵌入式微控制器Rabbit 2000作為主控制器。它是一種高性能的8位微處理器,帶RJ-45插口的內(nèi)置10Base-T端口簡化了網(wǎng)絡(luò)連接,便于開發(fā)帶以太網(wǎng)接口的監(jiān)控、通信設(shè)備;配備有4個串行口,方便擴展連接;擁有26根并行的I/O引線以及16根可設(shè)置的I/O引線,無須擴展即可完成一般的I/O任務(wù);擁有512k Flash,128k SRAM,用于程序代碼和數(shù)據(jù)的存儲。這種結(jié)構(gòu)促進了嵌入式系統(tǒng)的快速開發(fā),并可實現(xiàn)集成的以太網(wǎng)連接。
設(shè)計中采用穩(wěn)定、可靠的RS-485總線連接到本地機MCU的UART接口上,以主機輪詢方式通信,從而實現(xiàn)家用電器的工作狀態(tài)及參數(shù)的遠程監(jiān)控。同時在板上預留了無線射頻模塊接口,方便系統(tǒng)擴展。家庭網(wǎng)關(guān)的硬件結(jié)構(gòu)如圖4所示。
圖4:家庭網(wǎng)關(guān)硬件結(jié)構(gòu)
家庭網(wǎng)關(guān)中的Web服務(wù)器由存儲在EEPROM存儲器上的程序和數(shù)據(jù)所支持,它們包括HTML文件和少量圖像數(shù)據(jù)等。主控制器可以取得來自于Internet上的遠程瀏覽器對網(wǎng)絡(luò)家電的操作請求,并提取出串行存儲器上相應(yīng)的HTML文件和圖像內(nèi)容。主控制器通過RS-485總線連接接口與傳統(tǒng)家電相連,向相應(yīng)的家電設(shè)備傳遞操作請求,同時將家電狀態(tài)反饋數(shù)據(jù)打包成TCP包,并發(fā)送到以太網(wǎng)上,返回到發(fā)出請求的Web瀏覽器,完成其網(wǎng)關(guān)的的功能。
系統(tǒng)軟件設(shè)計
● 系統(tǒng)軟件流程設(shè)計
軟件設(shè)計是整個系統(tǒng)設(shè)計的重點和難點。采用模塊化編程的方法,首先按照功能將程序分成幾個協(xié)議模塊。每一個模塊放在一個獨立的文件中,最后由主程序模塊調(diào)用各功能模塊實現(xiàn)協(xié)調(diào)工作。
系統(tǒng)工作流程圖如圖5所示。上電后首先開始初始化工作,包括單片機及其外圍電路,串口和以太網(wǎng)控制芯片的初始化。接著檢查是否有串口發(fā)送或接收中斷標志,如有轉(zhuǎn)入相應(yīng)子程序進行串行數(shù)據(jù)處理。本系統(tǒng)中,僅有串口使用中斷的操作方式,網(wǎng)絡(luò)芯片的控制采用查詢方式。單片機的處理速度有限,如果響應(yīng)以太網(wǎng)控制芯片中斷將花費大量中斷處理時間,這勢必會影響通信數(shù)據(jù)的丟失或超時。因此用查詢法控制網(wǎng)絡(luò)芯片,并將TCP/IP協(xié)議的處理放到主程序順序循環(huán)中,以犧牲響應(yīng)時間來保證系統(tǒng)穩(wěn)定可靠工作。當然這種可能造成響應(yīng)不及時,出現(xiàn)緩沖區(qū)溢出或丟包的現(xiàn)象,這可以通過TCP協(xié)議來保證可靠傳輸。當需要向網(wǎng)絡(luò)發(fā)送數(shù)據(jù)時,首先檢查發(fā)送緩沖區(qū)是否為空,如果沒有數(shù)據(jù)幀正在發(fā)送,則依次對數(shù)據(jù)進行TCP和IP打包后,將數(shù)據(jù)交給以太網(wǎng)控制芯片發(fā)出。網(wǎng)絡(luò)數(shù)據(jù)的接收過程則與發(fā)送相反。 ● TCP/IP協(xié)議棧的實現(xiàn)
Dynamic C編譯器是專門為Z-World 產(chǎn)品創(chuàng)建的軟件平臺,它使得在功能強大的嵌入式系統(tǒng)上進行實時編程易于實現(xiàn)。利用Dynamic C提供的TCP/IP協(xié)議包,用戶可以很容易建立起TCP/IP通信。當通信建立以后,就可以在此基礎(chǔ)上進行后續(xù)的功能擴展及代碼編制與優(yōu)化,從而極大地提高了開發(fā)進度。以下是用Dynamic C實現(xiàn)TCP/IP協(xié)議通信的程序主體框架。程序中起始宏定義為默認IP配置信息;“memmap”語句可以使程序在芯片中運行時,如同在擴展代碼窗口下被編譯;“use”語句使編譯器按照庫文件配置編譯代碼。
#define TCPCONFIG 1
#memmap xmem
#use dcrtcp.lib
main() {
sock_ init();
for( ; ; ) {
tcp_ tick(NULL) ; }
}
其中sock_init()和tcp_tick()都是TCP/IP函數(shù)庫的基本函數(shù),前者為初始化TCP/IP協(xié)議棧函數(shù),使協(xié)議棧開始處理入棧數(shù)據(jù)幀;后者主要實現(xiàn)支持后臺處理的最新信息與測試TCP 套接字狀態(tài)兩個用途。
● UDP協(xié)議的實現(xiàn)
UDP協(xié)議是傳輸層協(xié)議之一,使用IP作為網(wǎng)絡(luò)層協(xié)議,為應(yīng)用程序發(fā)送和接收數(shù)據(jù)報。但它提供無鏈接服務(wù),是不可靠傳輸。因此UDP報文主要用于需要實時數(shù)據(jù)傳輸?shù)那闆r,一次傳輸少量數(shù)據(jù)。在某些對實時性要求較高的場合,利用UDP報文進行傳輸是必要的,但需采用一些可靠性方案,防止漏傳、誤傳現(xiàn)象的發(fā)生。
數(shù)據(jù)報套接字(socket)是通信的基礎(chǔ),是支持TCP/IP協(xié)議的網(wǎng)絡(luò)通信的基本操作單元。它是網(wǎng)絡(luò)通信過程中端點的抽象表示,包括網(wǎng)絡(luò)通信必須的五種信息:鏈接使用的協(xié)議,本地主機的IP地址,本地進程的協(xié)議端口,遠地主機的IP地址,遠地進程的協(xié)議端口。UDP協(xié)議支持數(shù)據(jù)報套接字。這種套接字可以采用客戶/服務(wù)器模式,以全雙工方式工作,接收、發(fā)送可同時進行,但并不保證數(shù)據(jù)傳輸?shù)目煽啃?、有序性和無重復性。
● HTTP協(xié)議的實現(xiàn)
HTTP服務(wù)器可使HTML(超文本鏈接標示語言)頁面,如Web頁和其它文件為客戶端所使用。在Dynamic C中,HTTP協(xié)議由http.Lib來負責實現(xiàn)。HTTP服務(wù)器實現(xiàn)的主體框架如下:
# define TCPCONFIG 1
# memmap xmem
#use“dcrtcp.lib”
#use“http.lib”
main() {
sock_init();
http_init();
tcp_reserveport(80);
while (1) {
http_handler(); }
}
在以上基礎(chǔ)上,可以根據(jù)自己的需要在程序框架上添加構(gòu)成WebServer的所有其它動態(tài)或靜態(tài)元素(無論是否符合HTML標準)。
結(jié)論:本設(shè)計中以Rabbit 2000為主控芯片,嵌入TCP/IP協(xié)議棧,實現(xiàn)了家庭網(wǎng)關(guān)的基本功能,完成了家庭內(nèi)部局域網(wǎng)與Internet的對接與信息交互。在此基礎(chǔ)上仍有提高其協(xié)議轉(zhuǎn)換性能的措施,如增加TCP協(xié)議中對滑動窗口協(xié)議的支持及嵌入式系統(tǒng)網(wǎng)絡(luò)管理功能的加強。