基于RTCORBA技术的嵌入式代理服务器设计
2012-10-22 来源:21ic
引言
现场控制网络技术、信息网络集成技术和分布式实时技术的发燕尾服和成熟,使集成信息网络和现场控制网络的分布式实时测控网络成为未来工业测控系统的发展方向。在这这样一个测控网络中,实现异构网络无缝互联的关键是代理服务器。使用基于实时中间件的代理服务器,既能满足实时互联的要求,又使代理服务器屏蔽了底层测控设备的实现细节,减少了系统开发的难度;同时,基于面向对象技术,各种测控设备的连接与安装难度也大幅度降低。
本文使用Linux+RTCORBA的系统架构设计一个嵌入式代理服务器,用于LON网到以太网的互联,并且使用基于ARM7的单片机实现了该嵌入式代理服务器。
1 RTCORBA技术简介
CORBA是OMG推出的一个重要的工业规范,是OMA(Object Model Architecture)的核心部分。OMA所采用的方法,是为面向对象的应用提供一个公共框架,如果符合这一框架,就可以在多种硬件平台和操作系统上建立一个异质的分布式应用环境。
OMG在制订CORBA规范时,首先考虑的是互操作性,用以解决异种平台上的不同对象的协作问题;所以,需要将CORBA规范进行扩展,以满足分布式实时应用的需要和测控系统的实时性要求。在1999年3月,OMG发布了实时CORBA1.0规范。OMG已将它作为CORBA3.0规范的一部分。
实时CORBA对原有的规范进行了扩展,定义了标准的接口和QoS策略,其扩展的具体内容为:
*将客户的CORBA::Current接口扩充为RTCORBA::Current接口;
*将服务器的PDA扩充为RTPOA;
*将ORB扩充为RTORB;
*增添了RTCORBA::Priority接口和RTCORBA::PriorityMapping接口;
*增添了RTCORBA::Threadpool接口;
*增添了Scheduling Service。
这些扩展可具体分为对处理器资源、内存资源和通信资源的管理三个部分。
2 嵌入式代理服务器设计与实现
代理服务器屏蔽了底层测控设备的实现细节,向上层提供统一的数据服务,在测控网络中起着纽带的作用。为了实现分布式实时测控网络,其中核心的问题之一就是实现一个代理服务器。由于代理服务器需要应用于工业现场,要求能在较宽温度范围内工作,并且还要求封装牢固(抗振和防冲击)、导轨安装、电源冗余、DC供电等。另外,从低功耗、低成本、小何种的角度来看,使用嵌入式系统都优于使用通用系统,故本文选用嵌入式系统来实现代理服务器。
整个代理服务器可以分为硬件平台层、操作系统层、实时中间件层和应用程序四个层次来实现,如图1所示。
2.1 硬件平台
在这种方案中,代理服务器一方面通过各种驱动或服务程序与现场设场设备实时交换数据,另一方面通过ORB与应用程序交换数据。代理服务器可以提供对LON现场总线、常规通用工业串行通信总线RS485/RS232、常用DCS/PLC等多种现场控制协议的支持,其硬件框图如图2所示。通过使用代理服务器,屏蔽了底层的现场总线通信协议,使用面向对象的方法将每一个现场设备都实现为网络中的一个分布式对象;通过对象方法调用向上层应用提供统一的服务,使得上层应用可以直接通过调用代理服务器中的对象方法来控制底层测控设备。
(1)微处理器模块
微处理器模块包含所有使得微处理器能够正常工作的部分。它包括微处理器、Flash、SDRAM、电源、JTAG接口电路、复位电路和晶振电路。根据需求,我们选用三星公司的基于16/32位ARM7TDMI核的S3C4510B微处理器。它专为以太网通信系统而设计,具有低成本和高性能的特点,并集成了多种外围器件。
(2)10M/100Mbps以太网通信模块
这个模块用来与以太网通信。S3C4510B内嵌了一个以太网控制器,支持媒体独立接口(MII)和缓冲DMA接口(BDI),可在半双工或全双工模式下提供10M/100Mbps以太网接入。实际上芯片已经包含以太网MAC控制,但未提供物理层接口,需要外接一块物理层芯片。
本系统使用RTL8201作为以太网的物理层接口芯片。它的主要功能包括物理编码子层、物理媒体附件、双绞线物理媒体子层、10BASE-TX编码/编解码器和双绞线媒体访问单元等;同时,带有MII接口,可以简单方便地与S3C4510B连接,如图3所示。
S3C4520B的MAC控制器可以控制31个RTL8201,每个RTL8201都必须有不同的PHY地址(00001B~11111B)。系统复位时,由锁存引脚9、10、12、13、15的初始状态确定PHY地址。但是,由于锁存引脚也复用为LED引脚,故不能直接接电路或地。
(3)LON现场总线通信模块
代理服务器作为LON现场总线中的一个节点与现场检测设备通信,所以LON现场总线通信模块要包括与LON网络通信和与S3C4510B通信的功能。
LonWorks总线通信模块主要由神经元芯片、LonWorks双绞线网络收发器、程序存储器、数据存储器等组成。在该代理服务器的应用中,实际上仅仅把Neuron(TMPN3150)芯片作为通信处理器用,由其按照LonTalk协议与LonWorks网络上的所有智能节点进行通信,同时将通过并行口与主CPU通信。它将从S3C4510B接收到的来自以太网络的其它网段数据或上层控制命令通过特定的寻址方式由LonWorks收发器传向LonWorks网,或将从LonWorks网上接收到的LonTalk协议报文由通用I/O发给S3C4510B,再由S3C4510B进行处理。由于开发Neuron芯片时采用的Neuron C(专门为Neuron芯片设计的编程语言,从ANSI C中派生出来的)语言,故内存占用大。另外,作为通信协议处理器使用要求有大量的数据缓冲区进行数据交换,而仅仅利用TMPN3150内部的2KB RAM容量是均无不够的,因此我们扩展了外部存储器Flash和RAM。由于采用Flash,可以非常方便地修改用户程序。
LON现场总线通信模块原理如图4所示。
2.2 操作系统层
操作系统层不仅仅是操作系统软件,它一般包括两个部分:
①引导加载程序,包括固化在固件(firmware)中的boot代码(可选)和Boot Loader两大部分;
②内核和文件系统,包括 Linux内核、根文件系统和建立于Flash内存设备之上的文件系统。
(1)Linux内核
作为候选的一种嵌入式操作系统,嵌入式Linux以其引入注目的优势,极大地吸引电子设计工程师从自己书写的或专用的RTOS转移到Linux。UClinux是专为那些没有MMU(内存管理单元)的嵌放式处理器开发的嵌入式Linux。
www.uclinux.org为uClinux提供了GNU的交叉编译器,包括以下组件:
*Gcc交叉编译器,即在宿主机上开发编译目标上可运行的二进制文件;
*Binutils辅助工具,包括objdump、as、ld等;
*Gdb调试器。
使用这些工具搭建了嵌入式应用开发平台后,就可以在标准的Linux平台上开发应用了。搭建了开发平台主要有以下几步:
①获得uClinux-dist的源码包;
②建立ARM交叉编译环境;
③针对硬件修改配置;
④编译内核;
⑤内核加载运行。
(2)BootLoader
引导加载程序是系统加电后运行的第一段软件代码。在PC中引导加载程序由BIOS(其本质就是一段固件程序)和位于硬盘MBR中的OS Boot Loader(如LILO和GRUB等)一起组成。而在嵌入式系统中,通常并没有像BIOS那样的固件程序(有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由Boot Loader来完成。在一个基于ARM7TDMI核的嵌入式系统中,系统在上电或复位时都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的Boot Loader程序。
通过Boot Loader,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。Boot Loader是严重地依赖于硬件而实现的,特别是在嵌入式世界。因此,我们需要设计与实现自己专有的Boot Loader。
在我们的系统中,内核映像与根文件系统映像都被加载到RAM中运行。之所以这样是因为,虽然在嵌入式系统中内核映像与根文件系统映像也可以直接在ROM或Flash这样的固态存储设备中直接运行,但这种做法无疑是以运行速度的牺牲为代价的,会影响到实时应用。
Boot Loader分为stage1和stage2两大部分。依赖于CPU体系结构的代码,比如设备初始化代码等,通常都放在stage1中,而且通常都用汇编语言来实现,以达到短小精悍的目的;而stage2则通常用C语言来实现,这样可以实现较复杂的功能,而且代码会具有更好的可读性和可移植性。
2.3 ORB
目前基于CORBA规范的产品有很多,著名的就有Orbix2000、JacORB、MICO、Visibroker、ORBit、TAO等。这些产品各有优缺点。这几种ORB产品中,TAO(The ACE ORB)是美国华盛顿大学的Douglas C.Schmidt博士领域开发的一个实时CORBA平台,是基于ACE创建的。它是一个开放源码项目,是完全免费的。使用C++语言开发,符合CORBA标准,而且还为高性能需求的实时系统进行了优化。因此,需要在Linux上安装ACE/ATO开发环境,ACE和TAO可以协同工作来提供复杂中间件解决方案。
2.4 应用程序开发
在基于中间件的分布式测控系统中,应用软件的编写发生了极大的变化。我们只需使用IDL编写统一的接口,就不必每次使用都考虑实现细节。
一个实时CORBA应用在逻辑上分为客户和服务器两个部分。客户端向服务器端主动发起服务请求,服务器端则被动接收服务请求。一个实时CORBA应用的客户端常包含多个服务请求(方法调用);除此外,还包含在本地执行的代码。在服务器端,则包含了这个方法的实现。在我们的这个系统中,代理服务器就是一个服务器端,测控网络中其它的工作站则是客户端。它们调用代理服务器上的方法,以获取现场检测数据和修改现场设备的参数。
在服务器端,一般每个现场设备对应一个实时对象。这个对象提供操作这个对象(设备)的方法和对象的性质。如果客户端需要操作某一个设备,它只需请求调用代理服务器上这个设备所对应的实现对象的方法,代理服务器所获得的数据以返回值的形式传给客户端,这样就完成了一次服务。实际上,这些实时对象作为现场设备的代码,对上层应用屏蔽了设备实现的复杂性,提供统一的服务。
ORB机制可以透明地实现传送请求给对象,并将响应返回给提出请求的客户。通过使客户不再管理方法激活的具体实现,从而简化了分布式应用程序。当客户激活一个方法,ORG负责定位对象实现并透明的激活。将请求传输给对象实现并返回结果。通常ORB包括对象实现、对象定位和对象通信机制。这些特性允许应用开发者更多地关心其本身的应用领域的开发,而较少考虑低级的分布系统程序设计。但是,为了提高更丰富的功能,不应该仅仅使用CORBA默认的定位、通信机制,还需要使用到CORBA的各种对象服务。
在我们的实现中,设备对象都有自己的状态信息,这些信息都将通过事件服务来传递。在使用事件服务之前,应先启动事件服务器。在我们的系统中使用的是TAO的事件服务器。启动事件服务器后,命名服务器将注册到智能代理中,并将事件服务通常的IOR定入一个文件。然后可以使用这个IOR文件启动事件提供者程序和使用者程序。
3 总结
分布式中间件技术在信息技术领域已经得到了广泛应用。使用分布式中间件技术可以方便地开发、集成、升级和维护各种应用系统,大大降低了构建应用系统的代价,并极大地提高了生产效率。开发和应用分布式实时测控系统也必将成为起来测控网络的发展方向。
本文使用基于RTCORBA中间件技术的代理服务器来连接两种异构网络,实现LON网到Ethernet的互联,并且具备了数据透明传输、无缝互操作、实时的特性,在测控网络中具有极大的使用价值和广阔的发展前景。
参考文献:
[1]. ARM7TDMI datasheet http://www.dzsc.com/datasheet/ARM7TDMI_139812.html.
[2]. S3C4510B datasheet http://www.dzsc.com/datasheet/S3C4510B_589499.html.
[3]. RTL8201 datasheet http://www.dzsc.com/datasheet/RTL8201_586322.html.
[4]. ROM datasheet http://www.dzsc.com/datasheet/ROM_1188413.html.