嵌入式系统网络接口.ppt

上传人:b****3 文档编号:2744004 上传时间:2022-11-10 格式:PPT 页数:80 大小:449.50KB
下载 相关 举报
嵌入式系统网络接口.ppt_第1页
第1页 / 共80页
嵌入式系统网络接口.ppt_第2页
第2页 / 共80页
嵌入式系统网络接口.ppt_第3页
第3页 / 共80页
嵌入式系统网络接口.ppt_第4页
第4页 / 共80页
嵌入式系统网络接口.ppt_第5页
第5页 / 共80页
点击查看更多>>
下载资源
资源描述

嵌入式系统网络接口.ppt

《嵌入式系统网络接口.ppt》由会员分享,可在线阅读,更多相关《嵌入式系统网络接口.ppt(80页珍藏版)》请在冰豆网上搜索。

嵌入式系统网络接口.ppt

第第7章章嵌入式系统网络接口嵌入式系统网络接口7.1以太网接口以太网接口n嵌入式系统通常使用的以太网协议是IEEE802.3标准。

从硬件的角度看,802.3模型层间结构如图7.1.1所示,以太网接口电路主要由媒质接入控制MAC控制器和物理层接口(PhysicalLayer,PHY)两大部分构成。

图7.1.1802.3模型层间结构n1传输编码传输编码n在802.3版本的标准中,没有采用直接的二进制编码(即用0V表示“0”,用5V表示“1”),而是采用曼彻斯特编码(ManchesterEncoding)或者差分曼彻斯特编码(DifferentialManchesterEncoding),不同编码形式如图7.1.2所示。

图7.1.2不同编码形式n其中:

曼彻斯特编码的规律是:

每位中间有一个电平跳变,从高到低的跳变表示为“0”,从低到高的跳变表示为“1”。

n差分曼彻斯特编码的规律是:

每位的中间也有一个电平跳变,但不用这个跳变来表示数据,而是利用每个码元开始时有无跳变来表示“0”或“1”,有跳变表示“0”,无跳变表示“1”。

n曼彻斯特编码和差分曼彻斯特编码相比,前者编码简单,后者能提供更好的噪声抑制性能。

在802.3系统中,采用曼彻斯特编码,其高电平为+0.85V,低电平信号为-0.85V,这样指令信号电压仍然是0V。

n2802.3Mac层的帧层的帧n802.3Mac层的以太网的物理传输帧如表7.1.1所示。

n表7.1.1802.3帧的格式nPR:

同步位,用于收发双方的时钟同步,同时也指明了传输的速率,是56位的的二进制数101010101010,最后2位是10。

SD:

分隔位,表示下面跟着的是真正的数据而不是同步时钟,为8位的10101011。

DA:

目的地址,以太网的地址为48位(6个字节)二进制地址,表明该帧传输给哪个网卡。

如果为FFFFFFFFFFFF,则是广播地址。

广播地址的数据可以被任何网卡接收到。

SA:

源地址,48位,表明该帧的数据是哪个网卡发的,即发送端的网卡地址,同样是6个字节。

nTYPE:

类型字段,表明该帧的数据是什么类型的数据,不同协议的类型字段不同。

如:

0800H表示数据为IP包,0806H表示数据为ARP包,814CH是SNMP包,8137H为IPX/SPX包。

小于0600H的值是用于IEEE802的,表示数据包的长度。

nDATA:

数据段,该段数据不能超过1500B。

因为以太网规定整个传输包的最大长度不能超过1514E(14B为DA,SA,TYPE)。

nPAD:

填充位。

由于以太网帧传输的数据包最小不能小于60B,除去(DA、SA、TYPE的14B),还必须传输46B的数据,当数据段的数据不足46B时,后面通常是补0(也可以补其他值)。

nFCS:

32位数据校验位。

32位的CRC校验,该校验由网卡自动计算,自动生成,自动校验,自动在数据段后面填入。

不需要软件管理。

n通常,PR、SD、PAD、FCS这几个数据段都是网卡(包括物理层和Mac层的处理)自动产生的,剩下的DA、SA、TYPE、DATA这4个段的内容是由上层的软件控制的。

n3以太网数据传输的特点以太网数据传输的特点n所有数据位的传输由低位开始,传输的位流是用曼彻斯特编码。

n以太网是基于冲突检测的总线复用方法,冲突退避算法是由硬件自动执行的。

