隨著因特網(wǎng)和通信產(chǎn)業(yè)的迅猛發(fā)展, 人們的生活、工作、思維方式都發(fā)生了巨大變化。 嵌入式系統(tǒng)給信息社會(huì)帶來(lái)了新的生機(jī), 而嵌入式Internet 技術(shù)的出現(xiàn)和發(fā)展無(wú)疑給這種趨勢(shì)起到了推波助瀾的作用。
目前, 隨著互聯(lián)網(wǎng)技術(shù)應(yīng)用的日益廣泛, 網(wǎng)絡(luò)傳輸已經(jīng)成為一種最為經(jīng)濟(jì)有效的數(shù)據(jù)傳輸方式,越來(lái)越多的設(shè)備需要配置網(wǎng)絡(luò)接入功能, 以實(shí)現(xiàn)對(duì)系統(tǒng)的遠(yuǎn)程監(jiān)測(cè)和數(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)測(cè)數(shù)據(jù)存儲(chǔ)在非易失性存儲(chǔ)器中, 并及時(shí)發(fā)布到互聯(lián)網(wǎng)上更新監(jiān)測(cè)網(wǎng)頁(yè)。 用戶可以通過(guò)Internet 訪問(wèn)系統(tǒng)Web 服務(wù)器遠(yuǎn)程獲取所需信息, 實(shí)現(xiàn)有效的遠(yuǎn)程監(jiān)控和信息處理。
1 串口以太網(wǎng)數(shù)據(jù)的轉(zhuǎn)換
近年來(lái), 互聯(lián)網(wǎng)以其高速便捷傳輸數(shù)據(jù)的特點(diǎn)越來(lái)越受到人們的青睞。 而在工控和通信設(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)通信距離可以無(wú)限延長(zhǎng), 并且相對(duì)RS 標(biāo)準(zhǔn)的通信抗干擾能力差, 信息傳輸容易出錯(cuò), 網(wǎng)絡(luò)是基于復(fù)雜環(huán)境設(shè)計(jì)的, 具有自動(dòng)糾錯(cuò)功能, 通信質(zhì)量穩(wěn)定不易受外界干擾。 因此, 將串口數(shù)據(jù)通過(guò)網(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ò)通道, 無(wú)需過(guò)早淘汰現(xiàn)有串口設(shè)備, 提高設(shè)備利用率。 各種轉(zhuǎn)換器完成的是一個(gè)面向RS 標(biāo)準(zhǔn)的鏈接和無(wú)連接的以太網(wǎng)通信數(shù)據(jù)存儲(chǔ)控制器, 對(duì)各種來(lái)自串口設(shè)備的數(shù)據(jù)流進(jìn)行格式轉(zhuǎn)換使之成為可以在以太網(wǎng)中傳播的數(shù)據(jù)幀并對(duì)來(lái)至以太網(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), 不是簡(jiǎn)單的物理層和數(shù)據(jù)鏈路層的轉(zhuǎn)換, 而是串口的數(shù)據(jù)作為TCP/IP 的應(yīng)用層數(shù)據(jù), 用TCP/IP 封裝傳輸?shù)姆绞健?如用戶通過(guò)socket 的recv()和send()函數(shù)接收和發(fā)送的實(shí)際是應(yīng)用層數(shù)據(jù)。 但是TCP/IP 并不只是recv()和send()這么簡(jiǎn)單, 根據(jù)工作模式的不同, 它關(guān)系到連接、監(jiān)聽(tīng)、關(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)系到將多長(zhǎng)的串口數(shù)據(jù)打包后作為一個(gè)以太網(wǎng)數(shù)據(jù)包發(fā)送的問(wèn)題。 目前主要采用數(shù)據(jù)包長(zhǎng)度或數(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á)到通過(guò)網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)傳輸?shù)囊螅?首先要正確設(shè)置RTL8019AS 的工作方式和狀態(tài), 通過(guò)對(duì)相應(yīng)地址和數(shù)據(jù)端口的讀寫操作完成以太網(wǎng)幀的接受和發(fā)送。 RTL8019AS 內(nèi)部具有遠(yuǎn)程DMA 接口、本地DMA 接口、MAC 邏輯、數(shù)據(jù)編碼解碼邏輯和其他端口。 遠(yuǎn)程DMA 接口是MCU 對(duì)網(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í), 先將一幀通過(guò)遠(yuǎn)程DMA 通道送到網(wǎng)卡的發(fā)送緩沖區(qū), 然后發(fā)送傳送命令, 待網(wǎng)卡發(fā)送完上一幀數(shù)據(jù)后, 在開(kāi)始發(fā)送當(dāng)前幀。 (2)網(wǎng)卡接收到的數(shù)據(jù)通過(guò)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ī)制。 對(duì)外直接連接Internet, 對(duì)內(nèi)連接串口終端, 并提供Web服務(wù)和用戶交互。 用戶可通過(guò)網(wǎng)頁(yè)形式向服務(wù)器發(fā)送指令。 系統(tǒng)接收到信息后進(jìn)行協(xié)議分析轉(zhuǎn)換, 并向相應(yīng)的串口終端發(fā)送控制命令。 串口終端執(zhí)行完相關(guān)操作后, 將執(zhí)行結(jié)果通過(guò)Web 服務(wù)器以網(wǎng)頁(yè)形式反饋給用戶。
嵌入式Web 服務(wù)器主要構(gòu)成有: 微控制芯片(S3C44B0X), 以太網(wǎng)控制芯片(RTL8019AS), 多串口協(xié)議處理器, 外擴(kuò)Flash ROM芯片等。 外擴(kuò)ROM用于存放IP 地址, 網(wǎng)卡物理地址和其他相關(guān)參數(shù), 同時(shí)還可以保存程序和網(wǎng)頁(yè)數(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極低的功耗和簡(jiǎn)單的全靜態(tài)設(shè)計(jì)使其非常適合低成本和對(duì)功耗敏感的項(xiàng)目。
2.2.2 網(wǎng)絡(luò)連接
網(wǎng)絡(luò)控制器采用Realtek 公司的網(wǎng)絡(luò)接口芯片RTL8019AS 進(jìn)行網(wǎng)絡(luò)連接, 通過(guò)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)對(duì)網(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)單級(jí)數(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)很大開(kāi)銷, 為使主控制器從繁重的I/O 事務(wù)中解脫出來(lái), 同時(shí)使串口設(shè)備能夠靈活的與主控制器進(jìn)行通信, 引入了嵌入式串口協(xié)議處理器的本串口模塊, 如圖3 所示。 其主要負(fù)責(zé)多個(gè)串口設(shè)備的數(shù)據(jù)采集和控制, 完成對(duì)串口數(shù)據(jù)流的電平轉(zhuǎn)換和數(shù)據(jù)格式處理, 判斷串行數(shù)據(jù)的起始位及停止位, 完成對(duì)數(shù)據(jù)和校驗(yàn)位的提取, 在電路設(shè)計(jì)上采用MAX232/485 芯片實(shí)現(xiàn)對(duì)相應(yīng)電平的轉(zhuǎn)換。
圖3 MCU 與串口模塊的連接。
主處理器S3C44B0X 的兩路UART 接口, 通過(guò)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)部寄存器, 用來(lái)存放收發(fā)數(shù)據(jù)以及配置該串口的工作模式, 需要在初始化時(shí)對(duì)各寄存器進(jìn)行配置, 工作模式有中斷模式和定時(shí)查詢模式, 中斷模式實(shí)時(shí)性能好, 適于緊急情況, 定時(shí)查詢方式具備一般實(shí)時(shí)性, 數(shù)據(jù)不丟失。 本文采用中斷和并行方式通信, 提高通信速度; 發(fā)送、接收和控制信號(hào)通過(guò)光耦器和5V DC/DC 隔離電源模塊完全隔離,防止外部信號(hào)對(duì)CPU 等核心電路的干擾, 4 路串口分別通過(guò)短路塊實(shí)現(xiàn)RS232 和RS485 通信方式的切換。
2.3 軟件設(shè)計(jì)
2.3.1 系統(tǒng)流程
為了實(shí)現(xiàn)用戶通過(guò)Internet 遠(yuǎn)程訪問(wè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 地址, 用戶可以通過(guò)該地址實(shí)現(xiàn)遠(yuǎn)端控制。 同時(shí)為了保證網(wǎng)絡(luò)正常工作, 系統(tǒng)需要監(jiān)聽(tīng)網(wǎng)絡(luò)狀態(tài), 對(duì)從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)核的一種開(kāi)源操作系統(tǒng),不同的是它可以滿足沒(méi)有內(nèi)存管理單元(MMU)的微處理器的需要, 并且具有良好的可移植性, 由于采用模塊化內(nèi)核設(shè)計(jì), 許多功能可以獨(dú)立加上或卸下, 以達(dá)到節(jié)省資源實(shí)現(xiàn)所需的目的。 對(duì)于不同的處理器和開(kāi)發(fā)板, uClinux 的移植[5]可分為3 個(gè)層次:
架構(gòu)級(jí): 目前uClinux 能支持較多的體系結(jié)構(gòu),但如果要移植的處理器不在uClinux 支持的處理器體系之內(nèi), 則需要添加或修改linux/arch 目錄下相關(guān)處理器架構(gòu)的文件, 包括中斷處理、內(nèi)存映射的維護(hù)、任務(wù)上下文切換和初始化過(guò)程等。
平臺(tái)級(jí): 對(duì)于uClinux 已支持體系的分支處理器,則需要在相關(guān)體系結(jié)構(gòu)目錄下建立相應(yīng)目錄并參照同一架構(gòu)其他系列的處理器編寫相應(yīng)代碼。
板級(jí): 對(duì)于uClinux 支持的處理器, 只需要板級(jí)移植了。 針對(duì)不同的開(kāi)發(fā)板硬件資源完成驅(qū)動(dòng)程序編寫和環(huán)境變量設(shè)置等內(nèi)容。
本文采用的 uClinux2.4.x 版本并不支持S3C44B0X 處理器, 參照其對(duì)同一ARM 架構(gòu)下S3C4510 處理器的支持, 對(duì)內(nèi)核進(jìn)行改寫使其支持S3C44B0X 處理器, 移植過(guò)程中通過(guò)配置相應(yīng)模塊和修改源代碼[6]實(shí)現(xiàn)了對(duì)串口和網(wǎng)絡(luò)的支持。 另外, 本文還同時(shí)移植了引導(dǎo)加載程序(uboot1.1.4)和uClinux的根文件系統(tǒng)ROMFS.
Boa 是基于GNU/Linux 平臺(tái)的嵌入式Web 服務(wù)器[7], 速度和安全是它的最大特點(diǎn)。 Boa 源碼開(kāi)放、性能優(yōu)秀、支持CGI, 特別適合應(yīng)用在嵌入式系統(tǒng)中。
Boa 的移植有兩種方式:
① 針對(duì)ARM9 平臺(tái)網(wǎng)上下載BOA 源碼, 編譯成bin 文件后, 把二進(jìn)制代碼放進(jìn)根文件系統(tǒng)里, 再配置boa.conf 既可。
② 針對(duì)uClinux 在編譯內(nèi)核時(shí), 定制用戶程序, 選中BOA, 然后編譯內(nèi)核下到開(kāi)發(fā)板中, ARM7 一般采用此方法。
為了便于Boa 服務(wù)器的調(diào)試修改二次編譯, 本文直接將uClinux 源代碼下的boa 文件夾拷貝出來(lái), 采用類似ARM9 的編譯方式。 然后通過(guò)移植CGI205 庫(kù)以實(shí)現(xiàn)應(yīng)用程序與Web 服務(wù)器的交互, 從而實(shí)現(xiàn)客戶端對(duì)服務(wù)器端的操作。 簡(jiǎn)單來(lái)說(shuō), CGI 程序的工作過(guò)程[8]
包含以下步驟(如圖6 所示):
① 客戶端通過(guò)瀏覽器把請(qǐng)求發(fā)送到web 服務(wù)器;② Web 服務(wù)器接收請(qǐng)求后, 將請(qǐng)求信息發(fā)送給指定的CGI 程序;③ CGI 程序?qū)蛻舳说恼?qǐng)求進(jìn)行處理, 并把處理結(jié)果傳送給web 服務(wù)器;④ Web 服務(wù)器把CGI 程序的處理結(jié)果返回給客戶端瀏覽器。
圖6 CGI 技術(shù)工作流程
2.3.3 串口模塊
串口終端的運(yùn)行需要對(duì)44B0X 微處理器編程, 主要完成串口模塊的數(shù)據(jù)交換, 處理系統(tǒng)發(fā)來(lái)的指令,返回操作結(jié)果等功能。
3 結(jié)語(yǔ)
當(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ī)制, 用戶可以通過(guò)Internet 瀏覽訪問(wèn)控制頁(yè)面, 不在需要專門的軟件, 使系統(tǒng)的訪問(wèn)和操作更加便捷。 采用MCU 片內(nèi)可編程技術(shù), 使系統(tǒng)功能可調(diào), 具有良好的可擴(kuò)展性, 可應(yīng)用于不同場(chǎng)合。
② 將串口設(shè)備實(shí)現(xiàn)網(wǎng)絡(luò)化的傳輸, 避免在網(wǎng)絡(luò)化趨勢(shì)下串口設(shè)備過(guò)早被淘汰, 實(shí)現(xiàn)了產(chǎn)品升級(jí), 節(jié)約成本。
嵌入式Web 系統(tǒng)實(shí)現(xiàn)互聯(lián)網(wǎng)接入, 可以方便的將終端設(shè)備所采集的各種數(shù)據(jù)通過(guò)網(wǎng)絡(luò)快速傳遞給上位機(jī), 控制終端用戶可以隨時(shí)訪問(wèn)Web 服務(wù)器提供的最新網(wǎng)頁(yè), 實(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)測(cè), 大壩水位的實(shí)時(shí)觀測(cè)等, 為遠(yuǎn)程監(jiān)控和數(shù)據(jù)集中處理提供了一種新的選擇。
-
嵌入式
+關(guān)注
關(guān)注
5086文章
19142瀏覽量
306036 -
監(jiān)控
+關(guān)注
關(guān)注
6文章
2216瀏覽量
55250 -
服務(wù)器
+關(guān)注
關(guān)注
12文章
9222瀏覽量
85606
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論