利用Rabbit3000芯片设计以太网接入功能与TCP/IP协议栈的优势分析
2008-07-07
作者:杨 早
摘 要: 首先分析了网络方案设计过程中需要注意的三个问题,介绍并分析了现有的几种设计方案,并以Rabbit3000芯片为例,分析了该芯片在构建以太网接口和TCP/IP" title="TCP/IP">TCP/IP协议栈" title="协议栈">协议栈方面的优势。
关键词: 以太网 TCP协议 Rabbit3000微处理器
在长期采用RS-232/RS-485等串行传输接口作为数据传输接口之后,现在越来越多的基于单片机的嵌入式系统开始提供以太网接口的高速数据传输接口,用于多个节点之间的数据交互,而且在单片机内部实现了TCP/IP协议栈,从而具备远程网络间的数据传输能力。TCP/IP协议栈是互联网上数据传输的事实标准,支持TCP/IP协议栈可以使各个厂家生产的设备之间实现互连互通,而且可以较为方便地访问互联网上的其他资源,如文件服务器、邮件服务器等。
不断提供更多功能是嵌入式系统的一个发展方向,但是更多的功能就意味着更多的计算任务、代码存储空间、数据存储" title="数据存储">数据存储空间,而嵌入式系统的计算能力和存储空间相对有限,因此需要在设计和选型时仔细规划。本文从网络功能入手,针对方案设计中的技术细节,从以下三点进行了分析:(1)以太网接入" title="以太网接入">以太网接入并不等同于支持TCP/IP协议栈; (2)并不是每一种类型的单片机都能够提供足够的处理能力来支持以太网接入;(3)系统对TCP/IP协议栈的支持是有量化衡量指标的,不只是一个是或否的问题。
经过上述分析之后,本文就目前已有的几种设计方法,分析了Rabiit3000微处理器在提供网络功能方面的一些技术优势。
1 以太网接入不等于对TCP/IP协议栈的支持
作为一种数据传输技术,从传统的OSI七层模型(见图1)来分析,以太网技术提供的是物理层和数据链路层上的数据传输服务,它与RS-485传输协议的区别在于传输速度快和支持对等传输模式。以太网技术没有规定每一个传输点的地址分配问题、报文的转发与路由问题,它部分解决了点对点之间数据传输正确性问题,但是没有规定如何保证非直接相连节点之间报文传输的丢失、重复以及乱序问题。这些问题是局域网以及广域网都必须面对的问题,需要有另外的协议机制来解决,从计算机网络技术的发展过程看,以太网上应用的网络层/传输层协议有NetBEUI 协议、IPX/SPX协议、TCP/IP协议栈等。NetBEUI 协议是IBM公司开发的非路由协议,用于携带NETBIOS通信,其协议比较简单,适用于单个网段组成的局域网;IPX/SPX协议是NOVELL公司用于NETWARE客户端/服务器的协议族,其中IPX协议具有完全的路由能力,可以跨网络传输报文,SPX协议则负责保证报文在跨网络传输时的正确性;IP/TCP协议栈是广域网上应用非常广泛的传输协议,具有很强的灵活性,能够支持多种网络接入方式,如电话线、以太网、无线接入等。
如上所述,即使设计方案提供了以太网接入功能,它也只是提供了一个高速、多点间的数据传输接口,并不意味着设计方案有完整的数据传输功能,不能保证设备之间的数据互联互通。
2 单片机的数据存储能力和存取速度分析
对于个人电脑,从以太网络上读取和发送数据的任务是由网卡负责的,主板和网卡之间一般采用基于中断的通知方式和基于PCI总线的数据传输方式。PCI总线提供32bit的数据传输宽度与132Mbps的传输速度,这些都是小型单片机所不能提供的。在基于单片机的设计方案中,单片机多数通过8位数据总线与RTL8019等以太网MAC控制芯片相连,单片机直接从以太网MAC控制芯片读取收到的数据报文,然后放置在存储芯片中。对于单指令周期的单片机,假设它接在10Mbps的以太网络上,MAC控制芯片本身能够缓冲10个报文,并可能出现连续几十个报文的流量模型,则单片机需要在数据总线上提供10M~20Mbps的数据传输带宽,以防止因为缓冲溢出而丢失报文。如果单片机使用的是8位数据总线,则一条数据传输指令要在0.5μs~1μs之内完成。对于传统的8051单片机,一条MOVX需要两个机器周期的时间,每个机器周期由12个时钟周期组成,这就意味着单片机的晶振要在24M~48MHz左右。考虑到单片机同时还要以高优先级处理按键、显示、A/D转换等控制任务,只能将部分处理能力分配给以太网报文处理功能,所以以太网接入功能的引入对于单片机的运算速度提出了比较高的要求。
基于单片机的以太网接入设计方案另一个需要注意的问题是单片机数据存储空间的大小。与个人电脑相比,单片机的数据存储空间非常有限,8051系列单片机" title="系列单片机">系列单片机的外部数据存储空间为64KB,TI公司推出的MSC1210单片机外部也可扩展至64KB存储器。以太网上传输的报文常规大小在1KB左右,IP协议报文大小规定不超过64KB,除了其他变量和数据结构,64KB的存储器可以放置几十个以太网报文和若干个IP层协议报文。在不考虑TCP/IP协议栈的情况下,这样的存储情况可以满足解决报文丢失、乱序问题的要求。因此64KB存储器是单片机进行以太网报文处理的一个基本要求。
3系统对TCP/IP协议栈的量化衡量指标的要求
TCP/IP协议栈最早是为Unix系统设计的,随后移植到Windows和Linux等操作系统上,是目前互联网和局域网通信的事实标准。TCP/IP协议栈内包括了多项协议,例如处理网络层报文的IP协议和ICMP协议、处理数据报发送的UDP协议、处理有连接的传输层控制协议TCP、处理局域网内寻址的ARP/RARP协议等。如果系统要求有访问WEB网页的功能,则在TCP/IP协议栈中还要添加对HTTP协议的支持。从这一点来说,系统对TCP/IP协议栈的支持是有量化衡量指标的,不只是一个是或否的问题。考虑到单片机有限的代码空间和数据存储空间,单片机对TCP/IP协议栈的支持就更加受限。例如单片机应用TCP/IP协议多为完成少量数据的采集传输,而不是网页浏览、文件传输这些功能。所以单片机一般不完全支持HTTP协议。
即使是在单片机上实现了某种协议,资源上的限制也可能使单片机简化对该协议的实现,例如TCP协议提供传输层上点对点的可靠数据连接,由于它采用了滑动窗口、握手信号和三次握手建立连接等方法来保证数据接收的有序和正确,并利用拥塞控制机制来调整报文的发送速度,所以需要较大的数据存储空间来保存乱序到达的报文。如果单片机同时开通多条TCP连接,则需要的存储空间会相应加倍。在不能提供足够存储空间的情况下,单片机可能会通过舍弃拥塞控制机制、或者减小滑动窗口的大小,限制并发TCP连接的数目等方法来降低资源的开销,这样实现的TCP协议栈与传统的个人电脑上所使用的TCP/IP协议栈在功能和性能方面都有很大的区别。另一个常见的例子是IP包的分段问题,IP报文最大可以为65KB并进行分段传输,而在单片机里一般很难存放如此大的报文,所以一般不支持分段,单片机会采用发送小数据包的方式来避免分段。
4 在单片机上实现以太网接入和TCP/IP协议栈的多种方法
设计性能指标和成本核算要求是方案设计时需要平衡的两个基本方向,越高的性能指标就会要求更多的计算能力、存储资源和更复杂的处理算法,这势必会提高最终产品的核算成本。所以嵌入式系统的设计人员往往会根据自己的实际要求,提出相应的设计方案,同时满足性能和成本核算的要求。现有的公司提供了不同的实现以太网接入和TCP/IP协议栈的方法:在以太网接入方面有微处理器加MAC控制芯片的方案,也有微控制器整合MAC控制功能的方案;在TCP/IP协议栈实现方面,有单微处理器加定制协议栈的方案,也有双微处理器分工加软件协议栈的方案,也有采用专用芯片来处理协议报文的方案。
在以太网接入功能的设计方案中,很多具有8位数据总线的单片机采用外接MAC控制芯片的方案,如ATMEL公司生产的89S51系列单片机外接RTL8019AS芯片,由于89C51系列单片机支持的RAM单元数目不超过2K,所以这种方案不会支持类似TCP协议这样的复杂通信协议,一般用于简单、少量的数据传输,89S51系列单片机的价格在10元以内,RTL8019AS芯片的价格在20元左右;而Freescale公司推出的MC9S12NE64单片机内置10/100Mbps以太网MAC控制器及PHY接口控制器,在只需一路以太网通信接口的情况下无需额外的MAC控制器,简化了硬件电路设计。从存储容量上分析,MC9S12NE64单片机提供64KB的闪存和8KB的RAM,可存储的数据量也较为有限。
在TCP/IP协议栈实现方面,采用专用芯片来处理协议报文的方案是一个比较新的实现方法。以韩国WIZnet公司推出的W3100A芯片为例,该芯片能处理TCP、UDP、ICMP和IP协议报文以及以太网的MAC协议报文,它给负责应用逻辑的微处理器提供一个类似于Socket的调用接口,可同时支持4路连接。W3100A芯片内置16KB的RAM,用于缓存收到的协议报文,它的售价在7美金左右。为了发挥W3100A芯片的作用,目前配合W3100A芯片使用的微处理器以ARM类型的微处理器居多,以ATMEL公司生产的AT91M40800芯片为例,该芯片基于ARM7TDMI内核,内置8KB的RAM,外部RAM可以扩充到8MB,并可外接LCD等复杂显示设备。
另外一种在嵌入式系统上实现TCP/IP协议栈的方法是采用双处理器的方案,其中一个微处理器主要负责应用逻辑的控制,包括按键控制、显示处理和信号采集与控制等多项功能;另一个处理器则专门负责数据在网络上的传输与接收。例如有设计方案采用ATMEL公司生产的AT90S8515微控制器作为网络传输控制器,采用低端的AT89S53作为事务逻辑控制器,两个微处理器之间采用某种协议来交换数据,实现任务的同步。这样可以利用8位/16位微处理器价格低的特点来实现较多的功能,但是相应地软件设计的难度增大了,在某种情况下还需要嵌入式操作系统的支持。
单枚微处理器加定制协议栈是实现TCP/IP协议栈的另一种方法,在这种方法中微处理器处理能力的高低和定制协议栈的大小与性能是影响总体性能的关键因素。针对某种微处理器进行过定制优化的协议栈往往能表现出优异的性能,Rabbit Semiconductor公司推出的Rabbit2000/3000系列微处理器就是一个协议栈定制的例子,Rabbit2000/3000微处理器的开发包中带有完整的TCP/IP协议栈实现代码,用户不需要从第三方获取TCP/IP协议栈实现代码然后自己移植,可以缩短开发周期并获得一定的性能保证。
5 Rabbit3000系列单片机实现以太网接入和TCP/IP协议栈的优势分析
如上所述,Rabbit3000系列单片机拥有的第一个优势就是有针对硬件定制的TCP/IP协议栈实现代码,使用户只专著于应用逻辑的设计工作。该协议栈实现的协议包括PPP协议、套接字级的TCP和UDP协议、FTP、TFTP、HTTP(w/SSI 和 CGI)、DHCP客户端、SMTP客户端以及 POP3协议等,可以满足用户对互联网资源一般性的访问和相互间的数据传输。
Rabbit3000系列单片机拥有的另一个优势是无需外部内存驱动器或者接口逻辑就可直接寻址多达1MB的存储空间,这一点在8位单片机中并不多见。它具备20根地址线,3根芯片选择线,2根输出使能线,以及2根写使能线可以直接与6个存储设备(Flash或SRAM)交互,用户可以根据各自不同的需求选择适当的存储芯片。如前所述,TCP协议的实现对可用存储空间的大小很敏感,存储空间的大小直接影响到所支持并发连接的数目、滑动窗口的大小、对乱序到达报文的缓存和处理能力,存储空间大的情况下一般会取得更好的运行效果。如果以太网的数据发送速度达到100Mbps,随着报文接收突发性的增强,存储空间的大小对协议栈运行效果的影响会越加明显。
Rabbit3000系列单片机拥有的第三个优势是高运算速度。Rabbit3000系列单片机的运行时钟最高达到54MHz,每指令字节的执行时间为两个时钟,因此它的运算速度非常快。IP协议、UDP协议和TCP协议的报文都需要计算校验和,而且由于这些校验值多为16位,在8位单片机上需要更多的指令来求出计算结果,所以Rabbit3000系列单片机的速度优势与其他8位单片机相比非常明显。
参考文献
[1] WRIGHT G R,STEVENS W R. TCP/IP illustrated. volume 2nd, the implementation,2004.
[2] Rabbit 3000 microprocessor introduction. http://www.rabbitsemiconductor.com/products/rab3000/index.shtml.
[3] Zilog microprocessor introduction. http:// www.zilog.com/products/.