新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 通用可靠的串口/以太網(wǎng)網(wǎng)關(guān)設(shè)計(jì)

通用可靠的串口/以太網(wǎng)網(wǎng)關(guān)設(shè)計(jì)

作者: 時(shí)間:2012-07-18 來(lái)源:網(wǎng)絡(luò) 收藏

摘要:介紹了一種嵌入式方案,詳細(xì)討論了通信的實(shí)現(xiàn)方法,并在開(kāi)源操作系統(tǒng)RTThread和微處理器S3C2 440開(kāi)發(fā)板的軟硬件平臺(tái)上實(shí)現(xiàn)。實(shí)際應(yīng)用于一個(gè)無(wú)線傳感器網(wǎng)絡(luò)項(xiàng)目,實(shí)驗(yàn)表明該能實(shí)現(xiàn)的數(shù)據(jù)通信。
關(guān)鍵詞:網(wǎng)關(guān);串口通信;RT-Thread;S3C2440

引言
隨著物聯(lián)網(wǎng)的蓬勃發(fā)展,越來(lái)越多的傳統(tǒng)本地設(shè)備或網(wǎng)絡(luò)有接入計(jì)算機(jī)網(wǎng)絡(luò)的需求,而這些傳統(tǒng)沒(méi)備一般都是不具備網(wǎng)絡(luò)接口的非IP設(shè)備。最常用的通信接口是串口,不能直接接入計(jì)算機(jī)網(wǎng)絡(luò),在不改變這些原有設(shè)備的基礎(chǔ)上,使用串口/網(wǎng)關(guān)來(lái)接入計(jì)算機(jī)網(wǎng)絡(luò)的方式不失為一種比較好的解決方案。

本文引用地址:http://butianyuan.cn/article/148750.htm

a.JPG


基于此需求,和實(shí)現(xiàn)了串口/以太網(wǎng)網(wǎng)關(guān),網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。實(shí)現(xiàn)了非IP設(shè)備與IP設(shè)備間的數(shù)據(jù)通信,并特別考慮了串口通信的可靠性,從軟件和硬件兩方面詳細(xì)討論了保證串口通信可靠性的方法。IP端通信的可靠性由TCP/IP協(xié)議保證,這樣就保證了串口設(shè)備與IP設(shè)備間通信的可靠性。

1 網(wǎng)關(guān)工作原理
1.1 概 述
網(wǎng)關(guān)實(shí)現(xiàn)串口設(shè)備和以太網(wǎng)之間的協(xié)議轉(zhuǎn)換,具體表現(xiàn)為幀格式的轉(zhuǎn)換,可表示為:
Socket幀←→凈荷數(shù)據(jù)←→串口幀
其中Socket(套接字)幀和串口幀郜是為實(shí)現(xiàn)網(wǎng)關(guān)可靠通信而自定義格式的幀,凈荷數(shù)據(jù)為真正需要傳送的應(yīng)用數(shù)據(jù)。
網(wǎng)關(guān)的數(shù)據(jù)通信可分為兩部分:網(wǎng)絡(luò)端和串口端,要保證整個(gè)網(wǎng)關(guān)通信的可靠性,那么就要分別保證網(wǎng)絡(luò)端和串口端通信的可靠性。
在網(wǎng)絡(luò)端,網(wǎng)關(guān)使用了流式套接字。流式套接字使用TCP協(xié)議,而TCP協(xié)議是面向連接的,保證了數(shù)據(jù)傳輸?shù)恼_性和順序性。所以,流式的套接字可以提供可靠的、面向連接的通信流。但是,流式數(shù)據(jù)對(duì)應(yīng)用來(lái)說(shuō)不易使用,所以Socket數(shù)據(jù)傳送都是基于幀格式的。
在串口端,串口數(shù)據(jù)傳送本質(zhì)上也是字節(jié)流式的,在硬件層次是不可靠的,而且不能保證數(shù)據(jù)的完整性,需要在軟件上有一些其他機(jī)制來(lái)保證可靠性。所以,網(wǎng)關(guān)串口的數(shù)據(jù)傳送同樣基于幀格式,并且使用了接收確認(rèn)、超時(shí)重發(fā)、差錯(cuò)校驗(yàn)等機(jī)制來(lái)保證可靠性。

b.JPG


圖2為網(wǎng)關(guān)工作時(shí)的數(shù)據(jù)流示意圖。圖中3個(gè)帶箭頭的橢圓表示3個(gè)線程,圖中未畫出建立Socket連接、串口初始化和線程啟動(dòng)等過(guò)程。

tcp/ip相關(guān)文章:tcp/ip是什么



上一頁(yè) 1 2 3 4 下一頁(yè)

評(píng)論


相關(guān)推薦

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

關(guān)閉