MC68VZ328的智能家庭網(wǎng)關(guān)的解決方案
摘要:本文給出Motorola VZ328芯片實現(xiàn)的智能家庭網(wǎng)關(guān)的解決方案。該方案中給出智能家庭網(wǎng)關(guān)的硬件體系結(jié)構(gòu)和軟件體系結(jié)構(gòu)。該方案可以實現(xiàn)通過Internet網(wǎng)和智能家庭網(wǎng)關(guān)對家庭內(nèi)部網(wǎng)絡上的家電設備進行控制,并且實現(xiàn)遠程自動報警功能。也對智能家庭網(wǎng)在系統(tǒng)中,實現(xiàn)網(wǎng)絡功能的TCP/IP協(xié)議開發(fā)作出說明。
關(guān)鍵詞:智能家庭網(wǎng)關(guān) 硬件體系結(jié)構(gòu) 軟件體系結(jié)構(gòu) PPSM TCP/IP
引言
智能家庭網(wǎng)絡是信息時代帶給人們的又一個高科技產(chǎn)物。它借助現(xiàn)有的計算機網(wǎng)絡技術(shù),將家庭內(nèi)部的各種家電和設備連網(wǎng),通過網(wǎng)絡為人們提供各種豐富、多樣、個性、方便、舒適、安全和高效的服務。家庭網(wǎng)絡化也是整個社會信息化的一個重要的部分。智能家庭網(wǎng)絡系統(tǒng)的基本結(jié)構(gòu)如圖1所示。
家實現(xiàn)家庭內(nèi)部信息與家庭外部信息的交換,無疑是家庭連網(wǎng)的目的所在,其實現(xiàn)需要設計一個理想的家庭網(wǎng)關(guān)。
1 家庭網(wǎng)關(guān)
家庭網(wǎng)關(guān)作為家庭網(wǎng)絡與Internet間的接口,如圖2所示。家庭網(wǎng)關(guān)應具有以下的基本功能:
①作為所有外部接入網(wǎng)連接到家庭內(nèi)部,同時將家庭內(nèi)部網(wǎng)絡連接到外部的一種物理接口;
②使住宅用戶可以獲得各種家庭服務(包括現(xiàn)有的和未來可能出現(xiàn)的服務)的平臺;
③為家庭內(nèi)部網(wǎng)絡中的設備分配IP地址,每個家庭網(wǎng)絡中的設備必須擁有唯一的IP地址(僅限于家庭網(wǎng)絡內(nèi)部使用),對于這種僅限于家庭內(nèi)部使用的IP只能由家庭網(wǎng)關(guān)來配置;
④路由功能,家庭網(wǎng)絡的復雜性使得內(nèi)部可能存在多個具有不同物理協(xié)議的子協(xié)議,家庭網(wǎng)關(guān)必須具有路由的功能,將來自Internet的帶寬 信息發(fā)送給相應的設備,同時也可實現(xiàn)設備間通信及分工合作;
⑤共享寬帶連接,使家庭內(nèi)部的多個PC及其它信息設備有效地共享寬帶接入。
2 智能家庭網(wǎng)關(guān)的實現(xiàn)
2.1 智能家庭網(wǎng)關(guān)的硬件體系結(jié)構(gòu)
智能家庭網(wǎng)關(guān)的硬件體系結(jié)構(gòu)如圖3所示。
智能家庭網(wǎng)關(guān)硬件系統(tǒng)選用Motorola公司的68VZ328處理器芯片,配合4MB的Flash和2MB的SDRAM存儲器,對外提供RS232/RS485、USB、I/O和以太網(wǎng)接口,并可以方便地擴展多種智能家庭網(wǎng)絡物理接口。
2.2 智能家庭網(wǎng)關(guān)的軟件體系結(jié)構(gòu)
軟件體系結(jié)構(gòu)如圖4所示。
在家庭網(wǎng)關(guān)的軟件系統(tǒng)中,選用Motorola提供的PPSM系統(tǒng)。由于PPSM系統(tǒng)沒有提供窗口系統(tǒng),因此根據(jù)家庭網(wǎng)關(guān)系統(tǒng)中的實際需要作出適當?shù)男薷暮螅O計出一套窗口操作系統(tǒng);又由于PPSM系統(tǒng)中沒有實現(xiàn)網(wǎng)絡功能,因此在對PPSM系統(tǒng)進行修改時添加了TCP/IP協(xié)議棧,這樣就可以在這個操作系統(tǒng)中實現(xiàn)網(wǎng)絡功能了。
3 嵌入式TCP/IP協(xié)議棧開發(fā)
嵌入式系統(tǒng)中對TCP/IP協(xié)議棧的實現(xiàn)方式有硬件固化和軟件實現(xiàn)兩種。硬件方式是指TCP/IP協(xié)議棧用硬件的方式實現(xiàn),嵌入式系統(tǒng)中直接與TCP/IP協(xié)議棧硬件芯片連接,由它實現(xiàn)協(xié)議的轉(zhuǎn)換,從而使之與互聯(lián)網(wǎng)相連接。但這無疑增加了硬件成本,對一些功能單一的嵌入式設備,連接一個完整的TCP/IP硬件議棧,是一個極大的浪費,而且所增加的成本費用是難以議棧,是個極大的浪費,而且所增加的成本費用是難以接受的。因此在該系統(tǒng)中,選用軟件方式實現(xiàn)嵌入式TCP/IP協(xié)議具有更大的優(yōu)勢。
高級的操作系統(tǒng)可支持TCP/IP協(xié)議族,但我們選用的PPSM系統(tǒng)是不支持的,因此必須根據(jù)該系統(tǒng)的實際需要添加對TCP/IP協(xié)議族的支持功能。在添加TCP/IP協(xié)議族時,根據(jù)系統(tǒng)的特點和功能設計出獨特的TCP/IP協(xié)議族,實現(xiàn)與需要有關(guān)的部分,對不需要的協(xié)議則不予支持;其次,對于使用的協(xié)議根據(jù)具體應用作出了必要修改。
在該系統(tǒng)中,嵌入式TCP/IP協(xié)議棧實現(xiàn)ARP、IP、ICMP、TCP、UDP、HTTP等協(xié)議?;镜膮f(xié)議處理程序如力所示。
結(jié)合該系統(tǒng)的實際情況,構(gòu)建嵌入式TCP用于控制動作的有限機模型如圖6所示。在一些對于嵌入式系統(tǒng)不必要的地方做了修改、簡化,但仍保持與標準TCP協(xié)議的一致性。
在設計嵌入式Web服務器,時系統(tǒng)中TCP中上只支持HTTP協(xié)議,嵌入式系統(tǒng)把數(shù)據(jù)采集、運行參數(shù)等當前實時數(shù)據(jù)存入存儲器中網(wǎng)頁的相關(guān)位置。對任何TC連接,每次只是支持HTTP協(xié)議發(fā)送風頁服務,并且把每個網(wǎng)頁大小限制在一個數(shù)據(jù)包內(nèi),而不會出現(xiàn)IP包的分拆。作為嵌入式Web服務器,TCP連接時只處于被動服務的狀態(tài),所以可以將標準TCP有限狀態(tài)機主動創(chuàng)建連接的SYN-ENT狀態(tài)、主動關(guān)閉連接的FIN-AIT1、FIN-AIT2、CLOSING、TIME-AIT狀態(tài)省去。在設計中,還去掉了CLOSED狀態(tài),讓它一開始就處于LISTEN狀態(tài),來監(jiān)聽客戶端的連接請求,避免了主動或被動打開的操作,對此嵌入式場合,更加高效。
在三次握手建立連接的過程中,嵌入式系統(tǒng)作為監(jiān)聽狀態(tài)的服務器端,始終為被動方,相當于被動打開后的LISTEN狀態(tài),等對方發(fā)起連接。當它接收到SYN數(shù)據(jù)片,它發(fā)出SYN+ACK數(shù)據(jù)片并確認它已接收到對方的SYN,此時變?yōu)镾YN+RECIVED狀態(tài)。再接收到對方返回的一個僅含ACK的空數(shù)據(jù)片,則三次握手完成,進入ESTABLISHED狀態(tài),之后可以進行TCP數(shù)據(jù)通信。
在操作系統(tǒng)中,為防止舊的重復連接請求引起混亂,可以用復位RESET控制攝文對這種情況進行處理。收到復位RESET信號后,若處于非同步狀態(tài)(SYNRECIVED、SYN-SEND),則回到LISTEN狀態(tài);若處于任意一種同步狀態(tài),它就異常終止連接并通知它的用戶在該系統(tǒng)中取消了CLOSE狀態(tài),所以收到復位RESET控制報文時,回到LISTEN狀態(tài)。實際處理時并沒有記憶當前的狀態(tài),所以不需要作任何操作,并因為始終處于被動狀態(tài)而從不發(fā)復位RESET報文。
在操作系統(tǒng)中,將端口號、IP地址、序列號、窗口尺寸等和響應的傳輸控制塊TCB結(jié)構(gòu)表示不同的連接,為不同的客戶請求建立多個連接,一一對應,并發(fā)執(zhí)行。而在嵌入式TC宮實現(xiàn)如此復雜的操作并不現(xiàn)實,故設計中沒有記錄TCP連接所處的當前狀態(tài),也沒有分開建立多個TCP連接。分析如下:每從下層協(xié)議傳來一個報文后,并不能比較報文段中的信息和TCP中的信息來進行處理,因為并沒有記憶過去所建連接的有關(guān)信息,所以并不知道此連接是否存在及所處狀態(tài)等,僅僅根據(jù)接收包內(nèi)的有關(guān)信息(控制位和有無數(shù)據(jù)),來判斷所處連接狀態(tài)來進行回應。連接的概述在一定程度上,只是對客戶端PC來說的,給它維持一個連接存在的假象。而嵌入式報務器端因為不存儲連接的信息,相當于沒有連接的存在,對所有連接都響應,才可以在有限系統(tǒng)資源的條件下實現(xiàn)了多連接。
在TCP的連接中,一方由于崩潰等原因造成異常終止或關(guān)閉一個連接,會產(chǎn)生半開連接的問題,由于異常的一方丟失了存儲的信息,若任一方發(fā)數(shù)據(jù)去,對方會回復復位信號,連接復位。對嵌入式系統(tǒng)來說,當客戶機異常且嵌入式系統(tǒng)發(fā)數(shù)據(jù)時,會被回復復位信號;當嵌入式系統(tǒng)異常后,又重新開始時,由于它本來就無存儲信息,故沒有什么影響。
當網(wǎng)絡出現(xiàn)超時、丟失包時,一般用超時重傳機制間來重發(fā),而嵌入式系統(tǒng)發(fā)包之后,并未保存此包,此不考慮重發(fā)問題。當丟包后,繹方接不到確認包,為自己的所發(fā)的包丟失,超時重發(fā),而嵌入式系統(tǒng)此時再響應并發(fā)包,仍可保證可靠性。
嵌入式系統(tǒng)不記憶TCP連接的序列號,除了第一次建立連接時初始化序列號外,是根據(jù)對方發(fā)包中的值來確定序列號,因此它不能識別重復報文,而照?;貞?。把此重復報文的處理工作交給對方處理,仍可滿足基本工作要求。對依靠TCP連接的HTTP服務來說,嵌入式服務器僅僅在服務器端響應客戶端請求,所接收的一個報文數(shù)據(jù)報即可傳輸完成,故不需要考慮失序問題。
在設計實現(xiàn)TCP有限狀態(tài)機時,使用過程驅(qū)動方案為每個輸入狀態(tài)啟動一個過程。當某一事件發(fā)生時,TCP利用當前狀態(tài)來選取一個適當?shù)倪^程。該過程處理輸入事件并更新當前狀態(tài)變量值,即每個狀態(tài)對應一個過程,當一個輸入報文段到達時,TCP調(diào)用當前狀態(tài)對應的過程,進行處理。程序主要如下:
…
if(SYN_IN && port_right)tcp_send_SYN_ACK 0;
else if(SYN_IN && port_num_wrong)tcp_send_RST_ACK 0;
else if(ACK_IN && port_num_right && have_data)http_process (tcp_ACK);
else if(FIN_IN && port_num_right && have_data)http_process (tcp_FIN);
else if(FIN_IN && port_num_right && no_data)tcp_send_FIN 0;
else
…
4 總結(jié)
該解決方案中只實現(xiàn)了家庭網(wǎng)關(guān)的網(wǎng)絡控制功能,在下一步中將逐漸加入使用電話對家庭網(wǎng)關(guān)的控制功能。這樣就使人們在不能上網(wǎng)的情況下只需要使用電話,就能通過智能家庭網(wǎng)關(guān)實現(xiàn)人們只有在網(wǎng)上才能實現(xiàn)的功能。