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