999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

嵌入式TCP/IP協議棧在單片機上的實現

2010-04-12 00:00:00芳,周優霞
現代電子技術 2010年10期

摘 要:給出單片機上網的可行方案,采用SST89E564RD單片機,既提供了網關服務,也實現了在線仿真和下載的功能。由于51單片機資源有限,精簡了TCP/IP協議族,在8位單片機上實現了UDP、TCP、ICMP、IP、ARP協議,為嵌入式系統通過以太網接入Internet打下了基礎。經過幾個月的軟硬件測試表明:系統設計合理、穩定可靠。

關鍵詞:單片機; 以太網; TCP/IP; UDP

中圖分類號:TP393 文獻標識碼:B

文章編號:1004-373X(2010)10-0198-04

Realization of Embedded TCP/ IP Protocol Stack on MCU

WANG Fang1, ZHOU You-xia2

(1.School of Electronics and Information Engineering, Sanjiang University, Nanjing 210012, China;

2. Property Division of Xisan District, Wuxi 214000, China)

Abstract:A feasible project about MCU access to the Internet is presented, With SST89E564RD, the Ethernet protocol gateway services are provided, and the on-line debugging and downloading functions are realized., The TCP/IP protocol family is simplified because of the limited resources of 51 MCU. The UDP, TCP, ICMP, IP, ARP protocols were achieved on an 8-bit MCU, which lays the good foundation for embedded system to access the Internet through Ethernet. The software and hardware testing in several months shows that the new detection system is reasonable, stable and reliable.

Keywords:MCU; Ethernet; TCP/IP; UDP

隨著嵌入式設備與網絡的日益結合,在單片機系統中引入TCP/IP協議棧,以支持單片機接入網絡,成為嵌入式領域的一個重要方向。在此對基于SST89E516RD單片機的TCP/IP協議棧的實現方法給予討論。選用SST89E516RD單片機實現了在線仿真和編程的功能,大大節約了開發成本。采用VB 6.0語言與Window 98/2000/XP等為軟件開發平臺,對系統進行了測試。經過幾個月的軟硬件測試表明:系統設計合理、穩定可靠,已基本實現了最初的設計目標。對其他類似系統移植該項技術奠定了基礎,有很好的參考價值。

1 系統硬件實現

整個系統以SST89E516RD單片機為核心,通過RTL8019AS以太網控制芯片實現遠程通信。串口完成網卡參數的修改、在線仿真。在系統中還使用X5045作為外部擴展的E2PROM,用來存儲IP地址、物理地址以及網卡的其他配置信息,同時X5045還具有電壓監控、看門狗定時器、上電復位三種功能,使用X5045監控系統的運行過程,當系統不穩定時可以進行有效地復位。圖1為系統硬件結構圖。

圖1 系統硬件結構圖

2 系統軟件實現

系統軟件主要包括客戶端和服務器端軟件的設計,主要有以下幾部分內容:

(1)RTL8019AS的初始化和驅動程序的設計;

(2)數據幀的發送和接收子程序;

(3)TCP/IP協議棧程序的設計;

(4)客戶端和服務器端程序的設計;

(5)X5045看門狗和E2PROM程序的設計。

系統的主程序流程圖如圖2所示。

由圖2可知,系統首先完成對單片機定時器、串口、網卡芯片和以太網等部分的初始化,然后進入以太網處理部分的主程序,通過定時器中斷進行網口數據的超時出錯處理,并完成TCP定時器?;詈虯RP表生存時間的更新。

圖2 主程序流程圖

2.1 系統初始化

所謂初始化和驅動程序是指實模式下一組硬件芯片的驅動子程序,它們屏蔽了底層硬件處理細節,同時向上層軟件提供與硬件無關的接口。主要包括定時器初始化,初始化PING表、ARP表,初始化TCP,RTL8019AS的初始化等。RTL8019AS的初始化主要包括網卡的復位和網卡寄存器的初始化。RTL8019AS的初始化主要包括網卡的復位和網卡寄存器的初始化。RTL8019AS內部寄存器有4頁,與NE2000兼容的有3頁,第4頁不用。頁選擇由CR寄存器的PS1,PS0位確定。在零頁寄存器中可以設置接收、發送狀態配置以及發送緩存區的起始頁與接收緩存區起止頁地址等;在1頁寄存器中可以設置以太網接口的MAC地址和組播地址。對網卡的初始化就是對相關寄存器初始化,這些寄存器包括CR,RCR,TCR,PSTART,PSTOP,BNRY,TPSR,ISR,DCR,IMR,CURR,PAG0~PAG5,MAR0~MAR5等。初始化過程如下:

