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