MC68VZ328的智能家庭網(wǎng)關(guān)的解決方案
引言
本文引用地址:http://dyxdggzs.com/article/79227.htm智能家庭網(wǎng)絡(luò )是信息時(shí)代帶給人們的又一個(gè)高科技產(chǎn)物。它借助現有的計算機網(wǎng)絡(luò )技術(shù),將家庭內部的各種家電和設備連網(wǎng),通過(guò)網(wǎng)絡(luò )為人們提供各種豐富、多樣、個(gè)性、方便、舒適、安全和高效的服務(wù)。家庭網(wǎng)絡(luò )化也是整個(gè)社會(huì )信息化的一個(gè)重要的部分。智能家庭網(wǎng)絡(luò )系統的基本結構如圖1所示。

實(shí)現家庭內部信息與家庭外部信息的交換,無(wú)疑是家庭連網(wǎng)的目的所在,其實(shí)現需要設計一個(gè)理想的家庭網(wǎng)關(guān)。
1 家庭網(wǎng)關(guān)
家庭網(wǎng)關(guān)作為家庭網(wǎng)絡(luò )與Internet間的接口,如圖2所示。家庭網(wǎng)關(guān)應具有以下的基本功能:

?、僮鳛樗型獠拷尤刖W(wǎng)連接到家庭內部,同時(shí)將家庭內部網(wǎng)絡(luò )連接到外部的一種物理接口;
?、谑棺≌脩?hù)可以獲得各種家庭服務(wù)(包括現有的和未來(lái)可能出現的服務(wù))的平臺;
?、蹫榧彝炔烤W(wǎng)絡(luò )中的設備分配IP地址,每個(gè)家庭網(wǎng)絡(luò )中的設備必須擁有唯一的IP地址(僅限于家庭網(wǎng)絡(luò )內部使用),對于這種僅限于家庭內部使用的IP只能由家庭網(wǎng)關(guān)來(lái)配置;
?、苈酚晒δ?,家庭網(wǎng)絡(luò )的復雜性使得內部可能存在多個(gè)具有不同物理協(xié)議的子協(xié)議,家庭網(wǎng)關(guān)必須具有路由的功能,將來(lái)自Internet的帶寬 信息發(fā)送給相應的設備,同時(shí)也可實(shí)現設備間通信及分工合作;
?、莨蚕韺拵нB接,使家庭內部的多個(gè)PC及其它信息設備有效地共享寬帶接入。
2 智能家庭網(wǎng)關(guān)的實(shí)現
2.1 智能家庭網(wǎng)關(guān)的硬件體系結構
智能家庭網(wǎng)關(guān)的硬件體系結構如圖3所示.

智能家庭網(wǎng)關(guān)硬件系統選用Motorola公司的68VZ328處理器芯片,配合4MB的Flash和2MB的SDRAM存儲器,對外提供RS232/RS485、USB、I/O和以太網(wǎng)接口,并可以方便地擴展多種智能家庭網(wǎng)絡(luò )物理接口。
2.2 智能家庭網(wǎng)關(guān)的軟件體系結構
軟件體系結構如圖4所示。

