51单片机网络通信及ICMP回显应答实现

时间:2022-08-13 05:26:38

51单片机网络通信及ICMP回显应答实现

摘要:在基于8位的单片机控制系统开发中,51系列单片机仍然具有广泛的应用前景。将51单片机与RTL8019AS网络控制芯片结合起来,对网络控制芯片的控制实现方法进行探讨,并对51单片机ICMP回显应答报文实现进行研究,具有实际应用价值。

关键词: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

物联网技术的发展和应用,使越来越多的非PC设备开始接入到基于TCP/IP协议的网络中。作为8位控制器中的典型产品,51系列单片机仍是8位嵌入式应用开发的主流。以51单片机实际应用系统为平台,对其TCP/IP网络接入及相关通信协议的实现方法进行研究具有一定的应用意义。

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。将数据线D0~D7连接到51单片机,数据线D8~D15悬空。控制线IORB、IOWB、RSTDRV与51单片机连接。在使用硬件中断的模式下将IRQ选择线IRQS2~0悬空,选择INT0作为中断脚,INT1~INT7脚悬空。由于RTL8019AS的中断方式为高电平触发,因此应将INT0反向后接入单片机。

1.2 RTL8019AS的发送和接收缓冲区

RTL8019AS内置16K字节的RAM(地址4000H~7FFFH),用来作为数据帧的发送和接收缓存。该缓存空间采用按页存储的使用方式,整个空间被划分为64页,每页大小为256字节,RAM地址的高8位(40H~7FH)即为页地址。通过RTL8019AS内部被称为“远程DMA”的数据链路,51单片机可以完成对该缓存空间的读写操作。

在数据帧收发时,RTL8019AS内的缓存空间通常从逻辑上划分为发送缓存和接收缓存两个区域。其中发送缓存位于整个RAM的前部,起始地址由位于Page0中TPSR(发送缓冲区首页地址)寄存器配置。接收缓存紧邻在发送缓存之后,其起始地址由位于Page0中的PSTART(接收缓冲区首页地址)寄存器配置,末地址由PSTOP(接收缓冲区末页地址)寄存器配置。

1.3 RTL8019AS初始设置

RTL8019AS内的寄存器按地址和功能被分布在Page0~Page3四个页面上,通过对CR(Command Register)寄存器中的PS1、PS0位设置,可以完成相应的换页操作。

在与51单片机连接时,仅使用Page0~Page2三页中的“NE2000寄存器”。初始时,由于Page2的寄存器为只读,只需对Page0、Page1两页的寄存器进行正确配置即可。其中注意:8位模式下,接收缓冲区末页地址寄存器(PSTOP)的最大值不超过60H。在采用中断的数据接收方式下,中断掩码寄存器(IMR)应配置为允许PRX中断(01H)。

1.4接收缓冲区的循环使用

在RTL8019AS接收数据帧时,借助Page1中的CURR和位于Page0中的BNRY两个寄存器的配合,可以完成接收缓存的循环使用。其中:

当前页寄存器CURR指出接收缓存中当前用于接收的页地址。从网络读取的帧写入一页后,CURR寄存器的值由RTL8019AS控制自动加一,并且在达到接收缓冲区末页地址值时,自动被重置为接收缓冲区首页地址值。

边界寄存器BNRY指出最后收入接收缓存且已被主机读取的页地址,其值由51单片机控制改变。当51单片机通过远程DMA链路读取一页数据并做相应处理后,应将BNRY的值加1并测试是否到达接收缓冲区末页地址值,若是,则应将BNRY重置为接收缓冲区首页地址值。

2网络数据的收、发

RTL8019AS在物理信道上进行帧的发送、接收时,均遵守IEEE802.3物理传输帧格式规定。

2.1数据帧的接收

51单片机的网络连接应用通常是基于短数据包通信的。在采用中断的数据接收方式下,应允许RTL8019AS接收到无差错的数据包后产生中断,由中断处理程序通过远程DMA链路将接收缓存中的数据读取到51单片机的内存进行上层处理。一种典型的收包中断处理流程如图1所示。

在数据格式上,RTL8019AS的网络接口层向上层表达数据帧时:前导序列、帧起始位以及最后的CRC校验等字段由RTL8019AS自动删除;然后在头部自动添加“接收状态(1字节)、下一页指针(1字节)、以太网帧长度(两字节)”三个字段。

在51单片机从远程DMA链路读取数据时,先将RTL8019AS的寄存器RSAR0置0,将边界寄存器BNRY的当前值写入RSAR1;将读取帧的长度计数值分别写入RBCR0和RBCR1寄存器。然后置CR为远程DMA读取值(0AH);启动循环,将远程DMA端口的值顺序读取到51单片机内存。

2.2数据帧的发送

发送操作时,先依据对应协议规定的格式将需要发送的数据在51单片机的内存中装配成帧。其中:前导序列、帧起始位以及CRC校验等字段由RTL8019AS自动添加,装配程序无须干预。之后通过远程DMA链路将装配好的数据传送到RTL8019AS的发送缓存,然后启动发送。实际应用中,发送缓存也可以循环使用。

2.3 ICMP回显应答原理及实现

因特网控制报文协议ICMP(Internet Control Message Protocol)是工作于IP层的因特网标准协议,用于传递差错情况和提供有关异常情况的报告。ICMP覆盖的范围很广,其中最常用的一种是ICMP回显请求及应答。

ICMP回显请求及应答用来测试目的站是否可达以及是否响应。通常请求主机会向目的主机发出ICMP回显请求,收到该报文的机器必须给源主机发送ICMP回显应答报文,从而检测出链路或主机的工作状态。

2.3.1 ICMP回显请求帧

图2为实际应用中由RTL8019AS接收并读入51单片机内存的ICMP回显请求帧。

图2 ICMP回显请求帧数据

帧的1~18字节为帧头部。由于ICMP报文是在IP数据报内部被传输的,因此从19到38字节为长度20字节的IP首部。39到78字节为ICMP回显请求报文,其中从第47字节到78字节为选项数据字段。2.3.2 51单片机下ICMP回显应答实现

对ICMP回显请求帧的应答可以通过直接修改接收到的请求帧来完成。修改后的应答帧交付RTL8019AS的发送缓存时,装入数据的起点应偏移4字节。其一般过程为:

将ICMP回显请求帧接收并装入51单片机内存;

将ICMP报文部分的类型、代码两字段(39、40字节)的值置为零,表明该报文是对ICMP回显请求的应答;

将ICMP报文检验和字段(41~42字节)值清零,并重新计算。该检验和的计算覆盖整个ICMP报文;

将IP首部源IP地址字段(31~34字节)和目的IP地址字段(35~38字节)的IP地址值交换;

清除IP首部检验和字段(29~30字节)值,并重新计算。对于普通IP数据报,IP首部检验和的计算范围为IP首部20字节;将帧头部源地址字段(5~10字节)和目的地址字段(11~16字节)的MAC地址交换。

3结束语

通过汇编语言的实现,ICMP回显应答协议在51单片机应用系统下获得了可靠稳定的效果,对进一步实现高层协议、实现远程数据采集和控制具有实际意义。

参考文献:

[1]胡汉才.单片机原理及其接口技术[M].北京:清华大学出版社,1998.

[2]谢希仁.计算机网络[M]. 4版.北京:电子工业出版社,2005.

[3]符意德,陆阳.嵌入式系统原理及接口技术[M].北京:清华大学出版社,2007.

[4]李建文,张成现.实用网络通信编程技术[M].北京:北京邮电大学出版社,2006.

上一篇:心电信息系统的设计与应用 下一篇:网络广告污染成因及对策