一.以太网控制器
以太网控制器也叫以太网适配器,就是俗称的网卡,以太网控制器使用一个特定的物理层和数据链路层标准。文档1使用的是ENC28J60,自己项目中用的是W5200。之前没接触过,用到了也没有好好学习,整好趁此机会学习一下。
ENC28J60是带有标准串行外设接口(SPI)的独立以太网控制器,它可以作为任何配备有SPI通信接口的单片机的以太网接口,它符合IEEE802.3的全部规范,采用一系列包过滤机制对传入数据包进行限制,还提供了一个内部DMA模块,以实现快速数据吞吐和硬件支持的IP校验和计算。与主控制器的通信通过两个中断引脚和SPI实现,数据传输速率高达10Mb/s。两个专用的引脚用于连接LED,进行网络活动状态指示。
二.DMA
DMA就是直接内存存取,所谓直接内存存取,就是DMA既可以指内存和外设直接存取数据这种内存访问的计算机技术,又可以指实现该技术的硬件模块(对于通用计算机PC而言,DMA控制逻辑由CPU和DMA控制接口逻辑芯片共同组成,嵌入式系统的DMA控制器内建在处理器芯片内部,一般称为DMA控制器,DMAC)。使用DMA的好处就是它不需要CPU的干预而直接服务外设,这样CPU就可以去处理别的事务,从而提高系统的效率,对于慢速设备,如UART,其作用只是降低CPU的使用率,但对于高速设备,如硬盘,它不只是降低CPU的使用率,而且能大大提高硬件设备的吞吐量。通过DMA模块,它允许不同速度的硬件装置来沟通,而不需要依赖于
CPU 的大量中断负载。否则,CPU 需要从来源把每一片段的资料复制到暂存器,然后把它们再次写回到新的地方。在这个时间中,CPU 对于其他的工作来说就无法使用。DMA 传输将数据从一个地址空间复制到另外一个地址空间。当CPU 初始化这个传输动作,传输动作本身是由 DMA 控制器来实行和完成。典型的例子就是移动一个外部内存的区块到芯片内部更快的内存区。像是这样的操作并没有让处理器工作拖延,反而可以被重新排程去处理其他的工作。DMA
传输对于高效能嵌入式系统算法和网络是很重要的。更具体的内容参见http://blog.csdn.net/bugouyonggan/article/details/17796803
ENC28J60的主要特点如下:
- 兼容IEEE802.3协议的以太网控制器
- 集成MAC和10BASE-T物理层(10BASE-T就是双绞线以太网)
- 支持全双工和半双工模式
- 数据冲突时可编程自动重发
- ……
ENC28J60的典型应用电路如图所示:
ENC28J60模块通过一个 该模块通过一个 该模块通过一个 该模块通过一个 8个引脚的排针与外部电路连接这 8个引脚分别是: GND 、RST、MISO 、 SCK、 MOSI 、INT、CS 和 V3.3。其中 。其中 GND 和 V3.3用于给模块供电, MISO/MOSI/SCK用于SPI通信, CS 是片选信号, INT为中断输出引脚,RSTRST 为模块复位信号。
三.局域网知识
在此补充一点关于MAC的知识。MAC层是数据链路层的概念,先介绍常用接入网类型可分为以下几个:
①基于ATM架构类
-传统电信网络:点对点
-DSL电话线
ATM与点对点链路:
先说ATM,ATM即为异步传输模式,面向连接的分组交换/虚电路交换。
在电话线接入中,运营商给每个客户都事先分配了固定的VPI/VCI(虚路径标识和虚通道标识),大多使用PVC,为了便于管理,运营商一般通过PPP over ATM技术,将PVC变成一个逻辑的点对点链路集合。PPP是个数据链路层协议,通过PPP协议可以完成链路的建立、维护和终结,用户认证,网络参数协商(包括IP地址分配等)。
对于接入服务器来说每条PPP链路的另一端都对应着一个用户,因此便于认证、计费和管理。PPP链路的两端对应着通信双方,因此不存在寻址问题,接入服务器要和AAA服务器(常用RADIUS服务器)配合工作,以完成认证计费等功能,AAA即为认证、授权、计费。
PPP协议在点对点链路上传输多种协议数据,它的构成包括LCP、PAP、CHAP、NCP等,之前我也研究过PPP协议的帧结构,具体内容参照此博客PPP协议概述,博主介绍的很详细。
DSL电话线:
再介绍DSL,主要分为对称DSL,和非对称DSL(ADSL,上下行带宽不对称,上行小于下行),ADSL的调制技术是DMT,关键设备是DSLAM,体系结构包括ATM和PPPOE,体系架构图如下:
这里涉及到了PPPOE协议,为什么要使用PPPOE呢,这是来自用户和运营商的共同需求。用户希望能够通过一个CPE设备(用户前端设备,例如ADSL Modem)来接入多台主机,实际网络运行经验表明,以太网是一种有效低成本的多主机接入技术,但以太网不支持认证,计费等功能。另一方面运营商同时希望能够实现基于用户的访问控制和计费功能,而在传统的拨号网络中通过PPP可以对用户进行认证和计费。一个自然的想法就是把以太网和PPP两种技术结合起来,因此引入了PPP over Ethernet,在以太网上建立PPP连接,本质是在多路访链路上提供一条逻辑的点对点链路,也被称为PPPOE会话。
•PPPOE运行在用户主机和BRAS(也称为远端访问集中器(AC:Access Concetrator))之间,并且在两者之间建立PPP会话
•PPPOE分为两个阶段
–发现阶段
•为了在以太网上建立PPP会话,通信双方必须知道对方的MAC地址,并且协商一个唯一的会话标识(Session_ID)
•主机发现网络中所有可用的BRAS(MAC地址),并且选择一个BRAS为其提供接入服务
•无状态,不会分配任何资源
–PPP会话阶段
•标准的PPP过程,当PPP会话建立后,主机和BRAS为PPP会话分配资源
②基于IEEE802参考模型的局域网架构类
-新兴IP网络:共享
-以太网(802.3),无线局域网(802.11),无线城域网(802.16)
局域网(LAN)的被定义为一个广播域,即在局域网内的目的地址为广播地址的IP分组或者数据链路层帧会被所有的网络节点接收和处理。其中以太网是应用最广泛的局域网技术,对应着IEEE802.3
局域网参考模型如下图:
将数据链路层划分为两个子层的原因主要是:在传统的点对点链路控制中没有管理访问共享媒介的逻辑需求, MAC子层负责对共享链路访问进行控制,以及对于相同的LLC子层可以提供不同的MAC子层。常用以太网、无线局域网等局域网具有相同的LLC子层,只是MAC子层不同
LLC:
•功能:传输服务/ 到上层的服务接口/流量控制等
•LLC是一个对所有LAN都相同的链路层协议,它定义了两个用户之间数据交换的机制,提供了三种可选的服务
–无确认的非连接服务(UnacknowledgedConnectionless Service)
–连接模式服务(Connection-modeService)
–确认无连接服务(AcknowledgedConnectionless Service)
•设备厂商将LLC服务作为可选项提供给客户,客户可以根据自己应用的需求选择合适的服务
MAC:
•功能:寻址/访问控制/差错控制/移动管理等
•重点解决共享链路访问控制问题,具体的MAC机制与传输媒介的物理特性相关
–有线:以太网、光网络等
–无线:无线局域网、无线城域网等
•CSMA/CD(带冲突检测的载波侦听多路访问)是最经典的MAC机制,在以太网(802.3)中使用
对于802.11协议,使用的是CSMA/CA(带冲突避免的载波侦听多路访问机制),网络组成一般采用Ad Hoc网络,也称为自组织网络。Ad Hoc网络仅由STA(无线站点,配置支持802.11协议的无线网卡的终端,STA通过MAC层机制来共享一个无线信道,最简单的WLAN仅有STA组成,他们之间互相通信)之间通过无线传输媒介组成的网络,这些STA在彼此无线信号覆盖范围内,因此之间能够互相通信。
③光纤接入类
-基于ATM:APON,GPON
-基于以太网:EPON