n以太网传输的数据段的长度,DA+SA+TYPE+DATA+PAD最小为60B,最大为1514B。

n通常的以太网卡可以接收3种地址的数据,一个是广播地址,一个是多播地址(或者叫组播地址,在嵌入式系统中很少用到),一个是它自己的地址。

但有时,用于网络分析和监控,网卡也可以设置为接收任何数据包。

n任何两个网卡的物理地址都是不一样的,是世界上唯一的,网卡地址由专门机构分n配。

不同厂家使用不同地址段,同一厂家的任何两个网卡的地址也是唯一的。

根据网卡的地址段(网卡地址的前3个字节)可以知道网卡的生产厂家。

n7.1.2嵌入式以太网接口的实现方法n在嵌入式系统中增加以太网接口,通常有如下两种方法实现:

n

(1)嵌入式处理器网卡芯片n这种方法只要把以太网芯片连接到嵌入式处理器的总线上即可。

此方法通用性强,对嵌入式处理器没有特殊要求,不受处理器的限制,但是,嵌入式处理器和网络数据交换通过外部总线(通常是并行总线)交换数据,速度慢,可靠性不高,电路板走线复杂。

目前常见的以太网接口芯片,如CS8900、RTL8019/8029/8039、DM9008及DWL650无线网卡等。

n

(2)带有以太网接口的嵌入式处理器n带有以太网接口的嵌入式处理器通常是面向网络应用而设计的,要求嵌入式处理器有通用的网络接口(比如:

MII接口),处理器和网络数据交换通过内部总线,速度快。

n7.1.3在嵌入式系统中主要处理的以太网协议nTCP/IP是一个分层的协议,包含有用于层、传输层、网络层、数据链路层、物理层等。

每一层实现一个明确的功能,对应一个或者几个传输协议。

每层相对于它的下层都作为一个独立的数据包来实现。

典型的分层和每层上的协议如表7.1.2所示。

n表7.1.2TCP/IP协议的典型分层和协议n1ARP(AddressResolationProtocol,地址解析协议),地址解析协议)n网络层用32位的地址来标识不同的主机(即IP地址),而链路层使用48位的物理(MAC)地址来标识不同的以太网或令牌环网接口。

只知道目的主机的IP地址并不能发送数据帧给它,必须知道目的主机网络接口的物理地址才能发送数据帧。

nARP的功能就是实现从IP地址到对应物理地址的转换。

源主机发送一份包含目的主机IP地址的ARP请求数据帧给网上的每个主机,称作ARP广播,目的主机的ARP收到这份广播报文后,识别出这是发送端在询问它的IP地址,于是发送一个包含目的主机IP地址及对应的物理地址的ARP回答给源主机。

n为了加快ARP协议解析的数据,每台主机上都有一个ARPcache存放最近的IP地址到硬件地址之间的映射记录。

其中每一项的生存时间(一般为20分钟),这样当在ARP的生存时间之内连续进行ARP解析的时候,不需要反复发送ARP请求了。

n2ICMP(InternetControlMessagesProtocol,网络控制,网络控制报文协议)报文协议)nICMP是IP层的附属协议,IP层用它来与其他主机或路由器交换错误报文和其他重要控制信息。

ICMP报文是在IP数据包内部被传输的。

在Linux或者Windows中,两个常用的网络诊断工具ping和traceroute(Windows下是Tracert),其实就是ICMP协议。

n3IP(InternetProtocol,网际协议),网际协议)nIP工作在网络层,是TCP/IP协议族中最为核心的协议。

所有的TCP、UDP、ICMP及IGMP数据都以IP数据包格式传输(IP封装在IP数据包中)。

IP数据包最长可达65535字节,其中报头占32位。

还包含各32位的源IP地址和32位的目的IP地址。

nTTL(time-to-live,生存时间字段)指定了IP数据包的生存时间(数据包可以经过的最多路由器数)。

TTL的初始值由源主机设置,一旦经过一个处理它的路由器,它的值就减去1。

当该字段的值为0时,数据包就被丢弃,并发送ICMP报文通知源主机重发。

nIP提供不可靠、无连接的数据包传送服务,高效、灵活。

n不可靠(unreliable)的意思是它不能保证IP数据包能成功地到达目的地。

如果发生某种错误,IP有一个简单的错误处理算法:

