32.2.2
MAC子层
32.2.2.1
MAC的功能
MAC子层是属于数据链路层的下半部分,它主要负责与物理层进行数据交接,如是否可以发送数据,发送的数据是否正确,对数据流进行控制等。它自动对来自上层的数据包加上一些控制信号,交给物理层。接收方得到正常数据时,自动去除MAC控制信号,把该数据包交给上层。
32.2.2.2
MAC数据包
IEEE对以太网上传输的数据包格式也进行了统一规定,见图34_3。该数据包被称为MAC数据包。

图34_3 MAC数据包格式
MAC数据包由前导字段、帧起始定界符、目标地址、源地址、数据包类型、数据域、填充域、校验和域组成。
前导字段,也称报头,这是一段方波,用于使收发节点的时钟同步。内容为连续7个字节的0x55。字段和帧起始定界符在MAC收到数据包后会自动过滤掉。
帧起始定界符(SFD):用于区分前导段与数据段的,内容为0xD5。
MAC地址:MAC地址由48位数字组成,它是网卡的物理地址,在以太网传输的最底层,就是根据MAC地址来收发数据的。部分MAC地址用于广播和多播,在同一个网络里不能有两个相同的MAC地址。PC的网卡在出厂时已经设置好了MAC地址,但也可以通过一些软件来进行修改,在嵌入式的以太网控制器中可由程序进行配置。数据包中的DA是目标地址,SA是源地址。
数据包类型:本区域可以用来描述本MAC数据包是属于TCP/IP协议层的IP包、ARP包还是SNMP包,也可以用来描述本MAC数据包数据段的长度。如果该值被设置大于0x0600,不用于长度描述,而是用于类型描述功能,表示与以太网帧相关的MAC客户端协议的种类。
数据段:数据段是MAC包的核心内容,它包含的数据来自MAC的上层。其长度可以从0~1500字节间变化。
填充域:由于协议要求整个MAC数据包的长度至少为64字节(接收到的数据包如果少于64字节会被认为发生冲突,数据包被自动丢弃),当数据段的字节少于64字节时,在填充域会自动填上无效数据,以使数据包符合长度要求。
校验和域:MAC数据包的尾部是校验和域,它保存了CRC校验序列,用于检错。
以上是标准的MAC数据包,IEEE 802.3同时还规定了扩展的MAC数据包,它是在标准的MAC数据包的SA和数据包类型之间添加4个字节的QTag前缀字段,用于获取标志的MAC帧。前2个字节固定为0x8100,用于识别QTag前缀的存在;后两个字节内容分别为3个位的用户优先级、1个位的标准格式指示符(CFI)和一个12位的VLAN标识符。
32.3
TCP/IP协议栈
标准TCP/IP协议是用于计算机通信的一组协议,通常称为TCP/IP协议栈,通俗讲就是符合以太网通信要求的代码集合,一般要求它可以实现互联网模型中每个层对应的协议,比如应用层的HTTP、FTP、DNS、SMTP协议,传输层的TCP、UDP协议、网络层的IP、ICMP协议等等。关于TCP/IP协议详细内容推荐阅读《TCP-IP详解》和《用TCP/IP进行网际互连》理解。
Windows操作系统、UNIX类操作系统都有自己的一套方法来实现TCP/IP通信协议,它们都提供非常完整的TCP/IP协议。对于一般的嵌入式设备,受制于硬件条件没办法支持使用在Window或UNIX类操作系统的运行的TCP/IP协议栈,一般只能使用简化版本的TCP/IP协议栈,目前开源的适合嵌入式的有LwIP、FreeRTOS-Plus-TCP、uC/TCP-IP、uIP、TinyTCP等等,其中LwIP是目前在嵌入式网络领域被讨论和使用广泛的协议栈。
32.3.1
为什么需要协议栈
物理层主要定义物理介质性质,MAC子层负责与物理层进行数据交接,这两部分是与硬件紧密联系的,就嵌入式控制芯片来说,很多都内部集成了MAC控制器,完成MAC子层功能,所以依靠这部分功能是可以实现两个设备数据交换,而时间传输的数据就是MAC数据包,发送端封装好数据包,接收端则解封数据包得到可用数据,这样的一个模型与使用USART控制器实现数据传输是非常类似的。但如果将以太网运用在如此基础的功能上,完全是大材小用,因为以太网具有传输速度快、可传输距离远、支持星型拓扑设备连接等等强大功能。功能强大的东西一般都会用高级的应用,这也是设计者的初衷。
使用以太网接口的目的就是为了方便与其它设备互联,如果所有设备都约定使用一种互联方式,在软件上加一些层次来封装,这样不同系统、不同的设备通讯就变得相对容易了。而且只要新加入的设备也使用同一种方式,就可以直接与之前存在于网络上的其它设备通讯。这就是为什么产生了在MAC之上的其它层次的网络协议及为什么要使用协议栈的原因。又由于在各种协议栈中TCP/IP协议栈得到了最广泛使用,所有接入互联网的设备都遵守TCP/IP协议。所以,想方便地与其它设备互联通信,需要提供对TCP/IP协议的支持。
32.3.2
各网络层的功能
用以太网和WiFi作例子,它们的MAC子层和物理层有较大的区别,但在MAC之上的LLC层、网络层、传输层和应用层的协议,是基本相同的,这几层协议由软件实现,并对各层进行封装。根据TCP/IP协议,各层的要实现的功能如下:
LLC层:处理传输错误;调节数据流,协调收发数据双方速度,防止发送方发送得太快而接收方丢失数据。主要使用数据链路协议。
网络层:本层也被称为IP层。LLC层负责把数据从线的一端传输到另一端,但很多时候不同的设备位于不同的网络中(并不是简单的网线的两头)。此时就需要网络层来解决子网路由拓扑问题、路径选择问题。在这一层主要有IP协议、ICMP协议。
传输层:由网络层处理好了网络传输的路径问题后,端到端的路径就建立起来了。传输层就负责处理端到端的通讯。在这一层中主要有TCP、UDP协议
应用层:经过前面三层的处理,通讯完全建立。应用层可以通过调用传输层的接口来编写特定的应用程序。而TCP/IP协议一般也会包含一些简单的应用程序如Telnet远程登录、FTP文件传输、SMTP邮件传输协议。
实际上,在发送数据时,经过网络协议栈的每一层,都会给来自上层的数据添加上一个数据包的头,再传递给下一层。在接收方收到数据时,一层层地把所在层的数据包的头去掉,向上层递交数据,如图所示。

