您的位置: 嵌入式在线 > 技术中心 > 中间件 > 一种嵌入式系统通信中间件的设计

一种嵌入式系统通信中间件的设计

2008-04-07      嵌入式在线      收藏 | 打印

        基于嵌入式系统的跨平台实现互通、互连、互操作及通用性的特殊要求,我们根据中间件的设计思想研制开发了一种基于嵌入式技术的各通信设备之间进行网络互连的通信中间件XCOM。

       本文对通信中间件XCOM的设计思想、设计过程以及通信流程进行了介绍。
   

        随着嵌入式的发展,嵌入式设备在工业控制领域的应用越来越广泛,几乎涵盖了工业控制领域的各个方面。而作为工业控制的基本单元,通信的功能是十分必要的。通过网络将嵌入式系统与远程控制台联结起来,可以实现将运行期间采集到的数据发送至控制台,工程人员也可以对嵌入式系统进行配置与监控。嵌入式设备使用了很多的接口与外部世界连接。例如RS-232接口、SPI、IrDA、I2C、USB、Ethernet等。通过这些接口可以实现嵌入式系统与嵌入式系统、嵌入式系统与PC机之间的互通互连。可以看出,通信要求在不同的系统体系、不同的通信模块、不同的通信接口之间实现的,但是由于现在各种通讯接口有着各自的通信协议,相互之间没有一种通用的软件协议。在软件设计中还必须考虑接口协议、具体的芯片结构,这给应用软件开发带来了很大的不便。为了更好地开发和应用在异构平台上运行的应用软件,解决PC机与嵌入式设备及嵌入式设备与嵌入式设备之间的互通互连和互操作的问题,我们借鉴三层体系结构技术思想研制开发了一种自定义的、标准的、独立于通信介质、支持嵌入式系统的通信中间件XCOM软件,该软件基于不同介质、不同电气特性和不同协议的网络、设备之上,屏蔽了不同通信接口的差异,能够对各种标准的数据传输接口进行透明传输。

        通信中间件的设计思想

        通信中间件是位于应用平台和硬件通信平台(通信介质/协议)之间解决嵌入式系统网络互连的中间适配层,如图所示。该层向下屏蔽掉硬件网络通信接口平台(RS232/485、USB、以太网、Modem等)的差异,即基于不同介质、不同电气特性和不同协议的网络、设备之上,能够对各种标准的数据传输接口进行透明传输,向上为应用层提供一个统一的标准接口,应用层的开发基于该接口进行。通信中间件的核心思想就是定义一组接口通信的标准,以及为这一标准提供基础设施,其它高层的软件均遵照这种标准来构造应用程序,使得符合通信中间件规范的接口通信有着很强的互操作性。

 图1  通信中间件

        首先,当系统通信接口平台改变时,只需改变中间适配层的几个参数,只要保持通信中间件层对应用层的接口定义不变,就可以直接将应用程序移植过去运行。所有代码只需编写一次就可在任何系统上运行,大大缩短了系统研制的周期,提高了开发效率,同时还保证了系统的高伸缩性、易升级性和稳定性。其次,通信中间件屏蔽了底层通信平台的差异,提供了标准的封装接口。当系统的底层通信接口改变时,,不用修改应用程序,只需在通信中间件的驱动层增加几个相应的通信接口控件驱动即可实现对新接口的适配,从而就能保证通信系统在线运行情况下,接入各种新设备,以不变的程序应对万变的协议,从而达到系统之间的互通、互连、互操作的目的,使得系统维护使用真正做到“傻瓜化”、智能化。

        通信中间件的设计

        ⒈ 总体设计

        其系统设计的总体结构框图如下:

  图2 系统体系结构框图

        整个通信的硬件平台采用我们研制的基于AM186ed嵌入式微处理器的SL6000型成像测井系统通信硬件平台或基于ARM微处理器的嵌入式地理信息系统通信硬件平台,底层通信接口包括RS-232串行口、USB、以太网接口、Modem及扩展接口等。

        通用通信软件适配层(即中间件)定义和设计支持各种通信接口的通用通信协议。该层具备通信协议的主要特征(数据帧格式、检错纠错、流量控制等),向下与各种通信接口相适配,向上提供与通信接口无关的统一接口。应用平台是用户利用XCOM通信中间件通过各种通信接口以及通信协议实现数据、命令和消息的传递。

     ⒉ 分层设计

       我们利用分层体系结构思想设计了通信中间件XCOM,在设计中,将其分为三层结构:API层、socket层、driver层。这种分层式设计思想可以将每一层协议的实现细节对相邻协议层加以屏蔽,提供服务访问接口进行层间数据传递,各层数据独立封装。发送和接收端的各层协议存在逻辑上的点对点连接。

        XCOM的总体分层设计如图所示:

  

     图3  XCOM的分层设计

        w  driver层(设备驱动层):

        XCOM定义了一系列的设备驱动函数来建立与物理层的接口及与socket层的接口。通过建立设备驱动数据结构来控制设备的通信。在数据结构中定义相应的函数指针用以调用相应的设备通信函数。

        w   socket层(设备抽象层):

        在该层定义关于通信控件设备的一些信息属性,如:通信控件设备驱动信息属性、数据包信息属性、通信设备socket信息属性、消息属性等,及数据处理函数:数据的编译码、数据的打包及读写数据缓存操作和系统目标析构函数。

        w   API层(用户程序接口层)

        XCOM软件的应用程序接口(Application Programming Interface,简称API)向用户提供XCOM的初始化、XCOM控件接口操作、及XCOM用户API三大功能。XCOM的初始化函数向用户提供XCOM系统的初始化及释放功能;控件接口操作函数向用户提供对XCOM设备控件初始化操作,当初始化完成后,对底层的操作对用户是透明的;XCOM API向用户提供对消息的基本操作功能。

        从通信中间件的设计可以看出,用户在使用数据对象时只能访问由通信软件提供的一个标准用户程序接口,其他所有有关对象的信息则保存在驱动层中。对用户而言,这些对象信息已被隐藏封装起来,屏蔽了底层操作。而对于底层驱动的设计是指当底层通信接口改变时,不用修改应用程序,只需在driver层增加几个相应的通信接口控件驱动即可实现对新接口的适配,通过XCOM软件的通用性达到其设计目的。

        通信中间件的数据流程

        以设计实现两台设备网络通讯为例讲述一下利用通信中间件通信时的数据流程。

        两台设备之间的通信模型如图所示:

