通用可靠的串口/以太網(wǎng)網(wǎng)關(guān)設(shè)計
摘要:介紹了一種串口/以太網(wǎng)嵌入式網(wǎng)關(guān)的設(shè)計方案,詳細(xì)討論了串口可靠通信的實(shí)現(xiàn)方法,并在開源操作系統(tǒng)RTThread和微處理器S3C2 440開發(fā)板的軟硬件平臺上實(shí)現(xiàn)。網(wǎng)關(guān)實(shí)際應(yīng)用于一個無線傳感器網(wǎng)絡(luò)項(xiàng)目,實(shí)驗(yàn)表明該網(wǎng)關(guān)能實(shí)現(xiàn)可靠的數(shù)據(jù)通信。
關(guān)鍵詞:串口/以太網(wǎng)網(wǎng)關(guān);可靠串口通信;RT-Thread;S3C2440
引言
隨著物聯(lián)網(wǎng)的蓬勃發(fā)展,越來越多的傳統(tǒng)本地設(shè)備或網(wǎng)絡(luò)有接入計算機(jī)網(wǎng)絡(luò)的需求,而這些傳統(tǒng)沒備一般都是不具備網(wǎng)絡(luò)接口的非IP設(shè)備。最常用的通信接口是串口,不能直接接入計算機(jī)網(wǎng)絡(luò),在不改變這些原有設(shè)備的基礎(chǔ)上,使用串口/以太網(wǎng)網(wǎng)關(guān)來接入計算機(jī)網(wǎng)絡(luò)的方式不失為一種比較好的解決方案。
基于此需求,設(shè)計和實(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ò)端和串口端,要保證整個網(wǎng)關(guān)通信的可靠性,那么就要分別保證網(wǎng)絡(luò)端和串口端通信的可靠性。
在網(wǎng)絡(luò)端,網(wǎng)關(guān)使用了流式套接字。流式套接字使用TCP協(xié)議,而TCP協(xié)議是面向連接的,保證了數(shù)據(jù)傳輸?shù)恼_性和順序性。所以,流式的套接字可以提供可靠的、面向連接的通信流。但是,流式數(shù)據(jù)對應(yīng)用來說不易使用,所以Socket數(shù)據(jù)傳送都是基于幀格式的。
在串口端,串口數(shù)據(jù)傳送本質(zhì)上也是字節(jié)流式的,在硬件層次是不可靠的,而且不能保證數(shù)據(jù)的完整性,需要在軟件上有一些其他機(jī)制來保證可靠性。所以,網(wǎng)關(guān)串口的數(shù)據(jù)傳送同樣基于幀格式,并且使用了接收確認(rèn)、超時重發(fā)、差錯校驗(yàn)等機(jī)制來保證可靠性。
圖2為網(wǎng)關(guān)工作時的數(shù)據(jù)流示意圖。圖中3個帶箭頭的橢圓表示3個線程,圖中未畫出建立Socket連接、串口初始化和線程啟動等過程。
tcp/ip相關(guān)文章:tcp/ip是什么
評論