(1) CR=0x21,選擇頁零的寄存器同時使芯片處于停止模式,不會發送和接收數據包;

(2) RCR=0xE0,設置接收結構寄存器,monitor方式,所有數據包都被拒絕;

(3) TCR=0xE2,設置發送配置寄存器,工作在內部lookback模式;

(4) PSTART=0x4C,接收緩沖區開始頁面地址;

(5) PSTOP=0x80,接收緩沖區中止頁面地址;

(6) BNRY=0x4C,接收緩沖區最后頁面指針;

(7) TPSR=0x40,發送頁的起始頁地址,初始化為指向第一個發送緩沖區的頁即0x40;

(8) ISR=0xFF,清除所有中斷標志;

(9) DCR=0xC8,設置數據配置寄存器,使用FIFO緩存,普通模式,8位數據DMA;

(10) IMR=0x00,設置中斷屏蔽寄存器,屏蔽所有中斷;

(11) CR=0x61,選擇頁一的寄存器;

(12) CURR=0x4D,網卡寫內存的指針,指向當前正在寫的頁的下一頁,初始化時指和0x4C+1=0x4D;

(13) 設置多址寄存器MAR0~MAR5,均設置為0x00;

(14) CR=0x22,使網卡芯片開始工作;

(15) 設置網卡地址寄存器PAR0~PAR5;

(16) CR=0x21,選擇頁零的寄存器;

(17) RCR=0xCC,設置接收結構寄存器,設置為使用接收緩沖區,跟外部網絡連接;

(18) TCR=0xE0,設置發送配置寄存器,啟用CRC自動生成和自動校驗,工作在正常模式;

(19) CR=0x22,使網卡芯片開始工作;

(20) ISR=0xFF,清除所有中斷標志;

2.2 TCP/IP協議棧的移植

以太網幀的發送與接收屬于協議層中的最底層。發送前的協議封裝和接收時的協議分解都非常簡單。封裝時,只需在上層封裝數據前面添加14 B的以太網首部就可以了;接收到數據幀之后,根據頭信息中的幀類型字段判斷是否屬于IP包或ARP包,若是就繼續相應的協議分解,否則將被丟棄,不予處理。幀的接收工作由網卡自動完成,只需對相關的寄存器如PSTART,PSTOP,CURR和BNRY進行適當的初始化即可。以太網幀的發送過程如下:

(1) 初始化命令寄存器CR,啟動RTL8019AS;

(2) 設置數據配置寄存器DCR,以字節方式通信;

(3) 設置發送配置寄存器TCR,選擇RTL8019AS數據發送的工作方式;

(4) 設置遠程開始地址寄存器RSAR0(低位),RSAR1(高位),指明遠程DMA操作時所傳送數據的起始地址;

(5) 設置遠程字節計數寄存器RBCR0(低位),RBCR1(高位),指明遠程DMA操作時所傳送的數據的字節數;

(6) 設置命令寄存器CR,開始遠程DMA寫操作。RTL8019AS自動將數據I/O端口的數據寫入其緩沖區中;

(7) 開始向數據I/O端口傳送需要發送的數據;

(8) 數據傳送完畢后,設置發送頁起始地址寄存器TBCR,指明待發送數據的起始地址;

(9) 設置發送字節計數寄存器TBCR0(低位),TBCR1(高位),指明待發送數據的字節數;

(10) 設置命令寄存器CR,啟動本地DMA操作,把緩沖區中的數據發送到網絡上;

(11) 結束。

需要指出的是,數據在發送前必須先由上到下進行層層封裝才能正確地發送出去,同時,接收到的數據包還必須自下而上層層解包才能為用戶所識別,即協議分解。在協議編程實現中,數據封裝與協議分解互為逆過程。這就是說,必須在數據采集子系統中實現嵌入式TCP/IP協議才能完成數據的TCP/IP處理。

2.3 客戶端和服務器端程序的設計