图4  设备间通信模型

        用户之间通信传输流程如图5所示:

        用户A:    用户激活接口控件,xcom消息循环收到系统消息,此消息中包含欲连接的对方的地址及一些其它信息。xcom根据命令初始化xcom_driver,该控件驱动的函数指针及缓冲区按照相应设备的规定作相应初始化。在 xcom_driver调用xcom_open_socket函数创建socket,socket层读取命令,按照xcom协议的规定调用 xcom_code函数对请求消息进行编码及xcom_pack函数进行打包,将数据包放入底层driver层的发送缓冲区,调用发送函数。

        用户B:driver层收到A发来的数据(连接请求),xcom消息循环读取driver层接收缓冲区内容。当发现是请求连接的消息后,根据数据包中所带的源地址创建socket以进行通信。socket层将确认信号进行编码打包发送至driver层的发送缓冲区。driver直接再将数据发送至A方的driver。

        用户A:driver层收到确认消息后进行解码,socket层读取转发至xcom消息循环。上层判定为确认信息则根据用户需要发送相应的命令至socket层,socket层根据命令调用相应的函数,如短消息通信或文件传输。

图5  用户间通信流程图

        结束语

        通过测试,XCOM通信中间件系统的设计基本实现了整个系统的框架结构与基本的通信接口通讯功能。系统采用分层结构设计的思想,引入了设备抽象层的概念,使系统可以很方便的进行应用程序的移植与调试工作,并能实现系统的跨平台使用。在XCOM系统中设计开发通信系统之间的直接接口,使用户只需调用系统提供的标准用户程序接口就可以实现对通信协议的访问和使用,而无需访问底层操作,同时,用户通过向对象发送消息来实现其提供的服务。这些都增强了系统的稳固性和可维护性。固定的设备抽象层对应用层的标准化接口使得应用程序可以方便的移植,所有代码只需编写一次就可在任何系统上运行,大大缩短了系统研制的周期,提高了开发效率,同时保证了系统的易升级性。实现了军用战术信息终端以及工业控制中对通信模块设计提出的基本要求,能够达到实用化的效果。

        参考文献:

        [1]  王田苗.  嵌入式系统设计与实例开发. 清华大学出版社 2002.

        [2]  邹思轶.  嵌入式Linux设计与应用. 清华大学出版社 2002.

        [3]  魏永明.  基于Linux和MiniGUI的嵌入式系统软件开发指南. 2001.

        [4]  李慧恩等. 面向对象的线型库设计与实现. 2001中国GIS年会论文集.

[5] 陈积明等. 工业以太网的研究现状及展望. 清华大学出版社 2000.

本文来源:微计算机信息    作者:李男 黄永忠 陈海勇
热点资讯(一周点击率)
热评博文
评一评已有 0 位网友对此文发表了看法。  我也来评一下

验证码:  看不清?换一张

 

快乐大本营

    无线时代来临,移动产业生态系统将发生一些根本变化。今日头条推荐“芯片是嵌入式4G技术的关键 产业生态系统将发生变化”。

    想了解嵌入式开发工具的市场情况吗?先来体验下我们的在线调查吧!填写调查问卷

工程师之星
朱礼昆
电子信息工程专业,擅长硬件编程
  • 胡菲菲  技术专长:嵌入式系统linux
  • 柳如峰  技术专长:模电,电源
热门招聘
论坛热贴