??? 摘? 要: 以分析和實驗為基礎,研究了嵌入式TCP/IP協(xié)議棧SX-Stack的結(jié)構(gòu)及運行原理,提出了使用SX-Stack構(gòu)造單芯片嵌入式網(wǎng)絡服務器,將信息家電接入Internet的新方案。該服務器的組成、構(gòu)造方法和工作原理,并比較現(xiàn)有的使用PC/網(wǎng)關設備的接入方案,分析了該方案的優(yōu)點。單芯片嵌入式網(wǎng)絡服務器中SX-Stack與用戶應用程序的接口方法,用戶登錄軟件及信息家電監(jiān)測軟件的設計方法。?
??? 關鍵詞: 嵌入式TCP/IP 單芯片 嵌入式網(wǎng)絡服務器 信息家電 Internet
?
??? SX52BD是Ubicom公司推出的RISC結(jié)構(gòu)的8位高性能CMOS微處理器,可以進行高速運算、靈活的I/O口控制和高效的數(shù)據(jù)操作。SX52BD具有4KB的EE/FLASH ROM和262字節(jié)的SRAM。與現(xiàn)有的8位微處理器相比,其運算速度可達50MIPS,加上優(yōu)化的多數(shù)為單時鐘周期的指令集,SX52BD吞吐量大為提高。SX52BD比常規(guī)MCU快20倍的運算速度、可靠的性能和可重復編程的結(jié)構(gòu),使得精簡的TCP/IP能夠在其中可靠運行。?
??? SX-Stack運行在以SX52BD為基礎的硬件平臺上,是一組可配置的多種Internet協(xié)議的組合。這些協(xié)議按照分層協(xié)議棧的方式精心組織,包括應用層的HTTP、DHCP、SMTP,傳輸層的TCP、UDP,網(wǎng)絡層的IP/ICMP、ARP,通過鏈路層和物理層(如Ethernet)進行Internet數(shù)據(jù)的交互。SX-Stack的結(jié)構(gòu)如圖1所示。SX-Stack利用SX52BD的高速處理能力,按每次1字節(jié)的方式處理TCP/IP數(shù)據(jù)包。這樣,避免了在有限數(shù)量的RAM中緩存大量數(shù)據(jù),使得控制器可以處理比其內(nèi)部RAM總數(shù)更多的數(shù)據(jù)包。?
?

?
??? 利用嵌入的SX-Stack,Webserver能夠通過Hypertext Transfer Protocol(HTTP)與任何瀏覽器通訊,能夠提供各種類型的資源,如HTML、圖片、PDF文件等。這些資源使用一種特殊的文件系統(tǒng)URI,被存放在容量為32KB的外部EEPROM中。這種文件系統(tǒng)可包含任意多的子目錄,對URL的長度也沒有限制。?
1 信息家電單芯片服務器方案的提出?
??? 從信息家電的遠程在線訪問的角度考慮,對信息家電監(jiān)測和控制時存在兩種情況:(1)遠程訪問時,信息家電的通信數(shù)據(jù)量不大,56Kbps的通信速率即可滿足要求;(2)信息家電對時實性的要求不高,其時延可以在1秒以上。所以,SX-Stack提供的功能和SX52BD的處理速度能夠滿足上述條件下信息家電對接入Internet微處理器的要求。?
??? 在這種情況下,構(gòu)造了家電網(wǎng)絡服務器XWebServer,其結(jié)構(gòu)如圖2所示。XWebServer主要由三部分組成,即SX52BD微處理器、RTL8019AS以太網(wǎng)控制器、24LC256(E2PROM)。在SX52BD中運行用戶程序和SX-Stack;在E2PROM中存放XWebServer的各種Web資源;RTL8019AS是Ethernet控制器,負責SX52BD和Ethernet的數(shù)據(jù)傳遞。在家電已具備SPI(Serial Peripheral Interface)接口的條件下,使用家庭自動化總線HAB(Home Automation Bus)作為XWebServer與家電的接口,在HAB上使用的通
信協(xié)議為自主開發(fā)的簡單家庭網(wǎng)絡協(xié)議SHNP(Simple Home Networks Protocol)。?
?

