嵌入式系统需要通过标准网络接口与外界进行通讯,常规网络包括以太网、TCP/IP和套接API。人们通常认为以太网具有非确定性,但是,本文通过测试和研究表明,当集成了100Mb(或1Gb)以太网端口的小型CPU成本经济、性能可行时,将有机会在分布式I/O中采用TCP/IP协议。

  我以前所做的几个嵌入式设计项目都需要这样或那样的网络连接,这些项目不断重复着同一主题,即嵌入式系统需要通过标准网络接口与外界进行通讯。这些项目通常包括实时操作系统(RTOS)和常规网络模式:以太网、TCP/IP和套接API。通常,这些系统中的以太网数据处理要么以非实时数据的形式转交给后台处理,要么数据本质上是可循环的,只要数据在一段时间内进行刷新(约15至30毫秒),一切都可正常工作。换言之,我们并不奢望小于几个毫秒的精度。

  然而,我最近承担了一项特殊的系统设计项目,该系统需要一个极低延迟时间的确定性网络作为这一项目的核心。这促使我研究确定一般的网络工具是否适合该任务。尽管研究期间可以参阅许多优秀的网络理论、标准化协议和结构性原理,但性能规范始终难以捉摸,因为网络系统存在许多不可预知的因素,如网络硬件、网络软件、计算机硬件及操作系统等。通过这项研究,我加深了对TCP/IP和以太网性能特征的实际了解,而这些细节只能通过给定网络的实际运用在实践中获得。

  该项目的目标是通过嵌入式I/O处理器网络来替代飞行模拟器中包含1,000多个I/O的高度集中式I/O系统,从而降低生产和设计成本。另外,由于降低了配线复杂性,生产效率预计也有所提高。新的分布式I/O系统包含许多远程节点(位于其所服务的面板和仪器附近),这些远程节点相互连接,可在仿真处理器和各种飞行器及模拟器设备之间传送数据。

  最初,以太网被认为是最佳的网络媒介选择,它的确能够满足低廉硬件、低生产成本以及每个模拟器包含50至70个

  I/O节点的要求。毕竟,集成有以太网功能的CPU面板随处都可买到,因此可大大降低成本。

  然而,由于以太网是非确定性的,因此需要评估其它媒介。我们评估了各种网络总线,包括反射式存储器、现场总线(通常用于工厂自动化)、RS-485等,结果表明它们都不能经济有效地满足要求。以太网看来是最合适的,唯一缺陷是非确定性数据传输(尽管已广受注目)。此外,还必须研究以太网是否适用于要求较少延迟时间和确定性行为的系统。

  以太网、TCP、UDP和IP

  我曾多次听到同仁们这样老生常谈:“以太网是非确定性的”。但是,以太网究竟不确定在哪儿?是因为它不受限制,还是仅仅定义适用公差的问题?为解决这些问题,让我们先从以太网和TCP/IP的基本概念入手,做一下深入探讨。

  大多数应用程序通过TCP/IP协议栈与以太网相联,该协议栈采用分层的方式实现组成TCP/IP的各种子协议。在网络界,TCP/IP是一套基于因特网协议(IP)的协议集的统称,TCP是众多协议中的一个。TCP/IP协议栈位于以太网驱动器之上,并与之紧密配合。换言之,TCP/IP通过排列输出数据、缓冲输入数据及提供网间路由机制,来协调应用软件和网络驱动器之间的数据(信息包)流动。简单的说,测试应用软件是通过套接API来访问TCP/IP协议栈的。

  TCP/IP协议提供了两种可选的数据传输协议:TCP或UDP。两者最大的差别在于TCP可提供可靠的连接,确保接收方能收到所发送的每个信息包。而UDP是一种送毕即弃的协议,如果需要接收方确认,应用软件本身必须提供确认方式。人们或许倾向于更可靠的协议,但必须认识到可靠性是要付出代价的。

  通过TCP协议发送的每一个信息包都要触发接收堆栈发回一个确认信息包。对于少量数据而言,性能代价相当不合算。例如,如果要传输1字节的数据,须通过网络传输一个64字节的信息包(以太网信息包的最小尺寸),并相应地发回一个64字节的确认信息包,这使得整个网络的通信量增大一倍。在同样的情况下,使用UDP协议只需发送初始信息包即可。因此,使用TCP协议将会给网络添加不必要的开销,而网络并不需要更多的可靠性。

  我们利用以太网硬件设备,即网络接口(NI),来连接网络媒介。NI采用一种两阶段总线仲裁方案,即载波侦听多路访问与冲突检测(CSMA/CD),因此当设备检测到总线未被占用时,便发送数据,这是总线仲裁协议的CSMA部分。该方案允许两个或更多设备同时在总线上传输数据,这正是CD(冲突检测)部分的由来。如果同时访问总线的情景发生,设备便检测到“冲突”,经过一段随机延迟时间,再重新向总线发送数据,直到发送成功为止。这就是以太网最基本的不确定性特征,然而,如果总线仲裁方案能在更高一级实现的话,还是有可能超越CSMA/CD方案的。

  为克服以太网不可预测的仲裁方案,我们采用了一种软件协议,规定网络设备只有得到许可才能访问总线。该协议并不限制CSMA/CD的使用,而只对控制以太网媒介访问的高级(应用)软件起约束作用。为使该方案行之有效,必须建立以下规则:仅专有节点才能连接到网络上;一个设备被指定为控制器,其余设备视为远程节点;除非控制器发出请求,否则远程节点不能访问网络总线;远程节点有预先设定的时间来响应控制器请求。

  我们为控制器节点设计了一个测试程序,控制器节点中的数据通过网络传送到远程节点。该程序等待远程节点的响应数据,然后将其与原始传送数据做比较,以检测是否出错。如果两个数据不一致,或者过了预定时间远程节点仍未做出响应,测试程序便生成一个出错信息。控制器软件还可记录信息包往返的最长、最短及平均时间。远程节点软件只等待控制器发来的输入网络数据,一旦收到数据,将对控制器做出回应。观测这些协作程序产生的往返数据处理时间可用于评价系统的性能。

共3页。 1 2 3 :