新聞中心

EEPW首頁 > 手機與無線通信 > 設(shè)計應(yīng)用 > 嵌入式網(wǎng)絡(luò)數(shù)據(jù)轉(zhuǎn)換系統(tǒng)的研究與開發(fā)

嵌入式網(wǎng)絡(luò)數(shù)據(jù)轉(zhuǎn)換系統(tǒng)的研究與開發(fā)

作者: 時間:2006-07-31 來源:網(wǎng)絡(luò) 收藏
摘要 在工業(yè)控制和消費電子領(lǐng)域,目前許多設(shè)備要求具備以太網(wǎng)或者與Internet通信功能。本文討論一種基于TINI的以太網(wǎng)接入方案。此可以很方便地擴展到其他通信協(xié)議的,諸如CAN、1-Wire等,以適應(yīng)不同設(shè)備接入以太網(wǎng)的需要。利用本可以很好地解決與自動化生產(chǎn)設(shè)備、開關(guān)和傳感器的遠程通信問題,以及實現(xiàn)遠程診斷與控制。另外,介紹了利用Java作為工具來串口到以太網(wǎng)的通信程序。
關(guān)鍵詞 TINI Java DP83846A DS80C400

為了達到利用Internet強大的網(wǎng)絡(luò)功能,實現(xiàn)遠程監(jiān)控的目的,需要合理的網(wǎng)絡(luò)接人方案。利用基于TINI平臺的,搭建不同設(shè)備接人計算機網(wǎng)絡(luò)的橋梁。利用系統(tǒng)強大的軟硬件功能,可以支持不同的設(shè)備,實現(xiàn)接入方案的通用性。由于系統(tǒng)具備較好的處理能力,不僅可以作為簡單的網(wǎng)絡(luò)接口,還可以擴展接人設(shè)備的網(wǎng)絡(luò)功能,甚至于還可以對通信的數(shù)據(jù)進行加密等處理。

嵌入式系統(tǒng)包括專用的硬件和軟件部分,硬件提供性能的支持,而軟件則為用戶提供廣泛的靈活性。嵌入式系統(tǒng)的軟件包括其自身的操作系統(tǒng)和編程環(huán)境。Java所具有的各種特性使它成為嵌入式設(shè)備理想的軟件工具。針對Java有很多免費開放的資源,Java獨立于硬件平臺,具備可移植性。這一切都可以降低嵌入式設(shè)備開發(fā)和使用的成本。其中TINI平臺就是一種具備Java開發(fā)功能的嵌入式系統(tǒng)。

1 系統(tǒng)硬件組成
基于TINI數(shù)據(jù)轉(zhuǎn)換系統(tǒng)的硬件系統(tǒng)如圖1所示。系統(tǒng)與外界的接口主要是RS232的串口和RJ45的以太網(wǎng)接口,其功能就是將串口設(shè)備接人到局域網(wǎng)絡(luò)甚至于Interne。

2 網(wǎng)絡(luò)數(shù)據(jù)轉(zhuǎn)換系統(tǒng)的Java程序
2.1 軟件開發(fā)工具包――TlNI SDK

為了在編程中實現(xiàn)對硬件的訪問,Dallas公司開發(fā)的TINI SDK將DS80C400中的硬件部分虛擬為Java的類。通過調(diào)用相關(guān)的方法來實現(xiàn)對硬件的操作。SDK中包含Dallas公司開發(fā)的嵌入式操作系統(tǒng)。它是多任務(wù)、多線程、具有跨平臺的能力、擁有高度優(yōu)化的Java運行環(huán)境的操作系統(tǒng)。

在TINI SDK的支持下開發(fā)應(yīng)用程序,主要采用Java進行,通常不直接面對匯編語言,但是TINI運行環(huán)境提供了使用本地方法的機制。為了優(yōu)化嚴格要求速度的通道或訪問底層硬件,可以使用本地語言(主要是匯編語言)來編寫子程序,這樣增加了系統(tǒng)的靈活性。

利用SDK中提供的API可以簡化編程。利用SDK中提供的JavaKit和TINIConvertor等工具,在PC上進行程序的開發(fā)調(diào)試工作,生成適用于TINI運行環(huán)境的目標應(yīng)用程序。通過JayaKit向TINI硬件存儲器中裝載TINI的運行環(huán)境(包括TINI的操作系統(tǒng)),配置好網(wǎng)絡(luò)參數(shù),即可通過FTP、TELNET等下載用戶程序到TINI硬件上并控制運行。TINI的Java虛擬機將Java字節(jié)碼轉(zhuǎn)換成為機器硬件系統(tǒng)能夠執(zhí)行的代碼。

2.2系統(tǒng)程序的設(shè)計方法

為了實現(xiàn)串口數(shù)據(jù)和以太網(wǎng)絡(luò)數(shù)據(jù)之間的交換,設(shè)計了基于TINI系統(tǒng)的網(wǎng)絡(luò)數(shù)據(jù)轉(zhuǎn)換程序。該程序的主要功能是,從串口設(shè)備讀取數(shù)據(jù),將所得到的數(shù)據(jù)進行TcP/IP協(xié)議封裝,通過RJ45的接口發(fā)送到上位機,與上位機的服務(wù)器程序進行交互;同時,將上位機發(fā)送給TINI的數(shù)據(jù)轉(zhuǎn)發(fā)到RS232的串口,進而可通過網(wǎng)絡(luò)遠程監(jiān)控現(xiàn)場的串口設(shè)備。本設(shè)計中,TINI印刷電路板上有兩個串口,分別定義為串口O和串口4。單片機內(nèi)部集成UART,串口0用來串口啟動TINl,下載TINI運行環(huán)境,以及作為TINI的輸出終端。本程序中,利用串口4和上位機服務(wù)器程序交互。

