隨著因特網和通信產業的迅猛發展, 人們的生活、工作、思維方式都發生了巨大變化。 嵌入式系統給信息社會帶來了新的生機, 而嵌入式Internet 技術的出現和發展無疑給這種趨勢起到了推波助瀾的作用。
目前, 隨著互聯網技術應用的日益廣泛, 網絡傳輸已經成為一種最為經濟有效的數據傳輸方式,越來越多的設備需要配置網絡接入功能, 以實現對系統的遠程監測和數據集中處理。
本文提出了一種嵌入式Web 系統方案, 利用基于TCP/IP 協議的串口/以太網數據轉換技術實現串口設備數據的網絡化傳輸, 監測數據存儲在非易失性存儲器中, 并及時發布到互聯網上更新監測網頁。 用戶可以通過Internet 訪問系統Web 服務器遠程獲取所需信息, 實現有效的遠程監控和信息處理。
1 串口以太網數據的轉換
近年來, 互聯網以其高速便捷傳輸數據的特點越來越受到人們的青睞。 而在工控和通信設備中, 更多的卻是符合RS-232/485 標準的串行口設備。 與基于RS-232/485 標準的串行通信相比, TCP/IP 網絡具有帶寬、高速、遠距離及通信業務廣泛的優點, 而且連網通信距離可以無限延長, 并且相對RS 標準的通信抗干擾能力差, 信息傳輸容易出錯, 網絡是基于復雜環境設計的, 具有自動糾錯功能, 通信質量穩定不易受外界干擾。 因此, 將串口數據通過網絡傳輸成為串口設備網絡化進程的研發熱點。
圖1 串口以太網轉換器
串口以太網轉換器(如圖1 所示)的出現使得基于TCP/IP 的串口數據流傳輸成為可能, 它可以連接多個串口設備并將串口數據流進行選擇和處理, 把現有的RS 標準接口數據轉化成IP 端口數據, 然后IP 化管理, IP 化存取, 這樣就能將傳統的串行數據送上流行的網絡通道, 無需過早淘汰現有串口設備, 提高設備利用率。 各種轉換器完成的是一個面向RS 標準的鏈接和無連接的以太網通信數據存儲控制器, 對各種來自串口設備的數據流進行格式轉換使之成為可以在以太網中傳播的數據幀并對來至以太網的數據幀進行判斷轉換成串行數據送達相應的串口設備。 這包括三個關鍵技術:
① TCP / IP 協議的工作模式: 串行轉以太網, 不是簡單的物理層和數據鏈路層的轉換, 而是串口的數據作為TCP/IP 的應用層數據, 用TCP/IP 封裝傳輸的方式。 如用戶通過socket 的recv()和send()函數接收和發送的實際是應用層數據。 但是TCP/IP 并不只是recv()和send()這么簡單, 根據工作模式的不同, 它關系到連接、監聽、關閉等, 這是串口轉網口后需要增加處理的部分。 TCP/IP 的工作模式可以分為: TCP 服務端模式(TCP Server)、TCP 客戶端模式(TCP Client)、UDP 模式。 UDP 模式: UDP 模式是基于非連接的模式,只要有數據發送即可發送, 不需要事先連接。 TCP 模式: TCP 模式采用數據可靠傳輸機制, 所以可以保證數據基本不誤碼、不丟失。
② 串口分幀技術: 串口數據是可以連續不斷發送的, 而以太網數據則是以數據包為單位發送的。 這樣就關系到將多長的串口數據打包后作為一個以太網數據包發送的問題。 目前主要采用數據包長度或數據包間隔兩種方式。
③ 9 位技術: 以太網數據是以字節Byte 計算的每個字節都是8 位, 但是串口數據則有可能出現9 位, 第9 位常常用于區分是地址幀還是數據幀, 1 表示地址幀0 表示數據幀。 那么在當串口轉化為以太網之后, 如何將第9 位也傳送出去就成了一個關鍵技術。 在眾多的串口轉網口方案中都是將第9 位直接舍棄的, 目前據了解上海卓嵐信息科技的方案具有快速地適應9 位的功能, 其實現方法中采用了稱之為RealCom 的協議。
由于增加了第9 位, 所以串口數據不能夠直接透明地轉化為TCP/IP 應用層數據, realcom 協議將串口數據打包之后整個作為TCP/IP 的應用數據傳輸。 這樣可以在realcom協議的協議頭部加入該數據包的第9 位是1還是0 的信息, 從而實現了9 位傳輸技術。
2 嵌入式Web系統設計
2.1 系統基本工作原理
要將嵌入式接入以太網達到通過網絡進行數據傳輸的要求, 首先要正確設置RTL8019AS 的工作方式和狀態, 通過對相應地址和數據端口的讀寫操作完成以太網幀的接受和發送。 RTL8019AS 內部具有遠程DMA 接口、本地DMA 接口、MAC 邏輯、數據編碼解碼邏輯和其他端口。 遠程DMA 接口是MCU 對網卡內部RAM 進行讀寫操作的總線, 本地DMA 接口是RTL8019AS 與網線的連接通道, 完成控制器與網線的數據交換。
MAC 主要完成下面兩功能: (1)當MCU 向網上發送數據時, 先將一幀通過遠程DMA 通道送到網卡的發送緩沖區, 然后發送傳送命令, 待網卡發送完上一幀數據后, 在開始發送當前幀。 (2)網卡接收到的數據通過MAC 比較和CRC 校驗后, 由FIFO 存到接收緩沖區。 收滿一幀后, 以中斷方式通知主處理器。 當RTL8019AS 相關參數設置完畢后, 系統進入正常工作狀態, 執行與Internet 連接相關功能。
2.2 硬件設計
系統有兩部分構成: 嵌入式Web 服務器和串口終端設備, 如圖2 所示。
圖2 系統結構
嵌入式Web 是系統的核心, 采用B/S 機制。 對外直接連接Internet, 對內連接串口終端, 并提供Web服務和用戶交互。 用戶可通過網頁形式向服務器發送指令。 系統接收到信息后進行協議分析轉換, 并向相應的串口終端發送控制命令。 串口終端執行完相關操作后, 將執行結果通過Web 服務器以網頁形式反饋給用戶。
嵌入式Web 服務器主要構成有: 微控制芯片(S3C44B0X), 以太網控制芯片(RTL8019AS), 多串口協議處理器, 外擴Flash ROM芯片等。 外擴ROM用于存放IP 地址, 網卡物理地址和其他相關參數, 同時還可以保存程序和網頁數據。
2.2.1 微控制器(MCU)
微控制器采用Samsung 公司的16/32 位的RISC結構的s3c44b0x 芯片。 該芯片是一款高性能低成本的微處理器, 內部集成了豐富的片內外設, 包括: 8K 的cache, 可選的SRAM 控制器, 帶有握手信號的雙通道UART 和RTL時鐘。 S3C44B0X極低的功耗和簡單的全靜態設計使其非常適合低成本和對功耗敏感的項目。
2.2.2 網絡連接
網絡控制器采用Realtek 公司的網絡接口芯片RTL8019AS 進行網絡連接, 通過RJ45 接入局域網, 在經局域網聯入Internet. 44B0X 具有高達66MHZ 的主頻處理能力, 利用一個8 位I/O 作為系統數據總線直接連接RTL8019AS, 實現對網絡數據的快速封裝、編碼與發送。 RTL8019AS 通信以單字節方式, 采用8 位數據總線與MCU 進行數據交換。
2.2.3 串口控制模塊
44B0X 本身帶有2 個UART 串行接口可以模擬多串口之間的通信, 但與傳統單級數據采集系統不同,本系統串口模塊可接較多串口設備, 實現多種協議串口設備的掛接, 同時要求各設備同時工作, 但移植的uClinux 是一個桌面系統, 其串口I/O 適應能力較弱,多串口I/O 通信會占據系統很大開銷, 為使主控制器從繁重的I/O 事務中解脫出來, 同時使串口設備能夠靈活的與主控制器進行通信, 引入了嵌入式串口協議處理器的本串口模塊, 如圖3 所示。 其主要負責多個串口設備的數據采集和控制, 完成對串口數據流的電平轉換和數據格式處理, 判斷串行數據的起始位及停止位, 完成對數據和校驗位的提取, 在電路設計上采用MAX232/485 芯片實現對相應電平的轉換。
圖3 MCU 與串口模塊的連接。
主處理器S3C44B0X 的兩路UART 接口, 通過MAX232 擴展為兩路串行口, 分別為COMA 和COMB.
圖4 多串口擴展硬件結構圖
多串口通信電路采用1 片帶有收發各64 Byte 的FIFO 的擴展通用異步收發器ST16C654 擴展出4 路RS232 和RS485 通信串口COMC, COMD, COME 和COMF, 其中COMD 和COME 未在圖中表示, 其結構與COMC 和COMF 相同。 ST16C654 與S3C44B0X 之間接口如圖4 所示, 地址線選擇要進行讀寫的寄存器;數據線進行數據、命令和狀態的讀寫; 中斷信號線為4路UART 的中斷信號, 直接與MCU 的中斷引腳相連,作為接收和發送的中斷信號。 擴展的4 路串口通道,每個通道有15 個或16 個內部寄存器, 用來存放收發數據以及配置該串口的工作模式, 需要在初始化時對各寄存器進行配置, 工作模式有中斷模式和定時查詢模式, 中斷模式實時性能好, 適于緊急情況, 定時查詢方式具備一般實時性, 數據不丟失。 本文采用中斷和并行方式通信, 提高通信速度; 發送、接收和控制信號通過光耦器和5V DC/DC 隔離電源模塊完全隔離,防止外部信號對CPU 等核心電路的干擾, 4 路串口分別通過短路塊實現RS232 和RS485 通信方式的切換。
2.3 軟件設計
2.3.1 系統流程
為了實現用戶通過Internet 遠程訪問Web, 本系統在TCP/IP 協議基礎上采用B/S 通信模式進行網絡通信編程。整個服務器主程序框圖如圖5 所示。
圖5 Web 服務器的主程序框圖。
系統初始化后首先設置MCU 內部定時器工作方式, 輪詢查找串口模塊是否有數據需要接受, 再設置RTL8019AS 芯片參數連接Internet 網, 初始化成功后系統會獲得一個IP 地址, 用戶可以通過該地址實現遠端控制。 同時為了保證網絡正常工作, 系統需要監聽網絡狀態, 對從RTL8019AS 接受的數據幀進行解包分析, 根據分析結果分別進入ARP, ICMP, TCP, UDP 和HTTP 處理子程序, 將串口數據發往以太網, 使采用TCP/IP 協議的以太網內所有計算機都能收到此數據。
2.3.2 uClinux 和boa 服務器的移植
uClinux 是基于linux 內核的一種開源操作系統,不同的是它可以滿足沒有內存管理單元(MMU)的微處理器的需要, 并且具有良好的可移植性, 由于采用模塊化內核設計, 許多功能可以獨立加上或卸下, 以達到節省資源實現所需的目的。 對于不同的處理器和開發板, uClinux 的移植[5]可分為3 個層次:
架構級: 目前uClinux 能支持較多的體系結構,但如果要移植的處理器不在uClinux 支持的處理器體系之內, 則需要添加或修改linux/arch 目錄下相關處理器架構的文件, 包括中斷處理、內存映射的維護、任務上下文切換和初始化過程等。
平臺級: 對于uClinux 已支持體系的分支處理器,則需要在相關體系結構目錄下建立相應目錄并參照同一架構其他系列的處理器編寫相應代碼。
板級: 對于uClinux 支持的處理器, 只需要板級移植了。 針對不同的開發板硬件資源完成驅動程序編寫和環境變量設置等內容。
本文采用的 uClinux2.4.x 版本并不支持S3C44B0X 處理器, 參照其對同一ARM 架構下S3C4510 處理器的支持, 對內核進行改寫使其支持S3C44B0X 處理器, 移植過程中通過配置相應模塊和修改源代碼[6]實現了對串口和網絡的支持。 另外, 本文還同時移植了引導加載程序(uboot1.1.4)和uClinux的根文件系統ROMFS.
Boa 是基于GNU/Linux 平臺的嵌入式Web 服務器[7], 速度和安全是它的最大特點。 Boa 源碼開放、性能優秀、支持CGI, 特別適合應用在嵌入式系統中。
Boa 的移植有兩種方式:
① 針對ARM9 平臺網上下載BOA 源碼, 編譯成bin 文件后, 把二進制代碼放進根文件系統里, 再配置boa.conf 既可。
② 針對uClinux 在編譯內核時, 定制用戶程序, 選中BOA, 然后編譯內核下到開發板中, ARM7 一般采用此方法。
為了便于Boa 服務器的調試修改二次編譯, 本文直接將uClinux 源代碼下的boa 文件夾拷貝出來, 采用類似ARM9 的編譯方式。 然后通過移植CGI205 庫以實現應用程序與Web 服務器的交互, 從而實現客戶端對服務器端的操作。 簡單來說, CGI 程序的工作過程[8]
包含以下步驟(如圖6 所示):
① 客戶端通過瀏覽器把請求發送到web 服務器;② Web 服務器接收請求后, 將請求信息發送給指定的CGI 程序;③ CGI 程序對客戶端的請求進行處理, 并把處理結果傳送給web 服務器;④ Web 服務器把CGI 程序的處理結果返回給客戶端瀏覽器。
圖6 CGI 技術工作流程
2.3.3 串口模塊
串口終端的運行需要對44B0X 微處理器編程, 主要完成串口模塊的數據交換, 處理系統發來的指令,返回操作結果等功能。
3 結語
當今時代, 在計算機進行網絡互連的同時, 各種家電設備, 通信設備以及工業生產中的數據采集控制設備也在逐步網絡化。 本文結合當前串口設備網絡化的熱潮, 提出了一種嵌入式Web 系統方案, 實現了嵌入式系統網絡接入、信息處理、web 服務等功能。 系統具有以下特點:
① 運用web 機制, 用戶可以通過Internet 瀏覽訪問控制頁面, 不在需要專門的軟件, 使系統的訪問和操作更加便捷。 采用MCU 片內可編程技術, 使系統功能可調, 具有良好的可擴展性, 可應用于不同場合。
② 將串口設備實現網絡化的傳輸, 避免在網絡化趨勢下串口設備過早被淘汰, 實現了產品升級, 節約成本。
嵌入式Web 系統實現互聯網接入, 可以方便的將終端設備所采集的各種數據通過網絡快速傳遞給上位機, 控制終端用戶可以隨時訪問Web 服務器提供的最新網頁, 實現快速便捷的信息交互, 以瀏覽器為載體的Web 技術與嵌入式終端的結合, 必將推動嵌入式終端系統的廣泛應用。 本系統的設計可以適用于遠程工業監控, 環境溫濕度自動監測, 大壩水位的實時觀測等, 為遠程監控和數據集中處理提供了一種新的選擇。
-
嵌入式
+關注
關注
5044文章
18810瀏覽量
298397 -
監控
+關注
關注
6文章
2128瀏覽量
54882 -
服務器
+關注
關注
12文章
8694瀏覽量
84524
發布評論請先 登錄
相關推薦
評論