當(dāng)前位置:首頁 > 嵌入式 > 嵌入式硬件
[導(dǎo)讀]本文設(shè)計(jì)的嵌入式網(wǎng)絡(luò) 接入方案,采用廉價(jià)的8位51單片機(jī)實(shí)現(xiàn)了簡化TCP協(xié)議和UDP協(xié)議,并支持主動(dòng)和被動(dòng)連接、跨越網(wǎng)關(guān),實(shí)現(xiàn)互聯(lián)網(wǎng)接入,在被控設(shè)備與上位控制機(jī)之間提 供了一條透明的傳輸通道,用戶不需對(duì)原有串口設(shè)備或其他數(shù)字設(shè)備做任何修改,就可享受到網(wǎng)絡(luò)的好處。

引言

在網(wǎng)絡(luò)技術(shù)應(yīng)用日益廣泛的今天,網(wǎng)絡(luò)傳輸是最經(jīng)濟(jì)有效的數(shù)據(jù)傳輸方式。如何利用廉價(jià)的51單片機(jī)來 控制網(wǎng)卡芯片進(jìn)行數(shù)據(jù)傳輸,加載TCP/IP協(xié)議連接到互聯(lián)網(wǎng),實(shí)現(xiàn)網(wǎng)絡(luò)通信成了眾多設(shè)計(jì)者的目標(biāo)。但由于指令及資源的限制,實(shí)施過程會(huì)有許多困難。我們 在設(shè)計(jì)方案中舍棄了耗費(fèi)資源的高級(jí)協(xié)議,采用發(fā)送小數(shù)據(jù)包的方式以避免分段,來簡化TCP協(xié)議和UDP協(xié)議,實(shí)現(xiàn)互聯(lián)接入。

硬件設(shè)計(jì)與實(shí)現(xiàn)

系統(tǒng)的硬件結(jié)構(gòu)框圖如圖1所示。本系統(tǒng)的微控制器是Winbond公司的78E58,網(wǎng)絡(luò)接口芯片是與NE2000系列兼容的Realtek公司的 RTL8019AS.RTL8019AS內(nèi)置了10BASE-T收發(fā)器,外接一個(gè)隔離LPF濾波器,經(jīng)RJ-45接口輸出。外部RAM是 62256,24C02是I2C總線的 EEPROM.

▲ 圖1 嵌入式協(xié)議轉(zhuǎn)換硬件框圖

系統(tǒng)的軟件設(shè)計(jì)與實(shí)現(xiàn)

為適應(yīng)上網(wǎng)的需求,系統(tǒng)軟件設(shè)計(jì)主要包括兩部分內(nèi)容:一是要執(zhí)行對(duì)RTL8019AS等的控制功能,二是要執(zhí)行與連接Internet相關(guān)的功能,實(shí)現(xiàn)TCP/IP協(xié)議。本文著重介紹第二部分,主程序采用C51語言編寫。

RTL8019AS初始化

要將嵌入式系統(tǒng)接入以太網(wǎng),首先要設(shè)置RTL8019AS的工作方式和工作狀態(tài),分配收發(fā)數(shù)據(jù)的緩沖區(qū),通過對(duì)地址及數(shù)據(jù)口的讀寫來完成以太網(wǎng)幀的接收 與發(fā)送。然后設(shè)置RTL8019AS的工作參數(shù),亦即設(shè)置內(nèi)部控制寄存器。對(duì)RTL8019AS的工作參數(shù)進(jìn)行設(shè)置完畢后,進(jìn)入正常工作狀態(tài),接下來就讀 寫RTL8019AS的RAM以完成數(shù)據(jù)包的接收和發(fā)送。由于篇幅有限,這里就不再詳述。

TCP/IP模型

TCP/IP協(xié)議是一套把Internet上的各種系統(tǒng)互連起來的協(xié)議族,保證Internet上數(shù)據(jù)的準(zhǔn)確快速傳輸。TCP/IP通常采用一種簡化的四層模型:應(yīng)用層、傳輸層、網(wǎng)絡(luò)層、鏈路層。

本系統(tǒng)中,應(yīng)用層傳遞來自以太網(wǎng)和數(shù)據(jù)終端的數(shù)據(jù),并對(duì)數(shù)據(jù)報(bào)作打包拆包處理。傳輸層采用傳輸控制協(xié)議TCP或用戶數(shù)據(jù)協(xié)議UDP.網(wǎng)絡(luò)層實(shí)現(xiàn)IP協(xié) 議,還要實(shí)現(xiàn)能報(bào)告數(shù)據(jù)傳輸差錯(cuò)等情況的ICMP協(xié)議。鏈路層部分由RTL8019AS完成,鏈路層由控制同一物理網(wǎng)絡(luò)上的不同機(jī)器間數(shù)據(jù)傳送的底層協(xié)議 組成。