分別設計客戶端和服務器端程序,適應于不同的工作場合。在面向連接的TCP協議中,服務器和客戶機開始通信之前必須首先建立連接。在連接之前,服務器程序必須正在運行并處于監聽模式,等待客戶端的連接。TCP的連接是通過3次握手協議來完成的。首先,客戶端發送1個SYN標志位的TCP段給服務器,其帶有所選擇段的初始序號。服務器端收到該報文段后,以1個帶有SYN標志的段作為應答,其中也給出根據本身情況選擇的初始序號,并包含對客戶端的確認。而客戶端收到服務器端的應答后,再次送回1個報文段,其中帶有對服務器端SYN的確認。這樣雙方的連接就建立了,以后就能開始傳送數據。同樣終止1條TCP連接實際上也需3次握手過程。

3 應用系統實現

為了驗證系統的可行性,應用VB開發了接口程序,構建了軟硬件測試平臺,用來設置網卡的配置參數并實現數據的發送與接收。所有配置參數包括(本地IP地址、服務器端IP地址、端口號、網卡物理地址、ping的IP地址、串口號等)都能通過串口動態地更改。系統能實現Ping的功能,以方便檢查以太網的狀態。

3.1 參數設置界面

用串口線將測試板(數據采集和控制系統模塊,下同)與計算機連接起來,選擇好串口號,然后按“連接單片機”按鈕,連接狀態工具欄里出現“已經連接”,說明測試板與計算機已經連接上,然后就可以修改配置參數了。在參數設置欄中填寫正確的參數值后,按“設定”按鈕,接收狀態欄中會提示參數設置成功,然后按測試板上的復位鍵,網卡的參數配置

就被寫到了X5045中。參數設置界面如圖3所示。

3.2 數據收發測試界面

分別測試客戶端和服務器端軟件通信是否正常。

(1) 服務器端程序的測試

打開客戶端測試界面,如圖4所示,設置連接IP地址為192.168.0.44(該地址必須與服務器端的IP地址一致),設置連接端口號為3330(該端口號必須與服務器端端口號一致)。將作為服務器端的程序燒入到測試板的微處理器中,通過圖3修改配置界面,將服務器端需要的參數寫入X5045,參數配置包括:“單片機IP地址”(指的是測試板自身的IP地址)為192.168.0.44,“服務器端IP地址”可以不用設置(因為測試板本身就即服務器端);如果是新網卡芯片,還需要設置MAC地址,這里設為121314151617(一般選擇任意的12位數即可);“服務器端口號”設為3330(必須與客戶端一致);網關設為192.168.0.1(要與上位機保持在同一個網段內)。設置好所有參數后,可以進行數據的收發了。

圖3 修改配置參數界面

圖4 客戶端測試界面

(2) 客戶端程序的測試

打開服務器端測試界面,如圖5所示。

圖5 服務器端測試界面

設置連接IP地址為192.168.0.44(該地址指的是上位機自身的IP,必須與客戶端設置的“服務器端IP地址”一致),設置連接端口號為3330(該端口號須與客戶端設置的“服務器端口號”一致)。將作為客戶端的程序燒入到系統的微處理器中,參數配置:“服務器IP地址”(指的是上位機的IP地址)為192.168.0.44,“單片機IP地址”可以不用設置(因為系統僅作為客戶端),“服務器端口號”設為3330(必須與客戶端一致),網關設為192.168.0.1(要與上位機保持在同一個網段內)。設置好所有參數之后,即可進行數據收發。服務器端的數據可以被發送到串口,同樣,數據也可以從串口發送到服務器端。

測試表明:上位機通過以太網與系統之間的通信正常。

4 結 語

在此實現了TCP/IP協議棧在單片機上的移植,完成了系統的硬件電路和相關嵌入式軟件的設計,應用VB開發了上位機修改參數界面,通過串口完成對網卡等參數的配置和修改,解決了數據包的超時重發、定時?;?、參數配置、硬件看門狗復位等一系列問題。實驗表明,整套程序比較穩定,收發數據正常,TCP超時重傳效果很好。經過近1個月的測試,沒有出現任何丟包和堵塞的現象。

參考文獻

[1]熊育悅,趙哲分.工業以太網在控制系統中的應用前景[J].儀表技術,2002(3):37-39.

[2]陳積明,王智,孫優賢.工業以太網的研究現狀及展望[J].化工自動化及儀表,2001,28(6):1-4.