?
??? 圖3是使用XWebServer的接入方法與常規(guī)接入方法的比較。使用XWebServer的接入方案省卻了PC機或網(wǎng)關設備,在數(shù)據(jù)量不大的情況下,完全可以取代PC或網(wǎng)關設備。家電通過SPI接口與XWebServer連接,經(jīng)由Ethernet接入住宅小區(qū)的信息服務中心。通過XWebServer,家電具備了連接Internet的能力。
?

?
??? 用戶自己開發(fā)的服務器應用程序需要放在應用層上才能運行。服務器應用程序是靠位于傳輸層TCP的Application Program Interface(API)來與下面各層進行數(shù)據(jù)交換的。在SX-Stack中存在若干個實質(zhì)為子程序模塊的API函數(shù),應用程序必須通過這些函數(shù)將數(shù)據(jù)組合成符合TCP/IP格式的數(shù)據(jù)包。為了提供給用戶登錄程序和家庭電氣設備監(jiān)測控制軟件模塊更充分的程序空間,移除了與HTTP服務無關的軟件功能模塊和函數(shù),保留了HTTP、TCP、IP/ICMP。這些程序模塊足以使服務器運行,響應瀏覽器的請求。XWebServer的協(xié)議棧結(jié)構(gòu)如圖4所示。?
?

?
2 用戶登錄和家庭電氣設備監(jiān)測控制軟件模塊的設計?
??? 遠程瀏覽器完成TCP鏈接的初始化。服務器等待遠程瀏覽器的請求,是一個被動的設備。當接收到建立TCP鏈接的請求后,服務器建立一個由遠程TCP端口號和遠程IP地址組成的套接字,并使用TCP/IP棧中的API和這個套接字,來識別隨后收到的來自遠程客戶機瀏覽器的數(shù)據(jù)包。?
??? 在用戶登錄前,遠程瀏覽器必須獲得XWebServer中的Web資源home.html,
由此才能進行登錄和控制。GET為其請求數(shù)據(jù)包中的第一個詞,表示這個請求是用來接收Web資源的。XWebServer僅對HTTP請求的第一行Get/home.html/HTTP1.0進行檢查和解釋。因為除了數(shù)據(jù)外,所有的響應信息數(shù)據(jù)都是常量。服務器的響應數(shù)據(jù)包已經(jīng)由程序定制好,存放在XWebServer中。響應的HTTP數(shù)據(jù)頭和資源一起存放在E2PROM中。服務器與瀏覽器的鏈接建立后,服務器檢查接收的請求數(shù)據(jù),然后調(diào)用E2PROM的程序模塊,將home.html的內(nèi)容發(fā)送給遠程瀏覽器。Web頁的存儲范圍為0000H~7FF0H,大約32KB,而8字節(jié)的用戶名和8字節(jié)的密碼可以存放在外圍E2PROM存儲區(qū)末端(7FF0H~8000H)。E2PROM的資源分布如圖5所示。?
??? 在處理瀏覽器提交的數(shù)據(jù)信息時,按照以下兩個步驟進行程序設計:首先,服務器要根據(jù)遠程瀏覽器傳送過來的數(shù)據(jù)信息,決定服務器的HTTP服務的方式;其次,將Web資源發(fā)送給遠程瀏覽器或使用ProcessPostData函數(shù)來處理瀏覽器提交的數(shù)據(jù)。?
??? 在TCP連接的初始化完成后,在應用層的用戶登錄程序使用函數(shù)TCPAppRxData()來接收傳輸層的數(shù)據(jù)。這個函數(shù)對數(shù)據(jù)包中收到的字節(jié)都調(diào)用一次。用戶程序首先檢查ASCII碼是P還是G以確定XWebServer對HTTP服務的方式。在服務器接收的數(shù)據(jù)包中,P表示以Post 開始的用戶提交的數(shù)據(jù)信息第一個ASCII碼;G表示以Get開始的用戶請求Web資源的第一個ASCII碼,缺省的HTTP服務的方式是Get,即XWebServer響應遠程瀏覽器對Web資源的請求。程序通過設定標志位HTTP_METHOD來確定HTTP服務的方式。確定HTTP服務方式的流程如圖6所示。?
?

