精选物联网的毕业论文范文
基于单片机的嵌入式以太网控制终端设计 摘要:基于单片机技术的以太网终端广泛应用在各个领域,本文基于建荣AX2005+PHY的解决方案,实现ARP请求,以及ping命令。同时,本文详细介绍以太网接口的硬件设计和通信电路的抗干扰设计。覆盖单片机技术,通信技术,计算机网络技术等多个知识领域。
关键词:以太网协议; 信道编码; TCP/IP协议; 单片机;
一,概述:随着单片机技术和嵌入式技术的广泛应用,以及通信技术的发展和计算机网络的普及,人们提出了对基于嵌入式系统的网络通信技术的应用需求。嵌入式网络通信系统将过去单一独立的嵌入式系统组成一个网络系统,使得嵌入式系统不再是一个独立的个体,而是一个整体信息化网络的一个部分。该技术广泛应用在智能设备,信息化家电,智能管理设备,安防监控设备等领域。
嵌入式网络系统具有以下特点:1,基于单片机系统。2,系统之间存在数据通讯。在嵌入式网络系统的实现方案中,有基于RS232/RS485总线协议,CAN总线协议,以太网协议,USB总线协议等多种方式。其中基于以太网协议的实现方案中,具有成本低,安装方便,通讯距离远,兼容性好和平台移植方便等多种优势。该技术广泛应用在以下领域。 1,实验室管理监控系统
某生化实验室需要建立一个实时监控系统,检测实验室人员出入,实验结果数据,实验室温度湿度。该实验室的仪器设备都有RS232接口输出打印,可以输出到单片机。门禁和各种传感器也接入单片机系统。这时候单片机可以通过以太网把数据提交到实验室的服务器上,服务器通过处理提交的数据,将控制命令通过以太网发给单片机,单片机再进行相应的操作。
2,智能家居系统
现代家居系统中,由于需要宽带接入,基本上所有住户都有局域网接入。在住户内 部搭建局域网也很方便。鉴于以上情况,利用以太网实现智能家居网络能够实现。
住房内的家电和各种设施,可以接入内部以太网实现相互通信,或者与上位机实现通信。上位机可以被用户远程控制,对居室的家电和设施进行控制,达到对居室的温度,光亮的调节,同时可以利用下位机(单片机)将室内监控系统的状况传到上位机,上位机通过分析可以向主人或者相关部门报告火警或者匪警。
3,信息化家电
传统家电是一个独立存在的系统,电器与电器之间没有丝毫联系。在信息化家电系统中,所有信息化家电组成一个局域网络系统,家电属于该系统中一个部分。信息化家电系统中,比如电饭锅,可以通过网络远程控制。假如用户需要下班回家就能吃上饭,可以在下班前通过远程控制协议给电饭锅发出指令,保证下班回家时饭刚好煮好。
二,实现方案理论设计
1,网络协议简介
四层以太网协议
网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能。一个协议族,比如TCP/IP,是一组不同层次上的多个协议的组合。TCP/IP通常被认为是一个四层协议系统,如图可以看出这个四层协议的构架。
图1-1 TCP/IP协议族的四个层每一层负责不同的功能:
链路层:有时也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。
网络层:有时也称作互联网层,处理分组在网络中的活动,例如分组的选路。在TCP/I协议族中,网络层协议包括I协议(网际协议),ICMP协议(Interne互联网控制报文协议),以及IGM协议(Internet组管理协议)。
运输层:主要为两台主机上的应用程序提供端到端的通信。在T C P / I P协议族中,有两个互不相同的传输协议: TCP(传输控制协议)和UDP(用户数据报协议)。
TCP为两台主机提供高可靠性的数据通信。它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。由于运输层提供了高可靠性的端到端的通信,因此应用层可以忽略所有这些细节。 而另一方面, UDP则为应用层提供一种非常简单的服务。它只是把称作数据报的分组 从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。任何必需的可靠 性必须由应用层来提供。
这两种运输层协议分别在不同的应用程序中有不同的用途,这一点将在后面看到。 应用层:负责处理特定的应用程序细节。几乎各种不同的TCP/IP实现都会提供下面这些通用的应用程序:
Telnet 远程登录。
FTP 文件传输协议。
SMTP 简单邮件传送协议。
SNMP 简单网络管理协议。
假设我们以FTP服务的工作为例,4层协议的工作原理如图
OSI七层协议
物理层 : OSI模型的最低层或第一层,该层包括物理连网媒介,如电缆连线连接器。物理层的协议产生并检测电压以便发送和接收携带数据的信号。在你的桌面P C 上插入网络接口卡,你就建立了计算机连网的基础。换言之,你提供了一个物理层。尽管物理层不提供纠错服务,但它能够设定数据传输速率并监测数据出错率。网络物理问题,如电线断开,将影响物理层。
数据链路层:OSI模型的第二层,它控制网络层与物理层之间的通信。它的主要功能是如何在不可靠的物理线路上进行数据的可靠传递。为了保证传输,从网络层接收到的数据被分割成特定的可被物理层传输的帧。帧是用来移动数据的结构包,它不仅包括原始数据,还包括发送方和接收方的网络地址以及纠错和控制信息。其中的地址确定了帧将发送到何处,而纠错和控制信息则确保帧无差错到达。数据链路层的功能独立于网络和它的节点和所采用 2007 AppoTech Limited. All rights reserved DS2005 v100 2
的物理层类型,它也不关心是否正在运行 Word、Excel或使用Internet 。有一些连接设备,如交换机,由于它们要对帧解码并使用帧信息将数据发送到正确的接收方,所以它们是工作在数据链路层的。
网络层:OSI模型的第三层,其主要功能是将网络地址翻译成对应的物理地址,并决定如何将数据从发送方路由到接收方。
网络层通过综合考虑发送优先权、网络拥塞程度、服务质量以及可选路由的花费来决定从一个网络中节点A 到另一个网络中节点B 的最佳路径。由于网络层处理路由,而路由器因为即连接网络各段,并智能指导数据传送,属于网络层。在网络中,“路由”是基于编址方案、使用模式以及可达性来指引数据的发送。
传输层:OSI模型中最重要的一层。传输协议同时进行流量控制或是基于接收方可接收数据的快慢程度规定适当的发送速率。除此之外,传输层按照网络能处理的最大尺寸将较长的数据包进行强制分割。例如,以太网无法接收大于1500字节的数据包。发送方节点的传输层将数据分割成较小的数据片,同时对每一数据片安排一序列号,以便数据到达接收方节点的传输层时,能以正确的顺序重组。该过程即被称为排序。
工作在传输层的一种服务是 TCP/IP协议套中的TCP(传输控制协议),另一项传输层服务是IPX/SPX协议集的SPX(序列包交换)。
会话层:负责在网络中的两节点之间建立和维持通信。 会话层的功能包括:建立通信链接,保持会话过程通信链接的畅通,同步两个节点之间的对 话,决定通信是否被中断以及通信中断时决定从何处重新发送。
你可能常常听到有人把会话层称作网络通信的“交通警察”。当通过拨号向你的ISP(因特网服务提供商)请求连接到因特网时,ISP服务器上的会话层向你与你的PC客户机上的会话层进行协商连接。若你的电话线偶然从墙上插孔脱落时,你终端机上的会话层将检测到连接中断并重新发起连接。会话层通过决定节点通信的优先级和通信时间的长短来设置通信期限
表示层:应用程序和网络之间的翻译官,在表示层,数据将按照网络能理解的方案进行格式化;这种格式化也因所使用网络的类型不同而不同。
表示层管理数据的解密与加密,如系统口令的处理。例如:在 Internet上查询你银行账户,使用的即是一种安全连接。你的账户数据在发送前被加密,在网络的另一端,表示层将对接收到的数据解密。除此之外,表示层协议还对图片和文件格式信息进行解码和编码。 应用层:负责对软件提供接口以使程序能使用网络服务。术语“应用层”并不是指运行在网络上的某个特别应用程序 ,应用层提供的服务包括文件传输、文件管理以及电子邮件的信息处理。
两种协议对应关系
我们可以看到,以太网网协议属于OSI协议中的部分,其中OSI协议最重要的就是多了物理层,它是以太网设备通信的信道部分。链路层负责提供通信的时须,而以太网信号在信道中的传递全靠物理层。
2,常用实现方案选型
嵌入式以太网终端实现方案有多种,但其共同点都是单片机+网络芯片。主要是两种方案:单片机+MAC和单片机+PHY。
MAC是Media Access Control 的缩写,即媒体访问控制子层协议。该协议位于OSI七层协议中数据链路层的下半部分,主要负责控制与连接物理层的物理介质。在发送数据的时候,MAC协议可以事先判断是否可以发送数据,如果可以发送将给数据加上一些控制信息,最终将数据以及控制信息以规定的格式发送到物理层;在接收数据的时候,MAC协议首先判断输入的信息并是否发生传输错误,如果没有错误,则去掉控制信息发送至LLC层。以太网MAC由IEEE-802.3以太网标准定义。
PHY是位于OSI七层协议中的物理层,PHY在发送数据的时候,收到MAC过来的.数据(对PHY来说,没有帧的概念,对它来说,都是数据而不管什么地址,数据还是CRC),每4bit就增加1bit的检错码,然后把并行数据转化为串行流数据,再按照物理层的编码规则把数据编码,再变为模拟信号把数据送出去。收数据时的流程反之。
2007 AppoTech Limited. All rights reserved DS2005 v100 3
单片机+MAC典型方案为单片机+RTL8019的方案。
RTL8019AS 是高度集成以太网控制器,它能够简单的解答即插即用NE2000兼容适配器,这种适配器具有二重和功率下降特性。通过三电平控制特性,RTL8019AS 是已制的对网络设备GREEN PC 理想的选择。全二重功能能够模拟传播和接收在双绞线到全二重以太网交换机。这个特性不仅强带宽从10 到20MBPS,而且避免了由于以太网频道争夺特性导致的读出多路存取协议的问题。微软公司的即插即用功能能减轻用户较差的营业收入而注意适配器资源,如IRQ,输入输出,和存储器地址等等。然而,为了特殊的应用而得不到即插即用功能的兼容性,RTL8019AS 支持JUMPER 和JUMPERLESS 选项。
为了提供完全解决即插即用方案,RTL8019AS 在集成10BASET 收发器,BNC,和AUI 接口之间的自动检测功能。此外,8 条IRQ 总线和16 条基本地址总线为大资源情况下提供了宽松的环境。
RTL8019AS 支持16k,32k,和64k 字节BROM 和闪存接口。它仍然提供页面模式功能,这种功能能支持在仅16k 字节内存系统空间下的4M 字节的BROM.此外,BROM 的无用命令被用来释放BROM 内存空间。RTL8019AS 用16k 字节SRAM 设计在单片芯片上,它的设计不仅提供了更多友好的功能,而且节省了SRAM 存储资源。
单片机+PHY典型方案为单片机+RTL8201,RTL8201具有成本低,速度快(支持100M bps)等优点。
RTL8201BL是一个单端口的物理层收发器,它只有一个MII/SNI(媒体独立接口/串行网络接口)接口。它实现了全部的10/100M以太网物理层功能,包括物理层编码子层(PCS),物理层介质连接设备(PMA),双绞线物理媒介相关子层(TP-PMD),10Base-Tx编解码和双绞线媒介访问单元(TPMAU)。 PECL接口支持连接一个外部的100Base-FX光纤收发器。这款芯片使用先进的CMOS工艺制作以满足低压低功耗的需求。 RTL8201BL可以在NIC,MAU,CNR,ACR,以太网HUB,或以太网交换机中使用。另外,它也可以用于任何有以太网MAC并且需要一个物理上的双绞线连接或一个光纤PECL接口以连接一个外部的100base-FX 光纤收发器模块的嵌入式系统。
MII接口
MII即媒体独立接口,它是IEEE-802.3定义的以太网行业标准。它包括一个数据接口,以及一个MAC和PHY之间的管理接口。数据接口包 括分别用于发送器和接收器的两条独立信道。每条信道都有自己的数据、时钟和控制信号。MII数据接口总共需要16个信号。管理接口是个双信号接口:一个是 时钟信号,另一个是数据信号。通过管理接口,上层能监视和控制PHY。MII Management interface只有两条信号线。The configuration and status data is written/read to/from the PHY via the MDIO signal.
MII标准接口 用于连快Fast Ethernet MAC-block与PHY。“介质无关”表明在不对MAC硬件重新设计或替换的情况下,任何类型的PHY设备都可以正常工作。在其他速率下工作的与 MII等效的接口有:AUI(10M 以太网)、GMII(Gigabit 以太网)和XAUI(10-Gigabit 以太网)。
我们使用了珠海建荣集成(Appotech)的AX2005单片机+RTL8201的方案。
AX2005是一种国产的基于8051内核的OTP单片机,具有两个DPTR地址指针,内部集成了部分扩展SRAM,程序存储器与数据存储器地址可以交叉访问。该单片机大多数指令都在一个时钟周期内完成,并且集成了DSP MAC(乘加器),可用于数字信号处理。
AX2005具有GPSI接口,可以工作在MII兼容模式下,实现以太网MAC功能,并且工作于DMA模式。单片机性能可以达到100MIPS,集成32KB SRAM,并带有硬件CRC模块,可方便的用于以太网数据封装的处理。所以该单片机非常适合用于以太网终端的应用。
2007 AppoTech Limited. All rights reserved DS2005 v100 4
AX2005 High Performance 8-bit RISC Microcontroller
High Performance 8-bit RISC MCU DC-125MHz operation Compatible with 8051
40ns internal interrupt response at 125 MIPS All instructions are single-cycled except
branching instructions
Two data pointers for indirect addressing
Program Memory and Data Memory 32K Bytes OTP program memory
64K Bytes instruction SRAM used for
program and/or data memory 256 Bytes internal data SRAM
64K Bytes External Memory Interface (EMI),
support DMA to on-chip SRAM
Interrupt Features
26 vectored interrupts 3 levels interrupt priority
External wakeup/interrupt capabilities on
Port 1
2 levels interrupt priority selection for all the
hardware interrupt sources except Watchdog and LVD where they occupy the third level Flexible I/O
60 GPIO pins in 7 and a half ports.
All GPIO pins can be individually
programmable as input or output
All GPIO pins are internally pull-up selectable CMOS/TTL-level Schmitt triggered inputs All GPIO pins are 8mA sink/source current
output driving
Digital Peripheral Features
Two 16-bit timers compatible with 8051’s
timer0 timer1
Two multi-function 16-bit timers, support
Capture and PWM mode
Two 8-bit timers, support Capture mode.
Watchdog Timer with on-chip 1MHz RC
oscillator
Two high-speed full-duplex UART Two high-speed SPI, support DMA 1 GPSI interface, support DMA
Two 4-channel IIS interfaces, support DMA 1 programmable linear feedback shift
registers
1 CRC(循环冗余校验) FIFO, can use for CRC16
and CRC32 calculating 1 ECC(错误校验纠正) FIFO
1 16-bit/24-bit DSP engine, support DMA. 1 Bit-fetcher, can use for bit stream analyzing Full-speed USB 2.0 OTG(on the go) controller
with 4 endpoints (including endpoint 0) and 512 bytes FIFO totally.
Analog Peripheral Features 4~20MHz Crystal Oscillator 1MHz RC oscillator
Full-speed USB 2.0 OTG PHY
40~200MHz Flexible PLL-based clock
generator
2 channels 16bit Class-D DAC
1 channel 8 levels Low Voltage Detector Power-on reset
3.3V to 1.8V Low Drop-Out regulator
Programming and Debugging Support In-System Programming (ISP) support In-System Debugging (ISD) support
Power Supply
LDOVDD, VDDIO, PLLVDD is 3.0-3.6V VDDCORE is 1.6-2.0V
Packages
80-pin LQFP (10mm x 10mm) 64-pin LQFP (10mm x 10mm) 48-pin LQFP (7mm x 7mm) DIE for
2007 AppoTech Limited. All rights reserved DS2005 v100
3,系统设计与系统框图
在基于AX2005单片机的以太网控制终端的方案中,以AX2005单片机为控制核心,单片机负责以下工作:
硬件系统部分的设计
1,在单片机内部开辟两个储存空间,分别用于发送和接受数据流。以太网封装格式中,是按照6字节目的硬件地址,6字节源地址,2字节类型,46~1500字节的数据,4字节的CRC校验码组成。应此,每个空间大小应该设置为1518字节。单片机访问这两个空间,发送数据时,将相应协议的报头和报文填入对应的位置,再将空间内的整个数据发送出去;接受数据时,单片机访问相应协议的报头位置,判断收到数据报的类型,再处理相应的报文。
图2-1
2,单片机利用MII接口与PHY连接,MAC协议由单片机提供。单片机内部产生MAC地址。以太网通信最终实质是以太网设备访问对方的48位MAC地址。建荣的AX2005单片机没有专门的符合IEEE802.3标准的MII接口,而是GPSI(通用串行接口)工作在MII模式下。由于AX2005的MII/GPSI接口支持DMA工作模式,并内部集成有32KB SRAM,可以直接被MII接口控制器读写。因此,在该方案中使用DMA模式,MCU只往缓冲区中读写数据,MII控制器会自动通过DMA将缓冲区的数据发到以太网,或者将以太网的数据收到缓冲区中,供CPU处理。
3,单片机利用UART接口,通过RS23转换器,在单片机收到以太网数据包时,通过串口,将收到的数据打印到显示屏上。或者通过串口将数据发到单片机,再转发到以太网。
6
图2-2 IEEE-802.3规范的以太网接口相关介绍
ETHERNET的接口实质是MAC通过MII总线控制PHY的过程。
MAC是Media Access Control 的缩写,即媒体访问控制子层协议。该协议位于OSI七层协议中数据链路层的下半部分,主要负责控制与连接物理层的物理介质。在发送数据的时候,MAC协议可以事先判断是否可以发送数据,如果可以发送将给数据加上一些控制信息,最终将数据以及控制信息以规定的格式发送到物理层;在接收数据的时候,MAC协议首先判断输入的信息并是否发生传输错误,如果没有错误,则去掉控制信息发送至LLC层。以太网MAC由IEEE-802.3以太网标准定义。
MII(Media Independent Interface)即媒体独立接口, “媒体独立”表明在不对MAC硬件重新设计或替换的情况下,任何类型的PHY设备都可以正常工作。包括分别用于发送器和接收器的两条独立信道。每条信道都有自己的数据、时钟和控制信号。MII数据接口总共需要16个信号,包括TX_ER,TXD<3:0>,TX_EN,TX_CLK,COL,RXD<3:0>,RX_EX,RX_CLK,CRS,RX_DV等。
MII以4位半字节方式传送数据双向传输,时钟速率25MHz。其工作速率可达100Mb/s。MII管理接口是个双信号接口,一个是时钟信号,另一个是数据信号。通过管理接口,上层能监视和控制PHY。其管理是使用SMI(Serial Management Interface)总线通过读写PHY的寄存器来完成的。PHY里面的部分寄存器是IEEE定义的,这样PHY把自己的目前的状态反映到寄存器里面,MAC通过SMI总线不断的读取PHY的状态寄存器以得知目前PHY的状态,例如连接速度,双工的能力等。当然也可以通过SMI设置PHY的寄存器达到控制的目的,例如流控的打开关闭,自协商模式还是强制模式等。不论是物理连接的MII总线和SMI总线还是PHY的状态寄存器和控制寄存器都是有IEEE的规范的,因此不同公司的MAC和PHY一样可以协调工作。当然为了配合不同公司的PHY的自己特有的一些功能,驱动需要做相应的修改。
IEEE802.3标准定义的以太网工作方式如下:IEEE802.3中定义的介质独立接口(MII)主要用来连接介质访问控制子层(MAC)和物理层(PHY),目的是使不同的物理层能够使用统一的接口连到MAC层,即物理层对MAC层是透明的。该接口可用于直接连接MAC与PHY芯片,也可连接分别装有MAC和PHY的两块印制板,此外,还可以通过一段电缆连接装有MAC和PHY的设备。这一接口支持10Mbps和100Mbps两种速率,而且两种速率实现的功能相同,其区别只是工作频率不一样。介质独立接口由18根信号线组成,其中发送方向7根(TXD<3:0>、TX EN、TX CLK、TX ER),接收方向7根(RXD<3:0>、RX DV、RX CLK、RX ER),此外,还有载波侦听(CRS)、冲突检测(COL)和串行管理通道(MDC、MDIO)信号。发送时钟(TX CLK)和接收时钟(RX CLK)一般由PHY提供(本文还将提出一种由另一端MAC或外界提供标准时钟的设计方案),根据数据率10Mpbs/100Mbps选择2.5MHz或25MHz时钟,且不论有无有效数据收发,时钟一直被正常提供。在发送方向,当介质访问控制子层有数据要发送时,在某个发送时钟上升沿应将发送使能信号(TX EN)置为高电平,同时发送待发数据(TXD<3:0>)的前同步码,直到数据发送完毕,发送使能信号被置为低电平为止。而在接收方向,一旦MAC控制器检测出接收数据有效信号(由PHY发出)为高电平,系统将在接下来的每个接收时钟上升沿采集接收数据(RXD<3:0>),直到接收数据有效
信号位被置为低电平为止。在半双工模式下,PHY将根据物理链路状况输出载波侦听(CRS)和冲突检测(COL)信号,这两种信号都不必与时钟同步。
4,网络协议设计详解
在该以太网控制终端设计中由于只需要实现ping功能,参考《TCP/IP详解 卷1:协议》,该方案中需要实现ARP地址解析协议,IP协议,ICMP协议,并实现UDP和TCP协议。
1)以太网首部:
以太网首部长度14字节,是由6字节的目的地址,6字节源地址,2字节类型构成。6字节以太网首部地址又叫MAC地址,MAC地址具有唯一性,每个以太网设备都有自己的MAC地址。以太网设备相互通信时,硬件寻址对方的MAC地址。由于以太网中每个设备的MAC地址都是唯一的,所以只要确定一个目标地址就能确定一个唯一的设备。在广播模式下,目标地址为全部为0XFF。以太网数据包类型标志为2字节,其中IP包为0x0800,ARP包为0x0806。以太网数据包最后有一个4字节的CRC校验包,确保数据在以太网传输中的正确性。一个以太网数据包最小长度64字节,最大长度为1518字节。因此任何一个以太网数据包,不管是什么类型,必须满足以太网数据包最小长度。
2)ARP地址解析协议:
数据链路如以太网或令牌环网都有自己的寻址机制(常常为48 bit地址),这是使用数据链路的任何网络层都必须遵从的。一个网络如以太网可以同时被不同的网络层使用。当一台主机把以太网数据帧发送到位于同一局域网上的另一台主机时,是根据48 bit的以太网地址来确定目的接口的。设备驱动程序从不检查I P数据报中的目的I P地址。地址解析为这两种不同的地址形式提供映射: 32 bit的I P地址和数据链路层使用的任何类型的地址。
ARP的数据包格式如下,长度为42字节。以太网首部14个字节,源地址为本机的固定地址,是个唯一的值,供硬件寻址用;目标地址在ARP请求中为广播模式,即全部为0xff,当从设备收到ARP请求后,回复ARP应答,在ARP应答中以太网目的地址为主机的以太网硬件地址,以太网源地址为本机以太网硬件地址;帧类型2字节长度,在ARP包中为0x0806。ARP报文为28个字节,硬件类型为2字节,硬件类型字段表示硬件地址的类型,它的值为1即表示以太网地址。协议类型为2字节,协议类型字段表示要映射的协议地址类型,它的值为0x0800即表示IP地址。它的值与包含IP数据报的以太网数据帧中的类型字段的值相同,这是有意设计的。接下来的两个1字节的字段,硬件地址长度和协议地址长度分别指出硬件地址和协议地址的长度,以字节为单位。对于以太网上IP地址的ARP请求或应答来说,它们的值分别为6和4。操作字段指出四种操作类型,它们是ARP请求(值为1)、ARP应答(值为2)、RA RP请求(值为3)和RARP应答(值为4)。这个字段必需的,因为A R P请求和A R P应答的帧类型字段值是相同的。 接下来的四个字段是发送端的硬件地址(在本例中是以太网地址)、发送端的协议地址(IP地址)、目的端的硬件地址和目的端的协议地址。注意,这里有一些重复信息:在以太网的数据帧报头中和A R P请求数据帧中都有发送端的硬件地址。
对于一个ARP请求来说,除目的端硬件地址外的所有其他的字段都有填充值。当系统收到
一份目的端为本机的ARP请求报文后,它就把硬件地址填进去,然后用两个目的端地址分别替换两个发送端地址,并把操作字段置为2,最后把它发送回去。
由于在以太网协议中,以太网报文长度在46~1500字节,然后再跟4字节的CRC校验,一个完整的以太网数据包最小长度为64字节。所以一个ARP包长度必须满足以太网数据包最小长度,必须要有18字节的填充,再跟4字节的CRC校验。
3)IP网际协议:IP是TCP/IP协议族中最为核心的协议。所有的TCP、UDP、ICMP及IGMP数据都以IP数据报格式传输
IP提供不可靠、无连接的数据报传送服务。不可靠(unreliable)的意思是它不能保证IP数据报能成功地到达目的地。IP仅提供最好的传输服务。无连接(connectionless)这个术语的意思是IP并不维护任何关于后续数据报的状态信息。每个数据报的处理是相互独立的。这也说明, IP数据报可以不按发送顺序接收。
IP数据报的格式如图2-4所示。普通的IP首部长为20个字节,除非含有选项字段。
协议版本号是4,因此IP有时也称作IPv4,以后还有一种新的IPv6协议,在此不作介绍。 首部长度指的是首部占32bit字的数目,包括任何选项。由于它是一个4比特字段,因此首部最长为60个字节。普通IP数据报(没有任何选择项)字段的值是5。
服务类型(TOS)字段包括一个3 bit的优先权子字段(现在已被忽略),4bit的TOS子字段和1bit未用位但必须置0。4 bit的TOS分别代表:最小时延、最大吞吐量、最高可靠性和最小费用。4bit中只能置其中1bit。如果所有4bit均为0,那么就意味着是一般服务。服务类型参见(表2-1)。
总长度字段是指整个IP数据报的长度,以字节为单位。利用首部长度字段和总长度字段,就可以知道IP数据报中数据内容的起始位置和长度。由于该字段长16比特,所以IP数据报最长可达65535字节。当数据报被分片时,该字段的值也随着变化。尽管可以传送一个长达65535字节的IP数据报,但是大多数的链路层都会对它进行分片。而且,主机也要求不能接收超过576字节的数据报。由于TCP把用户数据分成若干片,因此一般来说这个限制不会影响TCP。总长度字段是IP首部中必要的内容,因为一些数据链路(如以太网)需要填充一些数据以达到最小长度。尽管以太网的最小帧长为46字节(见图2-2),但是IP数据可能会更短。如果没有总长度字段,那么IP层就不知道46字节中有多少是IP数据报的内容。
标识字段唯一地标识主机发送的每一份数据报。通常每发送一份报文它的值就会加1。标识字段应该由让IP发送数据报的上层来选择。假设有两个连续的IP数据报,其中一个是由TCP生成的,而另一个是由UDP生成的,那么它们可能具有相同的标识字段。尽管这也可以照常工作(由重组算法来处理),但是在大多数从伯克利派生出来的系统中,每发送一个IP数据报,IP层都要把一个内核变量的值加1,不管交给IP的数据来自哪一层。内核变量的初始值根据系统引导时的时间来设置。
片偏移字段指的是该片偏移原始数据报开始处的位置。另外,当数据报被分片后,每个片的总长度值要改为该片的长度值。
TTL(time-to-live)生存时间字段设置了数据报可以经过的最多路由器数。它指定了数据报的生存时间。TTL的初始值由源主机设置(通常为32或64),一旦经过一个处理它的路由器,它的值就减去1。当该字段的值为0时,数据报就被丢弃,并发送ICMP报文通知源主机。第8章我们讨论Traceroute程序时将再回来讨论该字段。
协议字段为IP在首部中存入一个长度为8bit的数值。1表示为ICMP协议, 2表示为IGMP协议,6表示为TCP协议,17表示为UDP协议。
首部检验和字段是根据IP首部计算的检验和码。它不对首部后面的数据进行计算。ICMP、IGMP、UDP和TCP在它们各自的首部中均含有同时覆盖首部和数据检验和码。为了计算一份数据报的IP检验和,首先把检验和字段置为0。然后,对首部中每个16bit进行二进制反码求和(整个首部看成是由一串16bit的字组成),结果存在检验和字段中。当收到一份IP数据报后,同样对首部中每个16bit进行二进制反码的求和。由于接收方在计算过程中包含了发送方存在首部中的检验和,因此,如果首部在传输过程中没有发生任何差错,那么接收方计算的结果应该为全1。如果结果不是全1(即检验和错误),那么I P就丢弃收到的数据报。但是不生成差错报文,由上层去发现丢失的数据报并进行重传。
4)ICMP Internet控制报文协议与ping命令:ICMP经常被认为是IP层的一个组成部分。____
它传递差错报文以及其他需要注意的信息。ICMP报文通常被IP层或更高层协议(TCP或UDP)使用。一些ICMP报文把差错报文返回给用户进程。
ICMP报文各种类型如图2-7所示,不同类型由报文中的类型字段和代码字段来共同决定。图中的最后两列表明ICMP报文是一份查询报文还是一份差错报文。因为对ICMP差错报文有时需要作特殊处理,因此我们需要对它们进行区分。例如,在对ICMP差错报文进行响应时,永远不会生成另一份ICMP差错报文(如果没有这个限制规则,可能会遇到一个差错产生另一个差错的情况,而差错再产生差错,这样会无休止地循环下去)。当发送一份ICMP差错报文时,报文始终包含IP的首部和产生ICMP差错报文的IP数据报的前8个字节。这样,接收ICMP差错报文的模块就会把它与某个特定的协议(根据IP数据报首部中的协议字段来判断)和用户进程(根据包含在IP数据报前8个字节中的TCP或UDP报文首部中的TCP或UDP端口号来判断)联系起来。
下面各种情况都不会导致产生ICMP差错报文:
1) ICMP差错报文(但是,ICMP查询报文可能会产生ICMP差错报文)。
2) 目的地址是广播地址(见图3-9)或多播地址(D类地址,见图1-5)的IP数据报。
3) 作为链路层广播的数据报。
4) 不是IP分片的第一片(将在11.5节介绍分片)。
5) 源地址不是单个主机的数据报。这就是说,源地址不能为零地址、环回地址、广播地址或多播地址。
这些规则是为了防止过去允许ICMP差错报文对广播分组响应所带来的广播风暴。
ICMP地址掩码请求用于无盘系统在引导过程中获取自己的子网掩码(3.5节)。系统广播它的ICMP请求报文(这一过程与无盘系统在引导过程中用RARP获取IP地址是类似的)。无盘系统获取子网掩码的另一个方法是BOOTP协议,我们将在第16章中介绍。ICMP地址掩码请求和应答报文的格式如图2-8所示。
ICMP报文中的标识符和序列号字段由发送端任意选择设定,这些值在应答中将被返回。这样,发送端就可以把应答与请求进行匹配。
Ping程序由目的是为了测试另一台主机是否可达。该程序发送一份ICMP回显请求报文给主机,并等待返回ICMP回显应答。一般来说,如果不能Ping到某台主机,那么就不能Telnet或者FTP到那台主机。反过来,如果不能Telnet到某台主机,那么通常可以用Ping程序来确定问题出在哪里。Ping程序还能测出到这台主机的往返时间,以表明该主机离我们有“多远”。
我们称发送回显请求的ping程序为客户,而称被ping的主机为服务器。大多数的TCP/IP实现都在内核中直接支持Ping服务器—这种服务器不是一个用户进程。ICMP回显请求和回显应答报文如图2-9所示。
在局域网上运行ping程序的结果输出一般有如下格式:
当返回ICMP回显应答时,要打印出序列号和TTL,并计算往返时间。从上面的输出中可以看出,回显应答是以发送的次序返回的( 0,1,2等)。
ping程序通过在ICMP报文数据中存放发送请求的时间值来计算往返时间。当应答返回时,用当前时间减去存放在ICMP报文中的时间值,即是往返时间。输出的第一行包括目的主机的I P地址,尽管指定的是它的名字。这说明名字已经经过解析器被转换成I P地址了。现在,我们发现,如果敲入ping命令,几秒钟过后会在第1行打印出IP地址, DNS就是利用这段时间来确定主机名所对应的IP地址。
通常,第1个往返时间值要比其他的大。这是由于目的端的硬件地址不在ARP高速缓存中第1个RTT中多出的3ms很可能就是因为发送ARP请求和接收ARP应答所花费的时间。
以上是ping功能的实现原理,UDP和TCP协议实现参考《TCP/IP详解 卷1:协议》,本文只给出UDP和TCP的封装格式。
5)UDP协议
UDP是一个简单的面向数据报的运输层协议:进程的每个输出操作都正好产生一个UDP数据报,并组装成一份待发送的I P数据报。这与面向流字符的协议不同,如T C P,应用程序产生的全体数据与真正发送的单个IP数据报可能没有什么联系。UDP数据报封装成一份IP数据报的格式如图2-11。
UDP不提供可靠性:它把应用程序传给IP层的数据发送出去,但是并不保证它们能到达目的地。应用程序必须关心IP数据报的长度。
端口号表示发送进程和接收进程。TCP和UDP用目的端口号来分用来自IP层的数据的过程。由于IP层已经把IP数据报分配给TCP或UDP,因此TCP端口号由TCP来查看,而UDP端口号由UDP来查看。TCP端口号与UDP端口号是相互独立的。
UDP长度字段指的是UDP首部和UDP数据的字节长度。该字段的最小值为8字节(发送一份0字节的UDP数据报是OK)。这个UDP长度是有冗余的。IP数据报长度指的是数据报全长,因此U D P数据报长度是全长减去I P首部的长度(该值在首部长度字段中指定)。
UDP检验和覆盖UDP首部和UDP数据。回想IP首部的检验和,它只覆盖IP的首部—并不覆盖IP数据报中的任何数据。UDP和TCP在首部中都有覆盖它们首部和数据的检验和。UDP的检验和是可选的,而TCP的检验和是必需的。
6)TCP协议
TCP的服务:尽管TCP和UDP都使用相同的网络层(IP),TCP却向应用层提供与UDP完全不同的服务。TCP提供一种面向连接的、可靠的字节流服务。
TCP数据被封装在一个IP数据报中,如图2-13所示。
每个TCP段都包含源端和目的端的端口号,用于寻找发端和收端应用进程。这两个值加上IP首部中的源端IP地址和目的端IP地址唯一确定一个TCP连接。
序号用来标识从TCP发端向TCP收端发送的数据字节流,它表示在这个报文段中的的第一个数据字节。如果将字节流看作在两个应用程序间的单向流动,则TCP用序号对每个字节进行计数。序号是32bit无符号数,序号到达232-1后又从0开始。
既然每个传输的字节都被计数,确认序号包含发送确认的一端所期望收到的下一个序号。因此,确认序号应当是上次已成功收到数据字节序号加1。只有ACK标志为1时确认序号字段才有效。
首部长度给出首部中32bit字的数目。需要这个值是因为任选字段的长度是可变的。这个字段占4bit,因此TCP最多有60字节的首部。然而,没有任选字段,正常的长度是20字节。在TCP首部中有6个标志比特。它们中的多个可同时被设置为1。我们在这儿简单介绍它们的用法。
URG 紧急指针( u rgent pointer)有效。
ACK 确认序号有效。
PSH 接收方应该尽快将这个报文段交给应用层。
RST 重建连接。
SYN 同步序号用来发起一个连接。
FIN 发端完成发送任务。
TCP的流量控制由连接的每一端通过声明的窗口大小来提供。窗口大小为字节数,起始于确认序号字段指明的值,这个值是接收端正期望接收的字节。窗口大小是一个16bit字段,因而窗口大小最大为65535字节。
检验和覆盖了整个的TCP报文段:TCP首部和TCP数据。这是一个强制性的字段,一定是由发端计算和存储,并由收端进行验证。TCP检验和的计算和UDP检验和的计算相似。
5,程序运行流程
本文仅要求实现对ping的响应,在嵌入式系统中,一般只要求以太网终端具备对ping的应答能力,不需要ping请求。另外,嵌入式以太网终端大多数工作在从模式,因而可以省略ARP请求的功能。
对于将来功能的扩展升级,可以在TCP和UDP中间任选一种协议作为数据传输。对于控制信号,文件传输,采用TCP协议。对于流媒体信号,可以采用UDP保证实时性。
由于TCP或者UDP与ICMP同属于IP数据报。在修改ICMP服务程序后,可以作TCP或者UDP服务程序用。
6,以太网PHY层设计的注意事项
以太网PHY层属于通信系统中的信道,因此要考虑到传输信道中的抗干扰问题。
PHY通过RJ45接口接入铜线,这种传输介质可以实现长距离通信。PHY的功能是将MII接口的并行数据转换成串行数据,在信道中收发。参考《通信原理》,信道中应该加入扰码,保证信道中的信号具有一定的频率,防止在信道中被虑掉。PHY可以配置成半双工、全双工两种模式,和10M、100M两种连接速度。
100BaseTX采用4B/5B编码。PHY在发送数据的时候,收到MAC过来的数据(对PHY来说,没有帧的概念,对它来说,都是数据而不管什么地址,数据还是CRC),每4bit就增加 AppoTech Limited. All rights reserved DS2005 v100 16
1bit的检错码,然后把并行数据转化为串行流数据,再按照物理层的编码规则把数据编码,再变为模拟信号把数据送出去。收数据时的流程反之。
PHY还有个重要的功能就是实现CSMA/CD的部分功能。它可以检测到网络上是否有数据在传送,如果有数据在传送中就等待,一旦检测到网络空闲,再等待一个随机时间后将送数据出去。如果两个碰巧同时送出了数据,那 样必将造成冲突,这时候,冲突检测机构可以检测到冲突,然后各等待一个随机的时间重新发送数据。这个随机时间很有讲究的,并不是一个常数,在不同的时刻计算出来的随机时间都是不同的,而且有多重算法来应付出现概率很低的同两台主机之间的第二次冲突。
通信速率通过双方协商,协商的结果是两个设备中能同时支持的最大速度和最好的双工模式。这个技术被称为Auto Negotiation或者NWAY。
隔离变压器把PHY送出来的差分信号用差模耦合的线圈耦合滤波以增强信号,并且通过电磁场的转换耦合到连接网线的另外一端。RJ-45中1、2是传送数据的,3、6是接收数据的。新的PHY支持AUTO MDI-X功能(也需要隔离变压器支持)。它可以实现RJ-45接口的1、2上的传送信号线和3、6上的接收信号线的功能自动互相交换。
RTL8201 PHY核心电路需要2.5V电压供电。不过,数字IO和DAC电路需要3.3V电源支持。RTL8201BL有一个内嵌的减压器将3.3V转换为2.5V。就像许多商用变压设备,该电路的
2.5V输出引脚(PWFBOUT),需要使用一个22μF的钽电容作为该设备的频率校正部分,另外还需要一个小的电容(0.1μF)用于高频去噪。PWFBIN引脚通过一个铁氧体磁珠从PWFBOUT引脚引入2.5V电源,如下图所示。这里着重强调的是,不能够使用任何其它电源设备为PWFBOUT和PWFBIN引脚提供外部的2.5V电源支持。
模拟和接地层应该尽可能的大且完整。如果接地层足够大,则将模拟和数字接地分开将是更好的构造。不过,如果总的接地层并不十分大,那么将接地层分开的做法就不太合适。在这种情况下,所有的接地引脚可以一起连接到一个单一的大且完整的接地层。
三,选定方案的实现
1,硬件设计:
单片机与PHY的MII接口配置
要将RTL8201BL设置为MII操作模式,就必须拉高MII/SNIB引脚并对ANE、SPEED和DUPLEX引脚进行适当设置。
MII是一个介于PHY和MAC之间的符合IEEE 802.3u标准的18信号接口。该接口在两种频率下操作:25Mhz和2.5Mhz,支持100Mbps/10Mbps两种带宽下的收发功能。发送数据时,MAC首先声明TXEN信号,然后将字节数据变为4位的半字节并通过TXD[0..3]将其传递给PHY。在内部TXEN被声明期间,PHY用TXC — PHY支持的传输时钟信号 — 同步对TXD[0..3]的采样。接收信息包时,PHY将声明RXEN信号,传递由RXC时钟控制的接收半字节数据RXD[0..3],它从接收的数据中恢复。CRS和COL信号用于冲突检测和处理。
在100Base-TX模式,当5B下的解码信号不是空闲(not IDLE)时,CRS信号将声明;而当5B被认为空闲时,其将被解除声明。在10Base-T模式,当10M前导同步信号被确定时,CRS信号将声明;而当空闲(IDLE)模式被确定时,其将被解除声明。
在100Mbps模式,当5B解码是/J/K/时,RXDV信号将被声明;如果5B是/T/R/或者空闲则其将被解除声明。在10Mbps模式,RXDV与CRS信号相同。
如果任何5B解码错误发生,比如无效的J/K,T/R,无效的符号等,RXER(Receive Error,接收错误)信号将被声明。该引脚会被拉高一个或多个时钟周期以指示适配子层(Reconciliation Sublayer,适配层是MAC层和物理层之间的通路,译注)在帧的某个位置发现一个错误。
RTL8201BL不使用TXER信号并且不会影响传输功能。
AX2005支持GPSI模块, 可以工作在主模式和从模式下,包括以下特征
独立的TX,RX结构,每个都有各自的4字节FIFO 支持4种时序模式,分别是GPSI模式,类SPI模式,类UART模式和类USART模式。 硬件头校验功能
AppoTech Limited. All rights reserved DS2005 v100 17
提供发射时钟的分频器
独立的RX,TX DMA控制,二者可以同时工作。 12个引脚,兼容MII模式 RX Data In (GRD) – P2.5 RX Data1 In (GRD) – P3.3 RX Data2 In (GRD) – P3.4 RX Data3 In (GRD) – P3.5 RX Clock In (GRC) – P2.4 RX Enable In (GRE) – P2.7 TX Data Out (GTD) – P2.3 TX Data1 Out (GTD) – P1.4 TX Data2 Out (GTD) – P1.5 TX Data3 Out (GTD) – P1.6 TX Clock Out (GTC) – P2.2 TX Enable Out (GTE) – P2.6
LED接口/PHY地址配置
上电重新配置用于MII管理寄存器接口的PHY地址[0:4]期间,这五个引脚被锁存。然后,在初始复位之后的正常操作时,它们作为状态指示LED的驱动引脚使用。其驱动极性,或者为高或者为低,由上电复位期间每个PHY地址[4:0]的锁定状态决定。如果锁定状态为高,则其为低;如果锁定状态为低,则其为高。
此方案中,RTL8201被配置成强制10Mbps全双工模式,使用MII接口,地址为1,不使用MII管理接口去修改配置。
【物联网的毕业论文】相关文章:
什么是物联网?02-10
物联网就业前景02-14
物联网工程就业前景12-31
物联网工程专业就业方向12-31
物联网工程就业前景分析07-07
物联网工程就业前景如何?07-23
物联网社会实践报告02-03
物联网应用调研报告范本04-08
关于物联网课程报告总结05-09