
第1章 嵌入式网络通信概述
通信体系,尤其是有线/无线网络通信,是现代嵌入式应用系统设计的关键技术之一。如何在保持嵌入式系统高度稳定可靠和快速实时响应的基础上,以最小的系统资源占有量,迅速开发出稳定、高效的通信体系,实现简易方便、高性价比的网络互联,使嵌入式应用系统更好地融入有线/无线网络环境之中?本章将对这些问题展开综合性的阐述。
1.1 嵌入式网络通信基础
1.1.1 网络通信简介
嵌入式网络通信技术是以嵌入式系统为核心的网络通信技术,涉及嵌入式通信设备、信息处理设备、通信软件、应用软件等方面,是计算机网络通信技术的一个发展方向。嵌入式系统是以应用为中心,以计算机技术为基础,软件和硬件可裁剪,满足应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统,可以很好地满足计算机网络通信系统对实时性、可靠性和功耗等指标的要求。特别是在计算机通信网络接入设备中引入实时操作系统,更可以极大地提高系统的灵活性、规范性和扩展能力,并大大减小程序编写的工作量,而且减少了出错的可能,保证最终程序具有高可靠性。
目前,Internet是覆盖面极广、联网设备众多、协议完善、功能强大的一种通信网络,已经成为信息社会重要的信息基础设施,是重要的信息流通渠道。具备互联网络的接入功能,已经成为嵌入式系统的发展方向之一。而在通信设备中引入这一功能,更可以将处于不同地域的多个设备组成一个统一的整体,实现数据共享和统一管理,大大提高了通信网络系统的功能。
随着计算机技术和网络技术的发展,利用嵌入式计算机系统和网络技术,组成嵌入式网络化通信设备,可以很好地解决分散设备的接入问题。
嵌入式网络通信设备由控制部分和网络部分组成。控制部分实际上是一个小型的、简单的数据采集控制系统,实现通信设备的控制和数据的采集。网络部分用于实现网络通信功能。这两者都属于“嵌入式系统”的范畴,它们通过双口RAM(Random Access Memory)交换数据。整个通信设备有两块CPU,分别控制通信设备的控制部分和网络部分,以利于系统的升级。
在通信设备内部集成一个嵌入式网络服务器,授权用户就可以在任何有电话的地方,通过Internet/Intranet控制或管理设备;系统设计者也可以通过网络对通信设备进行动态的配置,对通信设备软件进行升级,对通信设备进行必要的维护工作。
设计嵌入式网络通信设备,可以采用32位微处理器(如ARM),外加RTOS;也可以由低档的8位机组成嵌入式通信设备,采用专用的网络(如RS-485、CAN BUS等)把若干个嵌入式通信设备连接在一起,再与PC相连;还可以利用8位单片机组成直接接入Internet的嵌入式网络通信设备。
在嵌入式系统中,实现嵌入式网络服务器(Embedded Web Server)是嵌入式TCP/IP协议栈的典型应用,也是嵌入式系统智能化、网络化发展的趋势。嵌入式网络服务器可以让用户通过浏览器(如IE等)对系统进行监控、管理。在Internet已经深入影响人们生活、工作各方面的今天,这种方式更符合人们的使用习惯。
嵌入式网络服务器的实现关键在于使通信设备支持HTTP协议,它基于服务请求和服务应答模式,客户端连接到服务器的80号TCP端口,发送一个请求,并等待服务器的应答。客户端发送的请求由一个请求方法、URI(统一资源标识符)、协议版本和可能的实体内容组成;服务器发送的响应由一个状态行(包括协议版本和表示成功或者失败的3位数字代码)、实体信息和可能的实体内容组成。
目前,通信设备的嵌入式网络服务器功能比较简单,向客户端发送的响应消息中Entity-Header只包含了其中必要的两个信息:Content-type和Content-length。
1.1.2 网络通信的硬件设施
嵌入式系统的开发涉及两方面:硬件部分和软件部分。嵌入式系统硬件基础部分提供整个嵌入式系统开发可见的或可触摸的“实体”,而软件部分相当于这个“实体”内部的功能逻辑。这两个部分缺一不可。嵌入式系统开发对硬件要求非常高,这与其他类型系统的开发有所不同。许多嵌入式的开发都针对具体的应用,针对项目中特定硬件资源,如微处理器、Flash、外围接口等。这样,程序员就需要熟悉系统中的硬件资源,如涉及一些底层编程,就需要知道系统处理器提供的指令集;要对Flash编程,就需要知道Flash编程的指令系列和流程等。
嵌入式系统的核心部件是各种类型的嵌入式微处理器。嵌入式微处理器就像系统的控制神经中枢,通过数据线、地址线和控制信号线等神经网线与各种神经末梢,如RS-232接口、USB接口、LCD接口等相连。新一代嵌入式设备还需要具备IEEE 1394、USB、CAN、Bluetooth或IrDA通信接口,同时也需要提供相应的通信组网协议软件和物理层驱动软件。为了支持应用软件的特定编程模式,如Web或无线Web编程模式,还需要相应的浏览器,如HTML,XML等。
根据现状,嵌入式处理器可以分为以下几类:
(1)嵌入式微处理器(Embedded Micro Processor Unit,EMPU)
嵌入式微处理器一般指通用计算机中的CPU。它与标准微处理器基本相同,但在工作温度、抗电磁干扰、可靠性等方面都做了增强。与工业控制计算机相比,它具有体积小,重量轻,成本低,可靠性高等优点;但在电路板上必须包括ROM、RAM、Flash、总线接口、各种外设等器件,从而降低了系统的可靠性,技术保密性也较差。在应用中,将微处理器装配在专门设计的电路板上,然后在电路板上配上必要的扩展外围电路,如存储器的扩展电路、I/O的扩展电路和一些专用的接口电路等,这样就可基本完成嵌入式系统的一些功能,其主要特点:
① 内部具有精确的晶振电路,对实时多任务具有很强的支持能力。
② 嵌入式系统的软件结构已模块化,具有功能很强的存储区保护功能。
③ 采用可扩展的处理器结构,留有很多扩展接口。
④ 提供丰富的调试功能。在嵌入式系统开发中,基本的开发模型就是宿主机对目标机的开发。一方面要求宿主机上有相应的开发工具,另一方面要求目标机上的微处理器应提供必要的调试接口以方便用户开发。一般调试方式有硬件仿真调试、软件调试、模拟调试等。常见的调试接口有JTAG,BDM方式等。
⑤ 许多嵌入式微处理器提供几种工作模式,如正常工作模式、备用模式、省电模式(power down)等,嵌入式微处理器在设计中考虑到低功耗。信息社会是以网络以及移动计算和通信设备为基础的,这样就需要嵌入式微处理器消耗非常低的能量。现在便携式和无线应用中靠电池操作的嵌入式微处理器设计中最重要的指标是功耗而不是性能,现在已不用主频率MHz评价处理器,而是用功耗mW或W评价处理器了。同时,功率的传送和能量的消耗已成为性能和集成度的主要限制。
(2)嵌入式微控制器(Embedded Micro Controller Unit,EMCU)
嵌入式微控制器一般又称为单片机,就是将整个计算机系统集成到一块芯片中的控制器。它一般以某一种微处理器内核为核心,芯片内部集成ROM/EPROM、RAM、Flash、总线、总线逻辑、定时/计数器、WatchDog、I/O、串行口、脉宽调制输出、A/D,D/A等各种必要功能模块和外设。为适应不同需要,一般一个系列的单片机具有很多的衍生产品,但是每种衍生产品的处理器内核是相同的,不同的是存储器和外设的配置及封装。
与嵌入式微处理器相比,微控制器的最大特点是单片化、体积小,从而使功耗和成本下降,可靠性提高。微控制器是目前嵌入式系统工业中的主流产品。微控制器的片上外设资源一般比较丰富,适合于控制,因此称为微控制器。
(3)嵌入式DSP处理器(Embedded Digital Signal Processor,EDSP)
普通DSP处理器对系统结构和指令进行了特殊设计,使其适合执行DSP算法,编译效率和指令执行速度都较高。在数字滤波、FFT、谱分析等方面,DSP算法正在大量引入嵌入式领域;DSP应用正从通用单片机中以普通指令实现DSP功能,过渡到采用嵌入式DSP处理器。嵌入式DSP处理器有两个发展来源:一是DSP处理器经过单片化,EMC改造,增加片上外设成为嵌入式DSP处理器,如TI公司的TMS320C2000/C5000等;二是在通用单片机或SoC中增加DSP协处理器,如Intel公司的MCS-296等。
现在,嵌入式DSP处理器已得到快速的发展和应用,特别在嵌入式系统的智能化系统中,例如,各种带智能的消费类产品、生物信息识别终端、带加解密算法的键盘、ADSL接入、实时语音接入系统、虚拟现实显示等。这类智能化算法一般运算量较大,特别是向量运算、指针线性寻址等较多,而这些正是DSP处理器的优势所在。德州仪器公司(TI)推出TMS320C64x DSP系列中的最新产品,作为最高性能数字信号处理器(DSP),使高效能嵌入式应用大大受益。与同类竞争产品相比,该新型芯片提供了性价比更高、功耗更小的百万级乘法累加器(MMACS),并支持各种创新应用项目。凭借该器件,TI公司拓展了C64xTM DSP系列产品的应用空间,满足了更低功耗和成本的高效能应用需求,包括小区媒体服务器、安全/监视系统、电信/数据通信系统及硬拷贝设备应用。
(4)嵌入式片上系统(Embedded System on Chip,ESoC)
随着EDI的推广和VLSI设计的普及,以及半导体工艺技术的迅速发展,在一个硅片上实现一个更为复杂的系统的时代已来临,这就是System on Chip(SoC)。各种通用处理器内核将作为SoC设计公司的标准库,与许多其他嵌入式系统外设一样,成为VLSI设计中一种标准的器件。SoC用标准的VHDL等语言描述,存储在器件库中。用户只需定义出其整个应用系统,仿真通过后就可以将设计图交给半导体工厂制作样品。这样,除个别无法集成的器件以外,整个嵌入式系统大部分均可集成到一块或几块芯片中。应用系统电路板将变得很简洁,对于减小体积和功耗,提高可靠性非常有利。
SoC可以分为通用和专用两类,通用系列包括Infineon(Siemens)的TriCore,Motorola的M-Core,某些ARM系列器件,Echelon和Motorola联合研制的Neuron芯片等。专用SoC一般用于某个或某类系统中,不为一般用户所知。一个有代表性的产品是PHILIPS的Smart XA,它将XA单片机内核和支持超过2048位复杂RSA算法的CCU单元制作在一块硅片上,形成一个可加载Java或C语言的专用SoC,用于公众互联网如Internet安全网。
嵌入式系统实现的最高形式是单一芯片系统,SoC的核技术是IP核(Intellectual Property Kernels,知识产权核)构件。IP核分为硬件核、软件核和固件核。硬件核主要指8/16/32/64位MPU核或DSP核。硬件提供商以数据软件库的形式,将其久经验证的处理器逻辑和芯片版图数据供EDA工具调用,在芯片上直接配置MPU/DSP功能单元。软件核是指软件提供商将SoC所需的RTOS内核软件或其他功能软件,如通信协议软件、FAX功能软件等构成标准API方式和IP核形式的构件。此构件供IDE和EDA工具调用制成Flash或ROM可执行代码单元,加速SoC嵌入式系统定制和开发。目前,一些嵌入式软件供应商纷纷把成熟的RTOS内核和功能扩展件以软件IP核构件形式出售,Microtec的VRTXoc for ARM就是典型例子。
由上可见,嵌入式片上系统的设计的关键是IP核的设计。IP核技术是嵌入式的重要支持技术。在设计嵌入式系统时,可以通过使用IP核技术完成系统硬件的设计。
IP设计技术是一种集成电路设计技术,是以电路模块知识产权使用为核心的电子系统设计技术。在IP技术中把不同功能的电路模块称为IP,这些IP都是经过实际制作并证明是正确的。在EDA实际工具中把这些IP组织在一个IP元件库中,供用户使用。设计电子系统时,用户需要知道IP模块的功能和技术性能。通过把不同的IP模块镶嵌在一个硅片上,形成完整的应用系统。IP技术极大地简化了SoC的设计过程,缩短了设计时间,因此已经成为目前电子系统设计的重要基本技术。
1.1.3 网络通信的软件体系
1.嵌入式操作系统
在完成通信设备功能的基础上,为了进一步提高通信设备性能,在软件设计中引入了嵌入式操作系统,也叫做实时操作系统(Real Time Operating System,RTOS)。实时操作系统具有适应于嵌入式实时应用系统的管理功能,包括任务管理、时间管理、任务之间的通信与同步、内存管理等功能,同时具有可移植、可固化、可裁减、抢占式多任务、函数和服务的执行时间可确定等优点,并能够提供系统服务和中断管理,具有极高的稳定性和可靠性。
嵌入式操作系统是一个前后台系统,其应用程序是一个无限循环,循环中调用相应的函数完成相应的操作,这部分可以看成后台行为;中断服务程序处理异步事件,这部分可以看成前台行为。时间相关性很强的关键操作一定是靠中断服务来保证的。因为中断服务提供的信息一直要等到后台程序走到应该处理该信息的时间段才能得到处理,这种系统在处理信息的及时性上,比实际可以做到的要差。这个指标称做任务级响应时间。最坏情况下的任务级响应时间取决于整个循环的执行时间。因为循环的执行时间不是常数,所以程序经过某一特定部分的准确时间也是不能确定的。进而,如果程序修改了,循环的时序也会受到影响。因此,前后台系统的各个函数是按照一定的顺序轮换执行的,不能保证对中断信息的实时响应。
嵌入式操作系统是一个多任务系统,每个任务均有一个优先级,RTOS根据各任务的优先级,动态地切换各任务,保证对实时性的要求。在编写程序时,可以分别编写各任务,不必同时将所有任务运行的各种可能情况记在心中,从而大大减小了程序编写的工作量,而且减少了出错的可能,保证最终程序具有高可靠性。
总之,嵌入式网络通信设备直接接入Internet,可以充分利用现有电话网络,大大降低了信息的采集成本,用户可以随时掌握各类通信情况,发现问题,及时解决,可以实现交通不便地域的通信设备的远程通信控制。
2.嵌入式调试
整个嵌入式系统的开发离不开嵌入式系统的调试工具和优秀的开发平台;嵌入式调试包括硬件调试、软件调试、模拟调试。嵌入式开发平台包括嵌入式操作系统和嵌入式开发工具。在嵌入式开发工具中有编程器、调试器和跟踪器等。
① 实时在线仿真系统ICE(In-Circuit Emulator),它不仅是软件、硬件排错工具,同时也是提高和优化系统性能指标的工具。调试功能强大,但其硬件的费用较高,在一般的嵌入式调试中很少用到。
② Monitor调试。实际上是一段监控程序,主要完成接收宿主机传送过来的控制命令,然后对其解析,并在目标机上执行,然后把目标机的一些结果和状态反馈给宿主机。在EPSON提供的调试开发中,Monitor调试提供了两种形式:硬Monitor调试(用硬件来完成监控功能),软Monitor调试(用一段监控程序来完成监控功能)。使用硬件完成监控功能的这种调试尽管成本较高,但调试起来比较可靠和稳定。如果用一段监控程序来监控,首先就需要将这段监控程序下载在目标系统中,并对监控程序所在的存储区进行保护,方便但在调试过程有时表现不稳定。
③ 模拟模式(Simulator)。模拟模式不需要目标机,在宿主机上可以仿真目标机的环境,运行本应在目标机上执行的程序,仅是逻辑功能上的验证。一般情况下,在嵌入式系统的调试中首先进行模拟调试,对用户程序进行逻辑验证,然后再进行在线仿真调试,对实际环境进行仿真验证。经过这两极的调试,最后用户的程序就可在目标系统中正常工作了。
3.嵌入式Flash编程
(1)编程器编程
编程器编程是最原始的编程方法。在编程芯片焊装到电路板之前使用专门的编程器对芯片进行代码或数据的写入,然后将编程的芯片安装到电路板上。使用编程器特别适用于DIP封装的芯片,如果是其他类型的封装(如TSOP56,PLCC,DFP,PSOP,SOIC,SSOP,SDIP等)则需要相应的适配器。
常用的编程器有SUPERPRO/V,LABTOOL-48等。
(2)普通接口编程
普通接口编程不需要系统板长的处理器提供特殊的编程接口,如JTAG,BDM接口。它直接通过串口或者网口就从主机把程序写到Flash中,从而实现对Flash的编程。如EPSON提供的调试方式中的MON调试方式,就是利用串口对Flash编程的。这种编程方式直接简单,并不需要对处理器有特殊的要求。
(3)JTAG编程
① JTAG接口:它是直接利用电路板上带JTAG接口的器件(如CPU,CPLD,FPGA等),再通过同样接口的JTAG仿真器将目标板与宿主机连接起来,对目标机上Flash进行编程的。
一般高档的微处理器都带JTAG接口。通过JTAG接口既可对目标系统进行测试,也可对目标系统的存储单元,如Flash进行编程。目标机上存储器的数据总线、地址总线、控制总线接口直接连在微处理器上;通过执行宿主机相关程序,将编程数据和控制信号送到JTAG接口芯片上;利用相应的指令按照Flash芯片的编程时序从微处理器引脚输出到Flash存储器中。
② JTAG介绍:面对复杂电路设计,整板测试的难度及表面贴装技术带来的有限测试引脚等问题,不得不找一个标准加以解决,于是提出了JTAG(Joint Test Action Group)。
JTAG技术是一种嵌入式调试技术。JTAG的接口标准是IEEE 1149.1,此标准是用来测试端口和边界扫描的。边界扫描接口技术起始于1980年,用于解决物理存取问题。这个技术在芯片机中封装了测试,电路,形成一种板级测试协议JTAG接口标准,将极其复杂的电路板测试转换成具有良好结构性的测试,可以通过软件简单而灵活地处理。这个标准定义了可用于完成功能和互联测试,以及内建自测过程的各种指令。
③ JTAG接口的内部结构:在硬件结构上,JTAG接口包括两部分:JTAG接口控制器和与JTAG接口兼容的器件,可以是微处理机控制器(MCU),PLD,CPL,FPGA,ASIC或其他符合IEEE 1149.1规范的芯片。IEEE 1149.1标准规定对应数字集成电路的每个引脚都设有一个移动寄存器单元,这些单元称为边界扫描单元BSC。它将JTAG电路与内核逻辑电路联系起来,同时隔离内核电路和芯片引脚。有集成电路的所有边界扫描构成单元扫描寄存器BSR,边界扫描寄存器仅在进行JTAG测试时有效,在继承电路正常工作时无效,但不影响集成电路的工作。
用JTAG接口测试的逻辑电路由3部分组成,一是测试端口TAP控制器。TAP控制器提供对嵌在JTAG兼容器件内部的用于测试功能电路的访问控制。TAP控制器是一个同步状态机,每一个JTAG兼容器件都有自己的TAP控制器。通过测试模式选择TMS和TCK控制状态的转移,实现由IEEE 1149.1标准确定的测试逻辑电路时序。二是指令寄存器。它是基于电路的移动寄存器,通过它可以串行输入执行各种操作指令。三是数据寄存器。它是一组基于电路的移位寄存器,操作指令被串行装入由当前指令所选择的数据寄存器,随着操作的执行,测试结构被移出。
④ JTAG引脚定义:JTAG接口主要包括5个引脚,即TMS,TCK,TDI,TDO及一个可选配的引脚TRST,这些引脚用于驱动电路模块和控制执行规定的操作。
TCK(Test Clock)——测试时钟。为TAP控制器和寄存器提供测试参考。在TCK的同步作用下,通过TDI和TDO引脚串行出入或移出数据及指令。
TMS(Test Mode Selector)——TAP控制器模式选择器。通过TCK上升沿时刻的TMS状态来确定TAP控制器的状态。
TDI(Test Data Input)——JTAG指令和数据寄存器的串行数据输入端。通过TAP控制器和当前状态以及保持在指令寄存器中的具体指令,来指定一个特定的操作由TDI装入哪个寄存器。并在TCK的上升沿时刻被采样,结果送到JTAG寄存器组。
TDO(Test Data Output)——JTAG指令和数据寄存器的串行数据输出端。通过TAP控制器和当前状态以及保持在指令寄存器中的具体指令,来决定在一个特定的操作中哪个寄存器的内容送到TDO输出。对于任何操作,在TDI和TDO之间只能有一个寄存器处于有效连接状态。
TRST(Test Reset)——测试复位输入信号,低电平有效,为TAP控制器提供异步初始化信号。
⑤ TAP控制器转换:TAP实际上是一个16种状态的同步状态机,每种状态的转换是由TMS和TCK来触发的。测试访问状态机的主要目的是选择指令寄存器或者数据寄存器,使其连接到TDI和TDO之间。
TAP复位状态很重要。在进入TAP复位状态时,一般要保持TMS为高电平。当由其他状态转换到测试逻辑复位状态时,将对JTAG口和测试逻辑复位,但并不对CPU和外设复位。
⑥ JTAG的寄存器扫描:Flash操作分为字节读,字节写,页擦除,全擦除几种。
1.1.4 网络通信的网络环境
通常,嵌入式网络就覆盖范围而言属于局域网。按照ISO/OSI的观点,TCP/IP协议簇位于网络层以上。显然,TCP/IP协议簇已经超出了嵌入式网络系统的范畴。嵌入式网络包括ISO/OSI 7层模型中的物理层和数据链路层。数据链路层在具体实现上可划分成两个子层:介质访问控制子层(MAC子层)和逻辑链路控制子层(LLC子层)。MAC子层包括物理层接口硬件和实现介质访问协议的通信控制器;通常LLC子层由软件实现(用户自主开发)。因此,嵌入式系统设计中网络通信协议选择的核心是介质访问协议的选择。下面简单介绍几种常用的介质访问协议,并就它们的特性进行比较。
1.面向链接的协议
面向链接的协议主要用在网络发展初期的主机—终端式网络中,如X.25和IBM的SNA网络。其主要缺点是:① 节点之间采用串行连接方式,每个物理连接只支持两个节点,速度较低;② 物理上没有连接的节点之间的通信,需要经过多个中间节点的多次传输;③ 直接相连的节点间的通信是可确定的,而间接相连的节点间的通信则无法确定延时。因此,在局域网技术已非常成熟的今天,这类协议已很少应用。
2.轮询法
轮询法因其简单和实时性能可确定等特点而成为嵌入式网络常用协议之一。采用轮询法的协议,需指定一个主节点作为中央主机来定期轮询各个从节点,以便显式分配从节点访问共享介质的权力。这类协议的缺点是:① 轮询过程占用了宝贵的网络带宽,增加了网络负担;② 风险完全集中在主节点上,为避免因主节点失效而导致整个网络瘫痪,有时需设置多个主节点来提高系统的健壮性(如Profibus)。
3.CSMA/CD(带冲突检测的载波监听多路访问)
CSMA/CD有许多不同的实现版本,其核心思想是:一个节点只有确认网络空闲之后才能发送信息。如果多个节点几乎同时检测到网络空闲并发送信息,则产生冲突。检测到冲突的发送信息的节点必须采用某种算法(如回溯算法)来确定延时长短,延时结束后重复上述过程再试图发送。
CSMA/CD的优点是理论上能支持任意多的节点,且不需要预先分配节点位置,因此在办公环境中几乎占有绝对优势。但在CSMA/CD中冲突产生具有很大的随机性,在最坏情况下的响应延时不可确定,无法满足嵌入式网络最基本的实时性要求。
4.TDMA(时分多路访问)
TDMA已大量应用于移动通信领域(如GSM,DAMPS),但也可用于局域网。TDMA的特点是:每轮信息传输前,网络中的主节点先广播一个帧同步信号,来同步各从节点的时钟,在帧同步信号之后,每个从节点在各自所分配的时间片内发送数据。TDMA的缺点是:① 每个从节点必须有一个稳定的基准时间以确定时间片,因此从节点比较复杂,造价较高;② TDMA的主流应用领域依然是无线移动通信领域,用于嵌入式网络的TDMA无论在相关软硬件技术支持,还是在市场认同方面都非常欠缺。
5.令牌环
在令牌环网中,节点之间使用端到端的连接,所有节点在物理上组成一个环形结构。一组特殊的脉冲编码序列,即令牌,沿着环从一个节点向其物理邻居节点传递。一个节点获得令牌后,如无信息要发送,则将令牌继续传递给下一个邻居,否则首先停止令牌循环,然后沿着环发送它的信息,最后继续令牌的传递。令牌环网的优点是:① 在实时性方面是可确定的。因为容易计算出最坏情况下节点等待令牌的时间;② 令牌传递占用的网络带宽极小,带宽利用率很高,具有强大的吞吐能力。但这种协议在具体实现时为确保可靠性必须付出较大的代价:一是为了避免因电缆断裂和节点失效导致整个网络瘫痪,常采用双环结构(如FDDI)和失效节点自动旁路措施,导致实施成本增加;二是为了能立即检测到令牌是否意外丢失,不得不增加该协议实施的复杂性。
6.令牌总线
令牌总线的基本原理与令牌环网相似。但在令牌总线中,网络上所有节点组成一个虚拟环,而非物理环。令牌在虚拟环中从一个节点传向其逻辑邻居节点。只有持有令牌的节点才能访问网络。如同令牌环一样,令牌总线具有非常高的网络带宽利用率、很高的吞吐能力和良好的可确定性。另外令牌总线中各节点有相同的优先级;令牌总线中的电缆断裂并不一定导致整个网络瘫痪;网络运行过程中可动态增加或关闭节点,因此节点失误一般不会导致整个网络瘫痪(当然在网络启动、增加/删除节点时会导致逻辑环重构,以便每个节点确定自己的逻辑邻居,这会有点费时);总线拓扑结构还非常适合于制造设备。因此,令牌总线协议被MAP(Manufacturing Automation Protocol,制造自动化协议)、ARCnet(Attached Resource Computer Network)采用,在过程自动化控制等嵌入式场合被广泛应用。
7.CSMA/CA(带冲突避免的载波监听多路访问)
CSMA/CD在节点数量不多、传输信息量较少时效率很高;基于令牌的协议具有良好的实时性和吞吐能力。人们已经开发出一种能综合以上两者优点的混合协议——CSMA/CA。CSMA/CA的本质是利用竞争时间片来避免冲突。其基本原理是:如同CSMA/CD一样,节点必须检测到网络空闲之后才能发送信息;如果有两个或更多的节点发生冲突,便在网络上启动一个阻塞信号通知所有冲突节点,同步节点时钟,启动竞争时间片(竞争时间片跟随在阻塞信号之后,其长度比沿网络环路传输时延稍长);通常,每一个竞争时间片均指定给特定的节点,每个节点在其对应的时间片内如有信息发送则可以启动传输;其他节点检测到信息传输后,停止时间片的推进,直到传输结束所有节点才恢复推进时间片;当所有时间片都失去作用时,网络进入空闲状态。为确保公平性和可确定性,在每次传输之后,时间片要循环。此外,优先时间片(the priority slots)优先于普通时间片的推进,能支持高优先级信息的全局优先传输。
CSMA/CA协议在具体实施中主要有两个变种:一个变种是RCSMA(Reservation CSMA),其特点是时间片数等于节点数。RCSMA在各种传输条件下都能有效工作,但显然不适于节点较多的网络;在另一个变种中,时间片数少于节点数,且根据冲突最少的原则随机调整时间片的分配,根据所预测的网络流量动态地改变时间片数,如Echelon公司推出的广泛应用于智能大厦领域的Lonwork标准。
另外,在CSMA/CA中,并非必须采用硬件来避免冲突,还可以通过软手段来实现,如发送使时间片在没有网络传输的情况下仍然保持活动的哑信息。
尽管没有哪一种协议对各种应用场合都是十全十美的,但通过对上述各种介质访问协议的分析和比较不难发现:令牌环、令牌总线、CSMA/CA比较适合于嵌入式网络。但令牌环的具体实施比较复杂、成本较高,其应用越来越少。读者可针对具体应用需求,选用令牌总线(如ARCnet)或CSMA/CA。