0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于ARM7单片机和Linux+RTCORBA架构实现嵌入式代理服务器的应用方案

牵手一起梦 来源:单片机与嵌入式系统应用 作者:周琦,黄天戍,张旻 2020-10-04 17:30 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

现场控制网络技术、信息网络集成技术和分布式实时技术的发燕尾服和成熟,使集成信息网络和现场控制网络的分布式实时测控网络成为未来工业测控系统的发展方向。在这这样一个测控网络中,实现异构网络无缝互联的关键是代理服务器。使用基于实时中间件的代理服务器,既能满足实时互联的要求,又使代理服务器屏蔽了底层测控设备的实现细节,减少了系统开发的难度;同时,基于面向对象技术,各种测控设备的连接与安装难度也大幅度降低。

本文使用Linux+RTCORBA的系统架构设计一个嵌入式代理服务器,用于LON网到以太网的互联,并且使用基于ARM7的单片机实现了该嵌入式代理服务器。

1 RTCORBA技术简介

CORBA是OMG推出的一个重要的工业规范,是OMA(Object Model Architecture)的核心部分。OMA所采用的方法,是为面向对象的应用提供一个公共框架,如果符合这一框架,就可以在多种硬件平台和操作系统上建立一个异质的分布式应用环境。

基于ARM7单片机和Linux+RTCORBA架构实现嵌入式代理服务器的应用方案

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的互联,并且具备了数据透明传输、无缝互操作、实时的特性,在测控网络中具有极大的使用价值和广阔的发展前景。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6074

    文章

    45340

    浏览量

    663443
  • 嵌入式
    +关注

    关注

    5186

    文章

    20145

    浏览量

    328749
  • 服务器
    +关注

    关注

    13

    文章

    10094

    浏览量

    90874
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何利用ARM7嵌入式单片机设计视频报警系统?

    性、高速性和智能性要求很高的应用领域。目前计算机图像处理系统多为CCD摄像头+视频卡+计算机的工作模式,且结构复杂、成本高、体积庞大,受计算机操作系统的限制,图像处理实时性差。针对传统的图像采集系统的缺陷,我们来讨论一下如何利用ARM7嵌入式
    发表于 08-01 07:32

    基于ARMLinux嵌入式Web服务器的构建及应用

    摘要:本文主要研究了基于ARMLinux嵌入式Web服务器的构建及应用.随着互联网的飞速发展,越来越多的信息化产品需要接入互联网并通过Web页面进行远程访问和控制,
    发表于 11-05 06:07

    基于ARM嵌入式Web服务器的研究与实现

             本文给出了一种嵌入式Web Server 的设计方案。该方案对基于ARM
    发表于 09-08 08:52 37次下载

    分布测控网络中嵌入式代理服务器的设计与实现

            本文设计了分布测控网络中起着关键作用的代理服务器,它使得底层现场总线对于上层信息网络成为了一个透明的网络层,并根据设计实现了一个
    发表于 09-10 08:44 20次下载

    32位ARM7嵌入式硬件平台简介

    32位ARM7嵌入式硬件平台简介 ARM7嵌入
    发表于 02-10 10:49 68次下载

    基于AVR单片机嵌入式“瘦服务器”系统设计思想

    基于AVR单片机嵌入式“瘦服务器”系统设计思想 根据国内嵌入式设备的研究形势和产业发展规模,提出了基于AVR单片机(ATmega103)
    发表于 05-04 22:10 1009次阅读
    基于AVR<b class='flag-5'>单片机</b>的<b class='flag-5'>嵌入式</b>“瘦<b class='flag-5'>服务器</b>”系统设计思想

    网络代理服务器

    网络代理服务器              网络代理服务器有别于传统的网络加速软件,它是专门指高速缓存服务器产品,即Cache
    发表于 01-07 14:09 1115次阅读

    GPRS的ARM7嵌入式单片机视频报警系统

    GPRS的ARM7嵌入式单片机视频报警系统利用以单片机应用系统为中心的小型嵌入式设备进行数据采集,并通过网络有效传输数据,已成为数据采集领域
    发表于 04-23 14:10 1145次阅读
    GPRS的<b class='flag-5'>ARM7</b><b class='flag-5'>嵌入式</b><b class='flag-5'>单片机</b>视频报警系统

    ARM7嵌入式应用中启动

    ARM7嵌入式应用中启动程序的实现,有需要的下来看看。
    发表于 01-13 17:23 11次下载

    基于ARM嵌入式Web服务器设计方案

    基于ARM嵌入式Web服务器设计方案
    发表于 06-15 11:13 20次下载

    嵌入式实时操作系统FreeRTOS在ARM7上移植实现

    嵌入式实时操作系统FreeRTOS在ARM7上移植实现(嵌入式开发工程师待遇)-嵌入式实时操作系统FreeRTOS在
    发表于 07-30 12:05 21次下载
    <b class='flag-5'>嵌入式</b>实时操作系统FreeRTOS在<b class='flag-5'>ARM7</b>上移植<b class='flag-5'>实现</b>

    嵌入式开发教程之基于ARM7的LCD设计与实现

    嵌入式开发教程之基于ARM7的LCD设计与实现(嵌入式开发培训班费用)-该文档为嵌入式开发教程之基于AR
    发表于 08-04 11:25 9次下载
    <b class='flag-5'>嵌入式</b>开发教程之基于<b class='flag-5'>ARM7</b>的LCD设计与<b class='flag-5'>实现</b>

    单片机or嵌入式linux

    最近很多童鞋投票并咨询如何从单片机转做嵌入式Linux开发。看来读者圈中做单片机,RTOS的不少。尽管我目前从事Linux/Android方
    发表于 11-01 16:26 17次下载
    <b class='flag-5'>单片机</b>or<b class='flag-5'>嵌入式</b><b class='flag-5'>linux</b>

    基于单片机嵌入式web服务器设计与实现

    电子发烧友网站提供《基于单片机嵌入式web服务器设计与实现.pdf》资料免费下载
    发表于 10-26 14:36 1次下载
    基于<b class='flag-5'>单片机</b>的<b class='flag-5'>嵌入式</b>web<b class='flag-5'>服务器</b>设计与<b class='flag-5'>实现</b>

    基于ARM平台的嵌入式WEB服务器的设计与实现

    电子发烧友网站提供《基于ARM平台的嵌入式WEB服务器的设计与实现.pdf》资料免费下载
    发表于 10-27 10:45 2次下载
    基于<b class='flag-5'>ARM</b>平台的<b class='flag-5'>嵌入式</b>WEB<b class='flag-5'>服务器</b>的设计与<b class='flag-5'>实现</b>