在單片機(jī)里只實(shí)現(xiàn)與需要有關(guān)的部分,而不使用的協(xié)議則一概不支持。單片機(jī)應(yīng)用的TCP/IP協(xié)議大多是為了完成數(shù)據(jù)采集和數(shù)據(jù)傳輸,而不需要網(wǎng)頁瀏覽、文件傳輸這些功能。

ARP協(xié)議(地址解析協(xié)議)

以太網(wǎng)是TCP/IP協(xié)議主要采用的局域網(wǎng)技術(shù),是系統(tǒng)接入Internet的基礎(chǔ)。ARP本質(zhì)是完成網(wǎng)絡(luò)地址到以太網(wǎng)物理地址的動(dòng)態(tài)映射。UNIX系統(tǒng)的ARP協(xié)議支持以太網(wǎng)、令牌環(huán)等網(wǎng)絡(luò),但我們的單片機(jī)系統(tǒng)里只支持以太網(wǎng)。

IP協(xié)議(網(wǎng)際協(xié)議)

IP是TCP/IP協(xié)議族中最為核心的協(xié)議。所有的TCP、UDP、ICMP及IGMP數(shù)據(jù)都以IP數(shù)據(jù)報(bào)格式傳輸。就對(duì)某些協(xié)議而言,IP包最大可以 為65K,可以分段傳輸,而在單片機(jī)里根本無法容納如此大的數(shù)據(jù)包,因此一般是不支持分段的。我們的設(shè)計(jì)中采用發(fā)送小數(shù)據(jù)包的方式,以避免分段。

TCP協(xié)議(傳輸控制協(xié)議)

TCP數(shù)據(jù)封裝在一個(gè)IP數(shù)據(jù)報(bào)中,并具有自己的TCP首部, TCP協(xié)議定義十分復(fù)雜,鑒于51單片機(jī)的片內(nèi)資源十分有限,本系統(tǒng)對(duì)TCP協(xié)議進(jìn)行了一定的簡化處理。標(biāo)準(zhǔn)的TCP協(xié)議使用慢啟動(dòng)的滑動(dòng)窗口機(jī)制,如果 只使用單個(gè)窗口,就變成了一種簡單確認(rèn)的處理方法。即只需對(duì)單個(gè)數(shù)據(jù)報(bào)發(fā)送和確認(rèn),節(jié)約了系統(tǒng)資源,也使維護(hù)更加方便。

編程實(shí)現(xiàn)TCP協(xié)議的另一個(gè)難點(diǎn)在于TCP建立連接和終止連接的具體過程的實(shí)現(xiàn)。TCP協(xié)議是一個(gè)面向連接的協(xié)議,連接的雙方無論是哪一方向另一方發(fā)送數(shù)據(jù),都必須先通過“三次握手”過程在雙方之間建立一條連接,和通過“四次握手”終止連接。

連接建立后,TCP就可以發(fā)送數(shù)據(jù)塊,稱為數(shù)據(jù)段。當(dāng)TCP發(fā)出一個(gè)段后,它啟動(dòng)一個(gè)定時(shí)器,等待目的端確認(rèn)收到這個(gè)報(bào)文段。如果不能及時(shí)收到一個(gè)確認(rèn),將重發(fā)這個(gè)報(bào)文段。另外,TCP將保持它首部和數(shù)據(jù)的檢驗(yàn)和。

系統(tǒng)主應(yīng)用程序的實(shí)現(xiàn)

系統(tǒng)初始化后,進(jìn)入主程序循環(huán)的兩部分:一是對(duì)接收到的以太網(wǎng)數(shù)據(jù)幀進(jìn)行解包,供應(yīng)用程序使用,一是對(duì)發(fā)送的數(shù)據(jù)進(jìn)行封裝并發(fā)送,使采用TCP/IP協(xié)議的以太網(wǎng)內(nèi)的所有計(jì)算機(jī)都能收到此數(shù)據(jù)幀。圖2是系統(tǒng)的主應(yīng)用程序的流程圖。

▲ 圖2 系統(tǒng)的主應(yīng)用程序的流程圖

