基于Linux的WEB服務器的設計與實現
嵌入式WEB服務器的主要設計思想就是將嵌入式系統和 WEB技術結合起來,將 WEB技術引入到現場測量和控制設備中,從而實現基于嵌入式 WEB服務器的控制系統。用戶可以通過現有的公共通信網絡,使用標準的 Web瀏覽器作為接口直接對現場的控制設備進行訪問,監控和維護等操作,實現了異構設備之間的跨平臺互訪。 1嵌入式 Web服務器總體設計
本文引用地址:http://www.j9360.com/article/264209.htm系統硬件設計如圖 1所示。嵌入式 WEB服務器由網絡模塊、接口模塊和存儲模塊三個部分組成。網絡模塊是整個嵌入式 WEB服務器的核心,負責完成服務器的初始化,并且在 80端口等待用戶的連接請求。根據用戶請求的類型提供相應的服務。此外還要實現電子郵件功能,用來完成自動報警和數據的保存,此外通過選擇以太網或者電話線進入 Internet。
接口模塊及存儲模塊。為了使 WEB服務器具有更好的通用性,在系統提供了一些通用接口,如 RS-232、RS-485、CAN、Modem、Ethernet。可以和不同接口的控制設備進行連接;系統提供了一個建立在外部串行 Flash芯片上的小型文件系統,主要用來存放操作系統,嵌入式 Web服務器需要發布的網頁和運行的程序。而各個接口采集的數據暫時存放在 1 M的 RAM里,每隔一定的時間就將數據通過電子郵件發送到指定的郵箱,然后覆蓋原有的數據。

?
1.1 LX972ALC網絡通訊接口電路電路設計
DS80C400網絡微控制器是目前集成度最高的 8 0 5 1器件。集成外設包括 1 0/1 0 0M以太網控制器,三個串行端口,一個 CAN 2.0B控制器, 1-Wire主機和 64個 I/O引腳。能夠通過以太網 M AC提供高達 5Mbps的吞吐率。24位尋址方式簡化了對于大容量程序或數據存儲器的訪問,支持高達 1 6 M B的連續存儲空間。 LXT972ALC是 Intel公司推出的遵循正 IEEE標準的網絡通訊接口電路,支持 10M/100M的雙絞線應用,同時也支持 100Mb/s的光纖接口;該電路提供的 MII口能很好的符合 10/100MACs。
其主要完成的是 IEEE802.3標準定義的物理編碼子層 (PCS)、物理媒體附加子層 (PMA)和物理媒體獨立子層 (PMD)的主要功能。單片機與芯片的電路如圖 2所示:
當合法的數據出現在 RXD上的時候, LXT972ALC使 RX_DV有效,當合法的數據出現在 TXD上的時候,DSS0C400使 TX_EN有效;當 LXT972ALC檢測到幀中有錯誤時,它使 RX_ER有效;當 DSSOC400緩沖器沒有準備好時,它使 TX_ER有效;當發送或者接收沒有處于空閑狀態時,LX972ALC使 CRS有效;當 LXT972AL檢測到沖突時,它使 COL有效,

?
并且在沖突期間一直保持高電平,如果 COL失效,那么 RX進入跟蹤模式。MDIO是 PHY管理數據的時鐘,MDIO是 PHY和 MAC之間控制信息的接口。 MDIO是通過軟件實現高級控制,因此必須通過并行口來實現。
1.2 Modem接口設計
本系統利用主控制器的 UART2進行模擬 Modem通信的基本過程:DS80C400先把準備寫入串行設備的數據發送到 UART的寄存器中,再通過 FIFO傳送到串行設備。 Modem接口電路我們采用芯片 MAX213EAI。MAXZ13EAI是 5V工作電源的 RS-232電平轉換芯片。它集成了 4個輸入和 5個輸出的 RS-232電平轉換口,可以很好的滿足 Modem接口標準傳輸的需要。接口電路如圖 3所示。

?
2 嵌入式
WEB服務器軟件設計從設計角度,則可將嵌入式軟件分為 4個模塊:網絡通訊模塊、接口管理模塊、人機交互模塊和遠程加載模塊。
2.1 網絡通訊模塊設計
2.1.1 以太網接入 Internet的實現
嵌入式 WEB服務器是溝通客戶和控制現場的重要橋梁,客戶通過認 Web瀏覽器來實現遠程監控的功能。本 WEB服務是以 TCP/IP協議來傳輸數據,以 HTTP協議來進行客戶端與服務器之間的請求和響應,其體系結構如圖 4所示。

?
當客戶在界面上進行操作時,如點擊復選框或在文本框中輸入數據。 Applet根據用戶的操作進行響應,從而構造出新的命令字,向嵌入式 WEB服務器發出請求,服務器根據新的命令字驅動控制系統中相應的執行機構,并將新的狀態信息和數據信息返回到客戶端,客戶端解析返回的數據,并進行實時顯示。
2.1.2公用電話網接入 Internet的實現
為保證能在無以太網環境的情況下進行通信,系統還采用了串口外接調制解調器通過電話網來實現與遠程客戶機的通信。網絡建立的實現就要用到 PPP協議(Point to Point Protocol點對點協議)。在程序運行的時候先要讀取 PPP通信的控制信息,判斷是否使用 PPP進行通信,否則默認使用 Ethernet來進行數據的傳輸。而不是同時開啟這兩種模式。
由于 PPP通信并不區分客戶端和服務器,把負責認證和 IP分配的端認為是服務器,而不需要認證和使用服務器提供 IP的端認為是客戶端。設計了 LinkManger類、PPPDaemon類、PPPModemLink類、ModemCommand類、PPPException類,用來實現 PPP通信。其中 LinkManger類:用于管理 PPP連接,啟動經由網絡接到遠端服務器的出站連接,生成一個 PPPDaemon實例用來設置 IP,驗證用戶名和密碼。并實現接收 PPP事務。
PPPModemLink類首先打開一個串口并進行初始化,初始化完成后,把一個串口的對象傳遞給 PPP,然后創建 ModemCommand對象來控制與調制解調器的串行通信,并通過 SerialPortEvenlistener接口監視 CD以檢測調制解調器是否掛起。其定義了 Modem的初始化和復位方法:initializeLink()和 resetModem()。
ModemCommand類負責和 modem具體的串行通信,其分別定義了 sendcommand()、 waitFoResponse()和 receiveCommand()方法。分別用來發送、等待和接收命令。當操作超時,則拋出 DataLinkException;waitforMatc()主要用來供 sendCommand()和 receiveCommand()進行調用,用來判斷接收到的字符串是否和匹配字符串一致。當相應操作超時,則拋出 DataLinkException。
linux操作系統文章專題:linux操作系統詳解(linux不再難懂)linux相關文章:linux教程
雙絞線傳輸器相關文章:雙絞線傳輸器原理
評論