点击可查看大图
32.4
ETHERC简介
瑞萨RA6M5提供一个单通道以太网控制器(ETHERC),符合以太网或IEEE802.3媒体访问控制(MAC)层协议。每个ETHERC通道有一个MAC层接口通道,将MCU连接到物理层LSI(PHY-LSI),可以传输和接收符合以太网/IEEE802.3标准的帧。ETHERC连接到以太网专用DMA控制器(EDMAC),因此可以在不使用CPU的情况下传输数据。
ETHERC特性
兼容Ethernet/IEEE802.3标准
比特率:支持10 Mbps和100 Mbps
操作模式:支持全双工和半双工模式
接口:MII和RMII
功能:
魔术包(Magic Packet)检测
Wake-on-LAN(WOL)信号输出
-
以太网
+关注
关注
41文章
6339浏览量
182080 -
瑞萨
+关注
关注
38文章
22549浏览量
91777 -
TCP
+关注
关注
8文章
1440浏览量
83973
原文标题:什么是TCP/IP协议栈及ETHERC——瑞萨RA系列FSP库开发实战指南(115)
文章出处:【微信号:瑞萨嵌入式小百科,微信公众号:瑞萨嵌入式小百科】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
瑞萨RA系列FSP库开发实战指南之AGT低功耗定时器简介和结构框图
瑞萨e2studio(1)----瑞萨芯片之搭建FSP环境
Modbus库开发笔记之十一:关于Modbus协议栈开发的说明
【瑞萨RA4系列开发板体验】体验过程
Microchip TCP/IP协议栈
瑞萨RA系列FSP库开发实战指南之什么是TCP/IP协议栈及ETHERC
评论