通常,所謂的TCP/IP協議是一個四層協議系統,包括數據鏈路層、網絡層(含IP協議)、傳輸層(含TCP協議)和應用層,每一層負責不同的功能。基于TCP/IP協議可以實現多種功能應用,如: HTTP(超文本傳輸控制協議)、TELNET(遠程登錄)、 FTP(文件傳輸協議)、SMTP(簡單郵件傳送協議)、SNMP(簡單網絡管理協議)等。本文主要討論HTTP, 也就是WebServer在應用層的主要構成協議。當然,用戶也可以根據需要附加其它的協議功能。 2.1 TCP/IP協議棧的實現 IP包含編址方案,并提供尋址功能;TCP則是在不同主機的對等進程之間提供可靠的進程間通信。與TCP兩端口所連接的實體中,一端為應用程序進程或用戶,另一端則為底層協議,如IP協議。TCP在建立連接過程中采用三向握手機制,以保證數據的可靠性。 下面以ZWORLD公司的Rabbit 2000系列芯片為例,論述嵌入式WebServer的具體實現過程。Rabbit 2000系列芯片是一種高性能8位器件。由于其C語言友好指令集和快速數字處理功能,因而受到矚目。Rabbit結構以Zilog公司的原始Z80微處理器為基礎,但作了幾項改進:不像Z80指令集那樣使用16位尋址覆蓋存儲空間,而用一個20位或1MB的實際存儲空間;采取直接與靜態存儲器件相連接的方式;有3條存儲芯片選擇線路和2組寫入/輸出啟動線路;片上外設包括4個串行端口、1個子端口、40條I/O線、7個不同的定時器、精確脈沖發生硬件和電池支持的RTC。 系統硬件框架結構如圖1所示,用戶只需對應添加相關芯片及輔助設施(如電源、用戶所需外設等)即可;而軟件的實現,由于Rabbit 2000系列芯片得到Dynamic C編譯器的支持以及實現TCP/IP所需的庫文件dcrtcp.lib,因此只要會用C語言就可以進行開發。用戶關注的重點也變為網絡通信實現以后的代碼編制及優化,可以極大提高開發進度。 以下是Dynamic C實現TCP/IP協議通信的程序主體框架。程序中起始宏定義為默認IP配置信息;“memmap”句可使程序在芯片里面運行時,如同在擴展代碼窗口下被編譯;“use”句使編譯器按照庫文件配置編譯代碼。#define TCPCONFIG 1 #memmap xmem#use dcrtcp.libmain(){sock_init();for (;;) {tcp_tick(NULL);}} sock_init()和tcp_tick()都是TCP/IP函數庫的基本函數,前者為初始化TCP/IP協議棧函數,使協議棧開始處理入棧數據報;后者主要有兩個用途:① 支持后臺處理的最新信息;② 測試 TCP套接字的狀態。 可以看到利用Dynamic C提供的TCP/IP協議包,用戶可以輕松建立起TCP/IP通信。當通信建立以后,就可以在此基礎上進行后續的進一步功能擴展,開展例如HTTP、PPP等應用層的協議實現。2.2 HTTP的實現 HTTP(超文本傳輸協議)服務器可使 HTML (超文本鏈接標示語言)頁面,如Web頁等和其它文件為客戶端所使用。在Dynamic C中,HTTP由HTTP.LIB來負責實現。HTTP服務器實現的程序主體框架如下:#define TCPCONFIG 1#memmap xmem#use "dcrtcp.lib"#use "http.lib"main(){sock_init();http_init();tcp_reserveport(80);while (1) {http_handler();}} 用戶可以根據自己的需要在此程序框架上添加構成WebServer的所有其它動態或靜態元素(無論是否符合HTML標準)。限于篇幅,具體示例不再列出。小 結 在建立起相應的硬件連接以后,就可以根據不同的硬件特點,選用不同的開發工具和開發語言進行WebServer的構架工作。本文給出了目前構架WebServer的主要原理和方法,并給出Rabbit 2000系列芯片實現的具體應用,相信對讀者的實際工作會有些幫助。至于采用其它芯片或方案的實現步驟及過程大同小異,讀者可舉一反三。 參考文獻 1 UBICOM Corporation. SX52BD100 User’s Manual. 2000 2 Z-World Inc. Dynamic C User’s Manual. 2002 3 Z-World Inc. Rabbit 2000TM Microprocessor Designer''s Handbook. 2002 4 McGraw-Hill 公司. Ed Taylor. Networking Handbook. 2001
廣告服務 | 關于我們 | 網站地圖 | 分類索引 | 服務條款 | VIP會員服務 |《電氣自動化企業大全》| 版權聲明