??? 摘? 要: 以分析和實(shí)驗(yàn)為基礎(chǔ),研究了嵌入式TCP/IP協(xié)議棧SX-Stack的結(jié)構(gòu)及運(yùn)行原理,提出了使用SX-Stack構(gòu)造單芯片嵌入式網(wǎng)絡(luò)服務(wù)器,將信息家電接入Internet的新方案。該服務(wù)器的組成、構(gòu)造方法和工作原理,并比較現(xiàn)有的使用PC/網(wǎng)關(guān)設(shè)備的接入方案,分析了該方案的優(yōu)點(diǎn)。單芯片嵌入式網(wǎng)絡(luò)服務(wù)器中SX-Stack與用戶應(yīng)用程序的接口方法,用戶登錄軟件及信息家電監(jiān)測(cè)軟件的設(shè)計(jì)方法。?
??? 關(guān)鍵詞: 嵌入式TCP/IP 單芯片 嵌入式網(wǎng)絡(luò)服務(wù)器 信息家電 Internet
?
??? SX52BD是Ubicom公司推出的RISC結(jié)構(gòu)的8位高性能CMOS微處理器,可以進(jìn)行高速運(yùn)算、靈活的I/O口控制和高效的數(shù)據(jù)操作。SX52BD具有4KB的EE/FLASH ROM和262字節(jié)的SRAM。與現(xiàn)有的8位微處理器相比,其運(yùn)算速度可達(dá)50MIPS,加上優(yōu)化的多數(shù)為單時(shí)鐘周期的指令集,SX52BD吞吐量大為提高。SX52BD比常規(guī)MCU快20倍的運(yùn)算速度、可靠的性能和可重復(fù)編程的結(jié)構(gòu),使得精簡(jiǎn)的TCP/IP能夠在其中可靠運(yùn)行。?
??? SX-Stack運(yùn)行在以SX52BD為基礎(chǔ)的硬件平臺(tái)上,是一組可配置的多種Internet協(xié)議的組合。這些協(xié)議按照分層協(xié)議棧的方式精心組織,包括應(yīng)用層的HTTP、DHCP、SMTP,傳輸層的TCP、UDP,網(wǎng)絡(luò)層的IP/ICMP、ARP,通過鏈路層和物理層(如Ethernet)進(jìn)行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)可包含任意多的子目錄,對(duì)URL的長(zhǎng)度也沒有限制。?
1 信息家電單芯片服務(wù)器方案的提出?
??? 從信息家電的遠(yuǎn)程在線訪問的角度考慮,對(duì)信息家電監(jiān)測(cè)和控制時(shí)存在兩種情況:(1)遠(yuǎn)程訪問時(shí),信息家電的通信數(shù)據(jù)量不大,56Kbps的通信速率即可滿足要求;(2)信息家電對(duì)時(shí)實(shí)性的要求不高,其時(shí)延可以在1秒以上。所以,SX-Stack提供的功能和SX52BD的處理速度能夠滿足上述條件下信息家電對(duì)接入Internet微處理器的要求。?
??? 在這種情況下,構(gòu)造了家電網(wǎng)絡(luò)服務(wù)器XWebServer,其結(jié)構(gòu)如圖2所示。XWebServer主要由三部分組成,即SX52BD微處理器、RTL8019AS以太網(wǎng)控制器、24LC256(E2PROM)。在SX52BD中運(yùn)行用戶程序和SX-Stack;在E2PROM中存放XWebServer的各種Web資源;RTL8019AS是Ethernet控制器,負(fù)責(zé)SX52BD和Ethernet的數(shù)據(jù)傳遞。在家電已具備SPI(Serial Peripheral Interface)接口的條件下,使用家庭自動(dòng)化總線HAB(Home Automation Bus)作為XWebServer與家電的接口,在HAB上使用的通
信協(xié)議為自主開發(fā)的簡(jiǎn)單家庭網(wǎng)絡(luò)協(xié)議SHNP(Simple Home Networks Protocol)。?
?

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

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

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

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

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

?
??? 以太網(wǎng)作為接口,以SX52BD為硬件平臺(tái),利用軟件化的嵌入式TCP/IP,能夠?qū)崿F(xiàn)HTTP服務(wù)。SX-Stack在家電網(wǎng)絡(luò)接入Internet中的應(yīng)用,為其接入Internet提供了一種無需額外的PC或網(wǎng)關(guān)設(shè)備的解決方案。這種低成本、高性能的方案,具有可靠、靈活的特點(diǎn),適用于通訊速率不大于56Kbps、允許時(shí)延大于1秒、需要連接Internet的家庭自動(dòng)化設(shè)備。用戶可以根據(jù)需要,按照本文提供的方法,構(gòu)造自己的網(wǎng)絡(luò)服務(wù)器,可為普通的電氣設(shè)備或系統(tǒng)如公共服務(wù)設(shè)備、家庭醫(yī)療保健設(shè)備、工業(yè)自動(dòng)化系統(tǒng)等,賦予接入Internet的能力。?
參考文獻(xiàn)?
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)研究.單片機(jī)與嵌入式系統(tǒng)應(yīng)用, 2001;(6)