丢弃该数据包,然后发送ICMP消息报给信源端。

任何要求的可靠性必须由上层来提供(如TCP)。

n无连接(connectionless)的意思是IP并不维护任何关于后续数据包的状态信息。

每个数据包的处理是相互独立的。

IP数据包可以不按发送顺序接收。

如果一信源向相同的信宿发送两个连续的数据包(先是A,然后是B),每个数据包都是独立地进行路由选择,可能选择不同的路线,因此B可能在A到达之前先到达。

nIP的路由选择:

源主机IP接收本地TCP、UDP、ICMP、GMP的数据,生成IP数据包,如果目的主机与源主机在同一个共享网络上,那么IP数据包就直接送到目的主机上。

否则就把数据包发往一默认的路由器上,由路由器来转发该数据包。

最终经过数次转发到达目的主机。

IP路由选择是逐跳(hop-by-hop)进行的。

所有的IP路由选择只为数据包传输提供下一站路由器的IP地址。

n4TCP(TransferControlProtocol,传输控制协议),传输控制协议)nTCP协议是一个面向连接的可靠的传输层协议。

TCP为两台主机提供高可靠性的端到端数据通信。

它所做的工作包括:

n发送方把应用程序交给它的数据分成合适的小块,并添加附加信息(TCP头),包括顺序号,源、目的端口,控制、纠错信息等字段,称为TCP数据包。

并将TCP数据包交给下面的网络层处理。

n接受方确认接收到的TCP数据包,重组并将数据送往高层。

n5UDP(UserDatagramProtocol,用户数据包协议),用户数据包协议)nUDP协议是一种无连接不可靠的传输层协议。

它只是把应用程序传来的数据加上UDP头(包括端口号,段长等字段),作为UDP数据包发送出去,但是并不保证它们能到达目的地。

可靠性由应用层来提供。

n因为协议开销少,和TCP协议相比,UDP更适用于应用在低端的嵌入式领域中。

很多场合如网络管理SNMP,域名解析DNS,简单文件传输协议TFTP,大都使用UDP协议。

n6.端口端口nTCP和UDP采用16位的端口号来识别上层的TCP用户,即上层应用协议,如FTP和TELNET等。

常见的TCP/IP服务都用众所周知的1255之间的端口号。

例如FTP服务的TCP端口号都是21,Telnet服务的TCP端口号都是23。

TFTP(简单文件传输协议)服务的UDP端口号都是69。

2561023之间的端口号通常都是提供一些特定的UNIX服务。

TCP/IP临时端口分配10245000之间的端口号。

n7.1.4网络编程接口nBSD套接字(BSDSockets)使用的最广泛的网络程序编程方法,主要用于应用程序的编写,用于网络上主机与主机之间的相互通信。

n很多操作系统都支持BSD套接字编程。

例如,UNIX、Linux、VxWorks、Windows的Winsock基本上是来自BSDSockets。

n套接字(Sockets)分为StreamSockets和DataSockets。

StreamSockets是可靠性的双向数据传输,对应使用TCP协议传输数据;DataSockets是不可靠连接,对应使用UDP协议传输数。

n下面给出一个使用套接字接口的UDP通信的流程。

nUDP服务器端和一个UDP客户端通信的程序过程:

n

(1)创建一个Socket:

nsFd=socket(AF_INET,SOCK_DGRAM,0)n

(2)把Socket和本机的IP,UDP口绑定:

nbind(sFd,(structsockaddr*)&serverAddr,sockAddrSize)n(3)循环等待,接收(recvfrom)或者发送(sendfrom)信息。

n(4)关闭Socket,通信终止:

nclose(sFd)n7.1.5以太网的物理层接口及编程n大多数ARM都内嵌一个以太网控制器,支持媒体独立接口(MediaIndependentInterfaceMII)和带缓冲DMA接口(BufferedDMAInterface,BDI),可在半双工或全双工模式下提供10M/100Mbps的以太网接入。

在半双工模式下,控制器支持CSMA/CD协议;在全双工模式下,支持IEEE802.3MAC控制层协议。

ARM内部虽然包含了以太网MAC控制,但并未提供物理层接口,因此,需外接一片物理层芯片以提供以太网的接入通道。

n常用的单口10M/100Mbps高速以太网物理层接口器件均提供MII接口和传统7线制网络接口,可方便地与ARM接口。

以太网物

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 工作计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1