于磊
摘要:在基于8位的單片機控制系統(tǒng)開發(fā)中,51系列單片機仍然具有廣泛的應用前景。將51單片機與RTL8019AS網絡控制芯片結合起來,對網絡控制芯片的控制實現(xiàn)方法進行探討,并對51單片機ICMP回顯應答報文實現(xiàn)進行研究,具有實際應用價值。
關鍵詞:51單片機;RTL8019AS;ICMP回顯應答
中圖分類號:TP368文獻標識碼:A文章編號:1009-3044(2012)12-2917-03
The 51 Series MCU Network Communication and ICMP Echo Reply Implementation
YU Lei
(College of Continuing Education, Guizhou University, Guiyang 550001, China)
Abstract: Based on 8-bit MCU control system development, the 51 series single-chip still has the widespread application prospect.The 51 single-chip microcomputer and RTL8019AS network control chips combine to discussion on the control method for network control chip, and the 51 single chip microcomputer using ICMP Echo Reply methodology for study, which has practical application value.
Key words: the 51 Series MCU; RTL8019AS; ICMP Echo Reply
物聯(lián)網技術的發(fā)展和應用,使越來越多的非PC設備開始接入到基于TCP/IP協(xié)議的網絡中。作為8位控制器中的典型產品,51系列單片機仍是8位嵌入式應用開發(fā)的主流。以51單片機實際應用系統(tǒng)為平臺,對其TCP/IP網絡接入及相關通信協(xié)議的實現(xiàn)方法進行研究具有一定的應用意義。
1網絡控制器的選擇與硬件連接
在網絡控制器的選擇上,與51單片機配合使用較典型的產品是臺灣瑞昱半導體的RTL8019AS。
1.1 RTL8019AS與51單片機的硬件連接
在與51單片機連接時,RTL8019AS通常設置為8位跳線模式,這時應將IOCS16B下拉為低電平。I/O地址選擇線IOS3~0懸空。地址線A5~A7、A10~A19接地,A8~A9置高電平,A0~A4與51單片機連接,I/O地址設定為300H。將數(shù)據(jù)線D0~D7連接到51單片機,數(shù)據(jù)線D8~D15懸空。控制線IORB、IOWB、RSTDRV與51單片機連接。在使用硬件中斷的模式下將IRQ選擇線IRQS2~0懸空,選擇INT0作為中斷腳,INT1~INT7腳懸空。由于RTL8019AS的中斷方式為高電平觸發(fā),因此應將INT0反向后接入單片機。
1.2 RTL8019AS的發(fā)送和接收緩沖區(qū)
RTL8019AS內置16K字節(jié)的RAM(地址4000H~7FFFH),用來作為數(shù)據(jù)幀的發(fā)送和接收緩存。該緩存空間采用按頁存儲的使用方式,整個空間被劃分為64頁,每頁大小為256字節(jié),RAM地址的高8位(40H~7FH)即為頁地址。通過RTL8019AS內部被稱為“遠程DMA”的數(shù)據(jù)鏈路,51單片機可以完成對該緩存空間的讀寫操作。
在數(shù)據(jù)幀收發(fā)時,RTL8019AS內的緩存空間通常從邏輯上劃分為發(fā)送緩存和接收緩存兩個區(qū)域。其中發(fā)送緩存位于整個RAM的前部,起始地址由位于Page0中TPSR(發(fā)送緩沖區(qū)首頁地址)寄存器配置。接收緩存緊鄰在發(fā)送緩存之后,其起始地址由位于Page0中的PSTART(接收緩沖區(qū)首頁地址)寄存器配置,末地址由PSTOP(接收緩沖區(qū)末頁地址)寄存器配置。
1.3 RTL8019AS初始設置
RTL8019AS內的寄存器按地址和功能被分布在Page0~Page3四個頁面上,通過對CR(Command Register)寄存器中的PS1、PS0位設置,可以完成相應的換頁操作。
在與51單片機連接時,僅使用Page0~Page2三頁中的“NE2000寄存器”。初始時,由于Page2的寄存器為只讀,只需對Page0、Page1兩頁的寄存器進行正確配置即可。其中注意:8位模式下,接收緩沖區(qū)末頁地址寄存器(PSTOP)的最大值不超過60H。在采用中斷的數(shù)據(jù)接收方式下,中斷掩碼寄存器(IMR)應配置為允許PRX中斷(01H)。
1.4接收緩沖區(qū)的循環(huán)使用
在RTL8019AS接收數(shù)據(jù)幀時,借助Page1中的CURR和位于Page0中的BNRY兩個寄存器的配合,可以完成接收緩存的循環(huán)使用。其中:
當前頁寄存器CURR指出接收緩存中當前用于接收的頁地址。從網絡讀取的幀寫入一頁后,CURR寄存器的值由RTL8019AS控制自動加一,并且在達到接收緩沖區(qū)末頁地址值時,自動被重置為接收緩沖區(qū)首頁地址值。
邊界寄存器BNRY指出最后收入接收緩存且已被主機讀取的頁地址,其值由51單片機控制改變。當51單片機通過遠程DMA鏈路讀取一頁數(shù)據(jù)并做相應處理后,應將BNRY的值加1并測試是否到達接收緩沖區(qū)末頁地址值,若是,則應將BNRY重置為接收緩沖區(qū)首頁地址值。
2網絡數(shù)據(jù)的收、發(fā)
RTL8019AS在物理信道上進行幀的發(fā)送、接收時,均遵守IEEE802.3物理傳輸幀格式規(guī)定。
2.1數(shù)據(jù)幀的接收
51單片機的網絡連接應用通常是基于短數(shù)據(jù)包通信的。在采用中斷的數(shù)據(jù)接收方式下,應允許RTL8019AS接收到無差錯的數(shù)據(jù)包后產生中斷,由中斷處理程序通過遠程DMA鏈路將接收緩存中的數(shù)據(jù)讀取到51單片機的內存進行上層處理。一種典型的收包中斷處理流程如圖1所示。
在數(shù)據(jù)格式上,RTL8019AS的網絡接口層向上層表達數(shù)據(jù)幀時:前導序列、幀起始位以及最后的CRC校驗等字段由RTL8019AS自動刪除;然后在頭部自動添加“接收狀態(tài)(1字節(jié))、下一頁指針(1字節(jié))、以太網幀長度(兩字節(jié))”三個字段。
在51單片機從遠程DMA鏈路讀取數(shù)據(jù)時,先將RTL8019AS的寄存器RSAR0置0,將邊界寄存器BNRY的當前值寫入RSAR1;將讀取幀的長度計數(shù)值分別寫入RBCR0和RBCR1寄存器。然后置CR為遠程DMA讀取值(0AH);啟動循環(huán),將遠程DMA端口的值順序讀取到51單片機內存。
2.2數(shù)據(jù)幀的發(fā)送
發(fā)送操作時,先依據(jù)對應協(xié)議規(guī)定的格式將需要發(fā)送的數(shù)據(jù)在51單片機的內存中裝配成幀。其中:前導序列、幀起始位以及CRC校驗等字段由RTL8019AS自動添加,裝配程序無須干預。之后通過遠程DMA鏈路將裝配好的數(shù)據(jù)傳送到RTL8019AS的發(fā)送緩存,然后啟動發(fā)送。實際應用中,發(fā)送緩存也可以循環(huán)使用。
2.3 ICMP回顯應答原理及實現(xiàn)
因特網控制報文協(xié)議ICMP(Internet Control Message Protocol)是工作于IP層的因特網標準協(xié)議,用于傳遞差錯情況和提供有關異常情況的報告。ICMP覆蓋的范圍很廣,其中最常用的一種是ICMP回顯請求及應答。
ICMP回顯請求及應答用來測試目的站是否可達以及是否響應。通常請求主機會向目的主機發(fā)出ICMP回顯請求,收到該報文的機器必須給源主機發(fā)送ICMP回顯應答報文,從而檢測出鏈路或主機的工作狀態(tài)。
2.3.1 ICMP回顯請求幀
圖2為實際應用中由RTL8019AS接收并讀入51單片機內存的ICMP回顯請求幀。
圖2 ICMP回顯請求幀數(shù)據(jù)
幀的1~18字節(jié)為幀頭部。由于ICMP報文是在IP數(shù)據(jù)報內部被傳輸?shù)模虼藦?9到38字節(jié)為長度20字節(jié)的IP首部。39到78字節(jié)為ICMP回顯請求報文,其中從第47字節(jié)到78字節(jié)為選項數(shù)據(jù)字段。2.3.2 51單片機下ICMP回顯應答實現(xiàn)
對ICMP回顯請求幀的應答可以通過直接修改接收到的請求幀來完成。修改后的應答幀交付RTL8019AS的發(fā)送緩存時,裝入數(shù)據(jù)的起點應偏移4字節(jié)。其一般過程為:
將ICMP回顯請求幀接收并裝入51單片機內存;
將ICMP報文部分的類型、代碼兩字段(39、40字節(jié))的值置為零,表明該報文是對ICMP回顯請求的應答;
將ICMP報文檢驗和字段(41~42字節(jié))值清零,并重新計算。該檢驗和的計算覆蓋整個ICMP報文;
將IP首部源IP地址字段(31~34字節(jié))和目的IP地址字段(35~38字節(jié))的IP地址值交換;
清除IP首部檢驗和字段(29~30字節(jié))值,并重新計算。對于普通IP數(shù)據(jù)報,IP首部檢驗和的計算范圍為IP首部20字節(jié);將幀頭部源地址字段(5~10字節(jié))和目的地址字段(11~16字節(jié))的MAC地址交換。
3結束語
通過匯編語言的實現(xiàn),ICMP回顯應答協(xié)議在51單片機應用系統(tǒng)下獲得了可靠穩(wěn)定的效果,對進一步實現(xiàn)高層協(xié)議、實現(xiàn)遠程數(shù)據(jù)采集和控制具有實際意義。
參考文獻:
[1]胡漢才.單片機原理及其接口技術[M].北京:清華大學出版社,1998.
[2]謝希仁.計算機網絡[M]. 4版.北京:電子工業(yè)出版社,2005.
[3]符意德,陸陽.嵌入式系統(tǒng)原理及接口技術[M].北京:清華大學出版社,2007.
[4]李建文,張成現(xiàn).實用網絡通信編程技術[M].北京:北京郵電大學出版社,2006.