單片機(jī)實(shí)現(xiàn)TCP/IP協(xié)議的難點(diǎn)

51單片機(jī)的程序空間、可用的內(nèi)存RAM、運(yùn)算速度、指令集等原因,在UNIX或Windows上實(shí)現(xiàn)的TCP/IP協(xié)議的源代碼并不能夠直接移植到8 位的單片機(jī)上。在51單片機(jī)上編寫代碼會(huì)受許多限制,特別是實(shí)現(xiàn)TCP/IP協(xié)議這樣關(guān)系復(fù)雜的程序,我們必須根據(jù)實(shí)際情況盡可能挖掘51單片機(jī)的性能。 綜合來說,單片機(jī)實(shí)現(xiàn)與UNIX實(shí)現(xiàn)TCP/IP有如下區(qū)別:

(1)操作系統(tǒng):Windows或UNIX都是多任務(wù)操作系統(tǒng),這使得代碼編寫簡單化,在單片機(jī)只能是單任務(wù)系統(tǒng),代碼結(jié)構(gòu)為順序執(zhí)行+硬件中斷的方式,無法并發(fā)執(zhí)行。

(2)內(nèi)存分配:Windows或UNIX的內(nèi)存分配是動(dòng)態(tài)的。而一般單片機(jī)只有外接的一塊32K字節(jié)的RAM,并同時(shí)被各個(gè)協(xié)議使用。一個(gè)最大的以太 網(wǎng)數(shù)據(jù)包有1.5K字節(jié),分配一包的緩沖區(qū)就要1.5K字節(jié)。為此,我們分配一個(gè)256×6=1536個(gè)字節(jié)的固定的RAM來存放收到的以太網(wǎng)數(shù)據(jù)包。收 到一包就處理一包。

(3)指針:在PC里所有程序都必須先放在RAM里才能運(yùn)行,所以它的指針都指向RAM.而單片機(jī)的結(jié)構(gòu)和PC的結(jié) 構(gòu)有很大差別,指針類型很多,各指針運(yùn)算的速度也不一樣,特別是“一般指針”運(yùn)算很慢,還會(huì)占用很多程序空間。UNIX實(shí)現(xiàn)TCP/IP的源代碼中,用得 最多的就是指針,而在單片機(jī)里一般要求少用指針,或使用特定類型的指針。對(duì)使用UNIX的源代碼需要作很多的改動(dòng)。

(4)參數(shù)傳遞:在 UNIX實(shí)現(xiàn)的TCP/IP源代碼中,一般有很多的參數(shù)傳遞,而在單片機(jī)里允許傳遞的參數(shù)是有限的(因?yàn)槭艿絻?nèi)部RAM的限制),同時(shí)參數(shù)傳遞的過程要浪 費(fèi)程序代碼空間,也降低單片機(jī)執(zhí)行速度。所以在單片機(jī)的實(shí)現(xiàn)里,一般不要做太多的參數(shù)傳遞,而多使用公共的全局變量來實(shí)現(xiàn)調(diào)用的過程。

(5)硬件接口:在UNIX或Windows里,對(duì)網(wǎng)卡驅(qū)動(dòng)無一例外都是采用中斷方式,因?yàn)镻C的處理速度快,一次中斷的處理時(shí)間也很短,不會(huì)影響系統(tǒng)內(nèi) 的其它中斷。而在單片機(jī)的應(yīng)用中,大部分的方案都是查詢式的。PC的NE2000的網(wǎng)卡,一般都是用16位DMA的方式,而在單片機(jī)里卻只能用8位DMA 方式。這也使UNIX對(duì)網(wǎng)卡驅(qū)動(dòng)的代碼不能直接移植。

結(jié)語

本文設(shè)計(jì)的嵌入式網(wǎng)絡(luò) 接入方案,采用廉價(jià)的8位51單片機(jī)實(shí)現(xiàn)了簡化TCP協(xié)議和UDP協(xié)議,并支持主動(dòng)和被動(dòng)連接、跨越網(wǎng)關(guān),實(shí)現(xiàn)互聯(lián)網(wǎng)接入,在被控設(shè)備與上位控制機(jī)之間提 供了一條透明的傳輸通道,用戶不需對(duì)原有串口設(shè)備或其他數(shù)字設(shè)備做任何修改,就可享受到網(wǎng)絡(luò)的好處。目前,本文的系統(tǒng)已被成功使用在網(wǎng)絡(luò)化的數(shù)據(jù)采集器 中。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