在家庭網(wǎng)關(guān)的軟件系統中,選用Motorola提供的PPSM系統。由于PPSM系統沒(méi)有提供窗口系統,因此根據家庭網(wǎng)關(guān)系統中的實(shí)際需要作出適當的修改后,設計出一套窗口操作系統;又由于PPSM系統中沒(méi)有實(shí)現網(wǎng)絡(luò )功能,因此在對PPSM系統進(jìn)行修改時(shí)添加了TCP/IP協(xié)議棧,這樣就可以在這個(gè)操作系統中實(shí)現網(wǎng)絡(luò )功能了。
3 嵌入式TCP/IP協(xié)議棧開(kāi)發(fā)
嵌入式系統中對TCP/IP協(xié)議棧的實(shí)現方式有硬件固化和軟件實(shí)現兩種。硬件方式是指TCP/IP協(xié)議棧用硬件的方式實(shí)現,嵌入式系統中直接與TCP/IP協(xié)議棧硬件芯片連接,由它實(shí)現協(xié)議的轉換,從而使之與互聯(lián)網(wǎng)相連接。但這無(wú)疑增加了硬件成本,對一些功能單一的嵌入式設備,連接一個(gè)完整的TCP/IP硬件議棧,是一個(gè)極大的浪費,而且所增加的成本費用是難以議棧,是個(gè)極大的浪費,而且所增加的成本費用是難以接受的。因此在該系統中,選用軟件方式實(shí)現嵌入式TCP/IP協(xié)議具有更大的優(yōu)勢。
高級的操作系統可支持TCP/IP協(xié)議族,但我們選用的PPSM系統是不支持的,因此必須根據該系統的實(shí)際需要添加對TCP/IP協(xié)議族的支持功能。在添加TCP/IP協(xié)議族時(shí),根據系統的特點(diǎn)和功能設計出獨特的TCP/IP協(xié)議族,實(shí)現與需要有關(guān)的部分,對不需要的協(xié)議則不予支持;其次,對于使用的協(xié)議根據具體應用作出了必要修改。
在該系統中,嵌入式TCP/IP協(xié)議棧實(shí)現ARP、IP、ICMP、TCP、UDP、HTTP等協(xié)議?;镜膮f(xié)議處理程序如力所示。

結合該系統的實(shí)際情況,構建嵌入式TCP用于控制動(dòng)作的有限機模型如圖6所示。在一些對于嵌入式系統不必要的地方做了修改、簡(jiǎn)化,但仍保持與標準TCP協(xié)議的一致性。