?
??? 圖6中的ProcessPostData是處理提交數(shù)據(jù)的子程序。ProcessPostData主要由兩部分組成:一部分為登錄信息校驗和登錄標志的設定;另一部分為監(jiān)控數(shù)據(jù)的獲得并發(fā)送到SPI接口。登錄流程如圖7所示。程序必須在確認用戶成功登錄后才能對提交的控制數(shù)據(jù)進行處理,否則將錯誤指示信息err.htm發(fā)送給遠程瀏覽器。程序通過判斷數(shù)據(jù)包中提交數(shù)據(jù)區(qū)的name屬性來確定是登錄數(shù)據(jù)還是監(jiān)控數(shù)據(jù)。例如,在index.htm中,對于Username文本框,name=“u”;對于Password文本框,name=“p”。
?

?
??? 用戶在登錄和密碼文本框中輸入用戶名和密碼后提交登錄信息。校驗用戶登錄信息可通過兩種途徑:第一種途徑,系統(tǒng)上電復位后,先從E2PROM中取出用戶名和密碼存放在RAM中,當用戶程序接收到來自TCP數(shù)據(jù)包中的登錄數(shù)據(jù)后,采用逐個字節(jié)比較的方法進行用戶信息的校驗;第二種途徑,當用戶程序接收到來自TCP數(shù)據(jù)包中的登錄數(shù)據(jù)后,再按字節(jié)從E2PROM中取出用戶名和密碼進行校驗。與第二種方法相比,第一種方法能夠滿足XWebServer對實時性的要求。為提高RAM資源的利用率,在校驗結(jié)束后,用戶程序釋放16個字節(jié)的RAM資源。?
??? 處理監(jiān)控信息的流程如圖8所示。如果用戶成功登錄,就從數(shù)據(jù)區(qū)中取出監(jiān)控用的數(shù)據(jù),直接送到SPI接口,否則給出錯誤信息err.htm。用戶服務程序并不對數(shù)據(jù)區(qū)中的數(shù)據(jù)進行解釋,只是將其按原始的排列方式從SPI接口輸出。在整體數(shù)據(jù)流動的過程中,XWebServer起到了從以太網(wǎng)數(shù)據(jù)流到SPI接口數(shù)據(jù)流的轉(zhuǎn)換作用。?
?

?
??? 以太網(wǎng)作為接口,以SX52BD為硬件平臺,利用軟件化的嵌入式TCP/IP,能夠?qū)崿F(xiàn)HTTP服務。SX-Stack在家電網(wǎng)絡接入Internet中的應用,為其接入Internet提供了一種無需額外的PC或網(wǎng)關設備的解決方案。這種低成本、高性能的方案,具有可靠、靈活的特點,適用于通訊速率不大于56Kbps、允許時延大于1秒、需要連接Internet的家庭自動化設備。用戶可以根據(jù)需要,按照本文提供的方法,構(gòu)造自己的網(wǎng)絡服務器,可為普通的電氣設備或系統(tǒng)如公共服務設備、家庭醫(yī)療保健設備、工業(yè)自動化系統(tǒng)等,賦予接入Internet的能力。?
參考文獻?
1 Ubicom, Inc. SX48BD/SX52BD Datasheet. 2000,3 ?
2 Ubicom,Inc.Ethernet SX-Stack Internet Connectivity User's?Manual. 2000,11?
3 Ubicom, Inc. Christopher Waters.HTTP Virtual Peripheral?Implementation. 2000.9?
4 郭 旭.Home.Net 模型/架構(gòu)研究.單片機與嵌入式系統(tǒng)應用, 2001;(6)