數(shù)據(jù)轉(zhuǎn)換由兩個進程來實現(xiàn),它們分別是SerialWriter和SerialReader。SerialWritel的功能是從上位機服務(wù)器讀取數(shù)據(jù)流,再把數(shù)據(jù)寫到串口輸出數(shù)據(jù)流;SeriaReader的功能是把串口緩沖區(qū)中的可用數(shù)據(jù)讀到輸入緩沖區(qū),通過向網(wǎng)絡(luò)輸出流寫數(shù)據(jù)把串口數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)服務(wù)器,并且更新串口數(shù)據(jù)量;同時監(jiān)視這兩個進程有無異常。如果捕捉到異常,便關(guān)閉數(shù)據(jù)流并中斷維持線程,結(jié)束程序。

SerialToEthernet本身繼承了一個線程類。它是一個維持線程,功能是判斷系統(tǒng)通信狀態(tài)。如果正常,則每隔6 s打印輸出數(shù)據(jù)流量;如果連接的服務(wù)器被關(guān)閉,則關(guān)閉串口socket及相關(guān)的流。它的線程程序中,是一個有系統(tǒng)運行狀態(tài)標志控制的循環(huán),維持程序運行,每一次循環(huán)中首先使該進程睡眠6 000 ms,然后打印輸出此時的數(shù)據(jù)流量。程序的流程如圖2、圖3、圖4所示。

3 系統(tǒng)調(diào)試方案
系統(tǒng)調(diào)試的主要目的是模擬現(xiàn)場設(shè)備與以太網(wǎng)之間的數(shù)據(jù)轉(zhuǎn)換,將PC機通過串口與以太網(wǎng)接口與系統(tǒng)相連,接線方式如圖5所示;用PC機模擬現(xiàn)場的設(shè)備,同時,利用PC機作為上位機監(jiān)控系統(tǒng)運行。

實驗中除了運行SerialToEthernet外,還準備了兩個簡單的用戶程序,用于系統(tǒng)調(diào)試,分別是HelloWorld和Blinky。
第一步,下載運行HelloWorld。其功能是在以JavaKit作為TINI的系統(tǒng)輸出終端(類似于PC機的顯示器),打印輸出“Hello World”的字符串,用于檢驗串口O。
第二步,下載運行Blinky。它的功能是與P3.5相連的LED不停閃爍,用于檢驗I/0口的功能。
第三步,下載運行SerialToEthernet,同時運行上位機上服務(wù)器程序TINlServer。TINI系統(tǒng)上運行Serial-ToEthernet,用于實現(xiàn)數(shù)據(jù)轉(zhuǎn)發(fā)功能。為了驗證上位機與TINI問的串口通信,上位機上運行串口調(diào)試程序,從而用上位機模擬實際的現(xiàn)場串口設(shè)備。運行串口調(diào)試程序時,在其中把串口設(shè)為與TINI的串口參數(shù)相同,發(fā)送模式設(shè)為連續(xù)發(fā)送。在這樣的模擬情況下,從串口調(diào)試程序窗口輸入的數(shù)據(jù),通過串口發(fā)送給TINI系統(tǒng),經(jīng)過TINI的轉(zhuǎn)發(fā),通過RJ45接口發(fā)往上位機。上位機運行服務(wù)器程序TINIServer,它將TINI發(fā)來的數(shù)據(jù)不經(jīng)處理直接通過輸出流發(fā)送給TINI。經(jīng)過TINI的轉(zhuǎn)發(fā),數(shù)據(jù)再次由串口返回上位機,顯示在串口調(diào)試程序的“接收區(qū)”中。數(shù)據(jù)流向如圖6所示。

4 結(jié)論
與傳統(tǒng)的工業(yè)控制數(shù)據(jù)轉(zhuǎn)換系統(tǒng)相比,TINI更加廉價,更加緊湊,消耗功率更低,并且易于維護。此外,TINI還支持許多底層的通信接口,具有足夠的靈活性,可以適應(yīng)不同聯(lián)網(wǎng)的要求?;赥INI的網(wǎng)絡(luò)數(shù)據(jù)轉(zhuǎn)換系統(tǒng)方案是低成本而且可靠的。利用Java編程可以提高嵌入式系統(tǒng)軟件開發(fā)的效率。在本系統(tǒng)的開發(fā)過程中。利用Java軟件很方便地實現(xiàn)對底層硬件的訪問;利用Java自身的特性,可以實現(xiàn)強大的網(wǎng)絡(luò)功能。

對于設(shè)備來說,通過本系統(tǒng)可以利用現(xiàn)有的網(wǎng)絡(luò)擴展其功能;同時也可以利用以太網(wǎng)絡(luò)實現(xiàn)對設(shè)備的遠程診斷控制,實現(xiàn)更加廣泛意義上的網(wǎng)絡(luò)化。

linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