在設計嵌入式Web服務(wù)器,時(shí)系統中TCP中上只支持HTTP協(xié)議,嵌入式系統把數據采集、運行參數等當前實(shí)時(shí)數據存入存儲器中網(wǎng)頁(yè)的相關(guān)位置。對任何TC連接,每次只是支持HTTP協(xié)議發(fā)送風(fēng)頁(yè)服務(wù),并且把每個(gè)網(wǎng)頁(yè)大小限制在一個(gè)數據包內,而不會(huì )出現IP包的分拆。作為嵌入式Web服務(wù)器,TCP連接時(shí)只處于被動(dòng)服務(wù)的狀態(tài),所以可以將標準TCP有限狀態(tài)機主動(dòng)創(chuàng )建連接的SYN-ENT狀態(tài)、主動(dòng)關(guān)閉連接的FIN-AIT1、FIN-AIT2、CLOSING、TIME-AIT狀態(tài)省去。在設計中,還去掉了CLOSED狀態(tài),讓它一開(kāi)始就處于LISTEN狀態(tài),來(lái)監聽(tīng)客戶(hù)端的連接請求,避免了主動(dòng)或被動(dòng)打開(kāi)的操作,對此嵌入式場(chǎng)合,更加高效。
在三次握手建立連接的過(guò)程中,嵌入式系統作為監聽(tīng)狀態(tài)的服務(wù)器端,始終為被動(dòng)方,相當于被動(dòng)打開(kāi)后的LISTEN狀態(tài),等對方發(fā)起連接。當它接收到SYN數據片,它發(fā)出SYN+ACK數據片并確認它已接收到對方的SYN,此時(shí)變?yōu)镾YN+RECIVED狀態(tài)。再接收到對方返回的一個(gè)僅含ACK的空數據片,則三次握手完成,進(jìn)入ESTABLISHED狀態(tài),之后可以進(jìn)行TCP數據通信。
在操作系統中,為防止舊的重復連接請求引起混亂,可以用復位RESET控制攝文對這種情況進(jìn)行處理。收到復位RESET信號后,若處于非同步狀態(tài)(SYNRECIVED、SYN-SEND),則回到LISTEN狀態(tài);若處于任意一種同步狀態(tài),它就異常終止連接并通知它的用戶(hù)在該系統中取消了CLOSE狀態(tài),所以收到復位RESET控制報文時(shí),回到LISTEN狀態(tài)。實(shí)際處理時(shí)并沒(méi)有記憶當前的狀態(tài),所以不需要作任何操作,并因為始終處于被動(dòng)狀態(tài)而從不發(fā)復位RESET報文。
在操作系統中,將端口號、IP地址、序列號、窗口尺寸等和響應的傳輸控制塊TCB結構表示不同的連接,為不同的客戶(hù)請求建立多個(gè)連接,一一對應,并發(fā)執行。而在嵌入式TC宮實(shí)現如此復雜的操作并不現實(shí),故設計中沒(méi)有記錄TCP連接所處的當前狀態(tài),也沒(méi)有分開(kāi)建立多個(gè)TCP連接。分析如下:每從下層協(xié)議傳來(lái)一個(gè)報文后,并不能比較報文段中的信息和TCP中的信息來(lái)進(jìn)行處理,因為并沒(méi)有記憶過(guò)去所建連接的有關(guān)信息,所以并不知道此連接是否存在及所處狀態(tài)等,僅僅根據接收包內的有關(guān)信息(控制位和有無(wú)數據),來(lái)判斷所處連接狀態(tài)來(lái)進(jìn)行回應。連接的概述在一定程度上,只是對客戶(hù)端PC來(lái)說(shuō)的,給它維持一個(gè)連接存在的假象。而嵌入式報務(wù)器端因為不存儲連接的信息,相當于沒(méi)有連接的存在,對所有連接都響應,才可以在有限系統資源的條件下實(shí)現了多連接。
在TCP的連接中,一方由于崩潰等原因造成異常終止或關(guān)閉一個(gè)連接,會(huì )產(chǎn)生半開(kāi)連接的問(wèn)題,由于異常的一方丟失了存儲的信息,若任一方發(fā)數據去,對方會(huì )回復復位信號,連接復位。對嵌入式系統來(lái)說(shuō),當客戶(hù)機異常且嵌入式系統發(fā)數據時(shí),會(huì )被回復復位信號;當嵌入式系統異常后,又重新開(kāi)始時(shí),由于它本來(lái)就無(wú)存儲信息,故沒(méi)有什么影響。
當網(wǎng)絡(luò )出現超時(shí)、丟失包時(shí),一般用超時(shí)重傳機制間來(lái)重發(fā),而嵌入式系統發(fā)包之后,并未保存此包,此不考慮重發(fā)問(wèn)題。當丟包后,繹方接不到確認包,為自己的所發(fā)的包丟失,超時(shí)重發(fā),而嵌入式系統此時(shí)再響應并發(fā)包,仍可保證可靠性。
嵌入式系統不記憶TCP連接的序列號,除了第一次建立連接時(shí)初始化序列號外,是根據對方發(fā)包中的值來(lái)確定序列號,因此它不能識別重復報文,而照?;貞?。把此重復報文的處理工作交給對方處理,仍可滿(mǎn)足基本工作要求。對依靠TCP連接的HTTP服務(wù)來(lái)說(shuō),嵌入式服務(wù)器僅僅在服務(wù)器端響應客戶(hù)端請求,所接收的一個(gè)報文數據報即可傳輸完成,故不需要考慮失序問(wèn)題。
在設計實(shí)現TCP有限狀態(tài)機時(shí),使用過(guò)程驅動(dòng)方案為每個(gè)輸入狀態(tài)啟動(dòng)一個(gè)過(guò)程。當某一事件發(fā)生時(shí),TCP利用當前狀態(tài)來(lái)選取一個(gè)適當的過(guò)程。該過(guò)程處理輸入事件并更新當前狀態(tài)變量值,即每個(gè)狀態(tài)對應一個(gè)過(guò)程,當一個(gè)輸入報文段到達時(shí),TCP調用當前狀態(tài)對應的過(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 總結
該解決方案中只實(shí)現了家庭網(wǎng)關(guān)的網(wǎng)絡(luò )控制功能,在下一步中將逐漸加入使用電話(huà)對家庭網(wǎng)關(guān)的控制功能。這樣就使人們在不能上網(wǎng)的情況下只需要使用電話(huà),就能通過(guò)智能家庭網(wǎng)關(guān)實(shí)現人們只有在網(wǎng)上才能實(shí)現的功能。
tcp/ip相關(guān)文章:tcp/ip是什么
評論