微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 行业新闻动态 > iEthernet W5200数据手册(版本1.2.4)之:功能说明

iEthernet W5200数据手册(版本1.2.4)之:功能说明

时间:09-18 来源:3721RD 点击:

15 IPRAW操作流程图

套接字初始化

选择套接字,设置协议号,然后设置Sn_MR(P3:P0)到IPRAW模式,执行"OPEN"命令。如果Sn

_SR在"OPEN"命令之后转化到了SOCK_IPRAW,套接字初始化完成了。

检查接收数据

参考"5.2.2.1单播和广播模式"

接收过程

处理内部接收缓冲区的IPRAW数据。接收到的IPRAW数据的结构如下:

图15 接收IPRAW的数据格式

IPRAW 数据包含了6个字节的包信息和数据包,包信息包含了发送者(IP地址)和数据包的长度。除了处理在UDP套接字信息中关于发送者的端口号外,IPRAW的 数据接收与UDP数据接收基本上一样。参考"5.2.2.1单播和广播模式"。如果所传输的数据比选用套接字的接收缓冲自由字节数大的话,用户不能接收数 据也不能接收数据段。

检查发送数据/发送过程

用户想发送的数据大小不能超过内部发送缓冲大小和缺省的MTU。IPRAW数据的传输同UDP数据传输相比,除了设置"目的端口号"外是一样的。,参考"5.2.2.1单播&广播模式"

完成发送/超时

同UDP一样,请参考"5.2.2UDP"

检查完成/套接字关闭

同UDP一样,请参考"5.2.2UDP"

5.2.4 MACRAW(以MAC层为上限的数据处理模式)

MACRAW通信是基于以太网MAC的,它可以使用户的上层协议灵活地适应主机的需要。

MACRAW模式只能用于只有一个套接字工作的情况下,如果用户使套接字0工作于MACRAW,

套 接字1-7不仅可以用于硬件连接的TCP/IP协议栈,而且它(套接字0)能被用于NIC(网络接口控制器)中。因此,套接字1-7中的任何一个都可以用 于软件TCP/IP协议栈。因为W5200支持硬件TCP/IP协议栈和软件TCP/IP协议栈,它被称做混合TCP/IP协议栈,如果用户除了 W5200支持的8个套接字之外,还需要更多的套接字,在这种情况下,用户需要把硬件TCP/IP协议栈用于高性能需求的应用,其他的应该用MACRAW 模式的软件TCP/IP协议栈来实现。因此它克服了8个套接字的上限,套接字0的MACRAW能处理除了用套接字1-7实现之外的所有协议。因为 MACRAW通信是纯的以太网包通信(没有其他的处理过程),MACRAW数据应该至少包括6字节的源MAC地址,6字节的目的MAC地址和2字节的以太 网类型,这是因为它是基于以太网MAC的。

图 16 MACRAW操作流程

套接字初始化

选 择套接字,设置SN_MR(P3:P0)到MACRAW模式。然后执行"OPEN"命令。"OPEN"命令过后,如果Sn_SR成功地转到 "SOCK_MACRAW",套接字初始化就完成了。因为关于通信的所有信息(源MAC地址,源IP地址,源端口号,目的MAC地址,目的IP地址,目的 设备端口号,协议头等)都在"MACRAW数据"中,没有再多的寄存器设置了。

检查接收数据

参考"5.2.2.1单播和广播模式"

接收过程

处理所用套接字内部接收缓存中MACRAW数据

MACRAW数据的结构如下所示:

图 17 接收MACRAW数据格式

MACRAW 数据包含"包信息","数据包"和4字节的循环校验码。"包信息"是数据包的长度,"数据包"包括6字节的"目的MAC地址",6字节的"源MAC地址" 和2字节的"类型",46-1500字节的实际传输数据。"实际传输数据"包括网络协议,如根据"类型"而定的ARP,IP。关于详细的"类型"信息,清 参考下面网站:

http://www.iana.org/assignments/ethernet-numbers

<注意>

如果内部接收缓存的自由空间比MACRAW数据小的话,存于内部RX缓存中的一些包信息和数

据包会偶然性地出现一些问题。因此出现包信息的分析错误,所以它不能正确地处理

MACRAW数据。越接近内部接收缓存大小,发生错误的概率也大。如果用户可以允许

MACRAW数据有部分丢失,这个问题就不是太敏感了。

解决办法如下:

•尽快地处理内部接收缓存中的数据以避免它接近缓存的上限

•通过例程里面套接字初始化中的MF位,设置只接受MACRAW数据,以减少接收数据的负担

•如果内部接收缓存的自由空间小于‘1528-缺省MTU(1514)+包信息(2)+数据包(8)+CRC(4)’,则关闭套接字,然后处理收到的所有数据。之后再重新打开套接字。关闭套接字之后,从关闭开始起接收到的MACRAW数据将会丢失。

检查发送数据/发送过程

用户想发送的数据的大小不能超过内部发送缓存的大小和缺省MTU。主机产生与"接收过程"的数据包一样格式的MACRAW数据,然后发送它。这个时候,如果产生的数据小于60字节,发送的以太网包在内部会以0填充的方式扩充到60字节,然后发送。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top