一种基于Tilcon的维护界面设计

2017-07-14 06:16王金龙方刚王宝欣原浩娟
电脑知识与技术 2017年17期
关键词:共享内存界面设计

王金龙 方刚 王宝欣 原浩娟

摘要:介绍了VxWorks系统下嵌入式界面开发工具Tilcon的设计流程和工作方式,并针对某型武器实时维护系统功能选项多,数据刷新频率高,实时网络传输等特点,通过Tilcon界面设计工具结合VxWorks系统多任务和共享内存的处理方式完成了维护系统的界面设计。最终,通过武器系统联合试验,验证了维护软件功能的正确性和稳定性,具备一定的工程实践价值。

关键词:Tilcon;界面设计;VxWorks;共享内存

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)17-0074-02

1背景

某型武器实时维护软件是工作于维护计算机上专门用于设备日常维护的专用功能软件。本文采用了基于VxWorks系统和Tilcon界面开发工具的设计方式,完成了维护软件的功能设计,主要包括维护界面的状态显示,维护操作命令下发以及下位机反馈状态的接收等功能。

VxWorks系统是Wind River公司开发的一种支持多任务处理的实时操作系统,因其高可靠性、实时性和可裁剪性,被广泛应用于通信、军事、航空、航天等高科技领域。Wind River提供了一种基于VxWorks系统的多媒体开发库WindML(Wind Media Library)是,用于支持窗口图形界面的显示,但其功能相对简单,不适于功能复杂的软件界面开发。而Tilcon是一种能够基于WindML的可视化开发环境,不仅提供了许多成熟的控件,而且操作非常简便,避免了直接使用WindML开发界面的繁琐过程。目前,利用Tilcon环境实现基于VxWorks系统的嵌入式界面开发已成为了一种广泛应用的图形界面设计方案。

本文首先介绍了利用Tilcon工具设计界面的流程,并结合了实际功能需求,分析了维护软件设计的关键要点。

2基于Tilcon的界面设计流程

Tilcon开发环境主要由三部分组成,即嵌入式矢量引擎EVE(Embeded Vector Engine),应用程序API函数以及可视化界面编辑器,其中的EVE引擎可以看作是一个事件驱动的微内核,应用程序可以通过API函数与EVE引擎交互。用户通过界面编辑器设计的应用程序界面,将保存为twd型资源文件,在实际使用过程中,通过应用程序对资源文件进行调用,完成图形界面显示,以下为VxWorks加载Tilcon界面的运行过程:

首先在函数体中完成窗体数据的初始化,之后将对TRT_Getlnput函数的事件响应进行循环监视,针对不同触发事件进行相应的事件处理,直至收到退出指令,此时,程序将退出循环、销毁窗体数据并退出界面显示函数。

3维护软件设计与实现

维护软件工作在维护计算机上,主要负责与某型系统的核心控制计算机通信以及维护界面显示。维护软件通过下发维护命令,使系统进入不同的维护状态;同时接收控制计算机反馈的系统状态,并将其显示在维护界面上。按照功能的不同,维护界面可以分为维护命令部分和状态显示部分。

3.1维护软件功能设计

通过对功能需求的分析,本文将维护软件将划分为三个任务来实现,分别负责维护界面的显示任务RCS_MaintDisp、网络数据接收任务RCS_LanRecv和网络数据发送任务RCS_Lan-Send。

3.2网络数据的收发

VxWorks提供了完备的网络功能,特别适用于提供嵌入式网络传输功能。VxWorks的网络层次结构主要分为应用程序层、协议接口层、多路复合层、链路层,其中,软件开发人员只需了解应用层中Socket函数的调用方法,而不需要了解协议中具体的实现方式。

由于维护计算机和控制计算机间的硬件电路采用点对点的连接方式,因此无需通过TCP协议中的握手过程来确认服务器和客户端的连接,因此维护软件可以直接采用UDP协议进行数据传输。

维护软件的网络数据收发是通过创建一个接收任务和一个发送任务实现的,发送任务首先完成数据初始化以及客户端的创建,根据定时器触发,定时向控制计算机创建的服务器发送报文;接收任务完成了服务器的创建和相应数据的初始化后,除了收到控制计算机发送过来的报文数据,将一直处在挂起状态。相较于使用单任務,在网络任务中建立一个客户端也可以与控制计算机的服务器完成网络数据的收发工作,但将通信工作分为收发两个任务的方式可以使软件编写更加简单。

3.3临界段数据的保护

维护界面显示任务RCS_MaintDisp和网络传输任务间存在数据交流。VxWorks系统中提供了多种任务间交流的方式,其中包括共享内存、信号量、消息队列和管道以及网络套接字等。其中,共享内存是任务之间的一种简单、快捷的数据交流方式。

界面显示任务和网络发送任务之间共享发送报文缓存空间SendPacket,其中,界面显示任务为生产者而网络发送任务为消费者。当人工操作维护界面下发维护命令后,界面显示任务将对共享空间SendPacket进行异步写人操作,由于网络发送任务是以固定周期定时发送数据的,而人工下发命令时机不确定,因此可能存在异步写入数据过程中,发送任务抢夺了CPU控制权,开始读取共享内存发送数据报,导致错误报文出现。因此,我们需要对共享资源进行保护,常用的保护手段包括禁止中断、禁止CPU资源抢占以及信号量互斥等方式。其中,信号量互斥是保护任务间共享内存最好的方式,相比于禁止抢占,互斥信号量提供了更精确的互斥颗粒度,仅对与共享资源相关的任务进行限制。VxWorks系统提供了二进制信号量、互斥信号量以及计数信号量三种不同形式的信号量,其中,互斥信号量是针对互斥事件对普通二进制信号量的优化,特别适合实现对共享资源的保护。

虽然接收任务和界面显示任务也存在内存共享,但是由于写接收报文缓存的时间要远小于维护界面刷新的时间,因此无需对共享数据段进行保护。

3结束语

本文梳理某型武器实时维护系统的设计需求及功能布局,通过Tilcon界面设计工具开发流程和工作流程,并结合维护软件中网络数据的收发和共享数据段保护的设计要点进行了详尽的阐述,具备一定的工程实践价值。

猜你喜欢
共享内存界面设计
《京燕儿》APP界面设计
中医养生APP界面设计
“共享员工”平台界面设计
中国传统元素在界面设计中的应用
基于共享内存的过约束多自由度振动台解耦控制方法
面向智能手机的UI界面设计
手机UI界面设计中视觉艺术元素的构成
通过QT实现进程间的通信
基于PCI总线的多处理器协同机制研究
一种高效RTAI 共享内存管理层的研究与实现*