[3]馬利,李佐儒,楊四海.實現電子設備的網絡化解決方案[J].單片機與嵌入式系統應用,2002(2):8-10.

[4]李廣弟,朱月秀,王秀山.單片機基礎[M].北京:北京航空航天大學出版社,2003.

[5]康華光.電子技術基礎(模擬部分)[M].北京:高等教育出版社,1998.

[6]微型計算機及外部設備常用芯片手冊編輯委員會.微型計算機及外部設備常用芯片手冊[M].北京:清華大學出版社,1999.

[7]周立功.單片機實驗與實踐[M].北京:北京航空航天大學出版社,2004.

[8]趙海蘭,錢國寶,徐煜祥.利用SST89C58的IAP/ISP實現的在線仿真技術[J].沙洲職業工學院學報,2003,6(5):8-11.

[9]周向紅.X5045芯片在單片機系統中的應用[J].現代電子技術,2006,29(5):111-112,116.

[10]魏計林,邱選兵,王青獅,等.單芯片嵌入式網關在煤礦井下人員定位中的應用[J].現代電子技術,2008,31(21):143-145,149.

[11]馮麗慧,陳愛國,張磊.一種基于內嵌TCP/IP的抄表器的設計[J].現代電子技術,2008,31(14):33-34,40.

[12]武永梅.基于嵌入式的以太網與現場總線協議網關的設計[D].太原:太原理工大學,2006.

[13]吳艷光.嵌入式TCP/IP協議棧設計方法的研究[D].太原:太原理工大學,2004.

主站蜘蛛池模板: 亚洲av日韩av制服丝袜| 久久人搡人人玩人妻精品一| 亚洲成人黄色在线| 欧美一区二区福利视频| 风韵丰满熟妇啪啪区老熟熟女| 91久久国产成人免费观看| 亚洲一区二区三区国产精品 | 曰韩人妻一区二区三区| 黄色网站不卡无码| 国产成人精品视频一区视频二区| 国产成人高清在线精品| 久久综合九色综合97婷婷| 国产精品成人免费综合| 精品国产免费观看| 国产资源免费观看| 91人妻在线视频| 国产主播在线观看| 亚洲精品黄| 婷婷中文在线| 91亚瑟视频| 干中文字幕| 精品一区二区三区无码视频无码| a毛片在线| 亚洲视频四区| 国产精品一区二区在线播放| 久久国产香蕉| 天堂成人在线视频| 538国产视频| 亚洲天堂高清| 91精品最新国内在线播放| 怡春院欧美一区二区三区免费| 黄色网站在线观看无码| 国产视频一二三区| 亚洲一区二区约美女探花| 亚洲日本中文字幕乱码中文| 中文字幕人妻无码系列第三区| 91丝袜在线观看| 国产不卡一级毛片视频| 女人毛片a级大学毛片免费| 中文字幕一区二区人妻电影| 一区二区三区在线不卡免费| 日韩免费视频播播| 精品国产成人av免费| 国产女人在线观看| 日韩av在线直播| 亚洲国产中文在线二区三区免| 国产午夜福利亚洲第一| 亚洲中文无码h在线观看 | 国模私拍一区二区三区| 伊人精品成人久久综合| 国产农村1级毛片| 免费毛片视频| 欧美色99| 久久天天躁夜夜躁狠狠| 精品久久香蕉国产线看观看gif| 亚洲黄色片免费看| 国产91丝袜| 99久久精彩视频| 久久亚洲中文字幕精品一区| 在线观看av永久| a级毛片免费网站| 精品亚洲麻豆1区2区3区| 亚洲人成人无码www| 日韩欧美国产成人| 九九久久99精品| 看看一级毛片| 99人体免费视频| 亚洲免费福利视频| 亚洲高清日韩heyzo| 亚洲熟妇AV日韩熟妇在线| 2020极品精品国产| 97se亚洲综合在线韩国专区福利| 亚洲综合久久成人AV| 亚洲欧美一区二区三区蜜芽| 国产情精品嫩草影院88av| 日韩欧美中文| 国产网站免费| 欧美自拍另类欧美综合图区| 日韩高清一区 | 久久久成年黄色视频| 亚洲男人的天堂久久精品| 伊人天堂网|