在实时嵌入式环境下利用电子盘实现大容量数据记录的软件设计研究
2014-04-03张梅梅周向华陈国平谢前进
张梅梅,周向华,陈国平,谢 晖,谢前进
(1.中航工业洪都,江西南昌330024;2.驻320厂军事代表室,江西南昌330024)
0 引言
嵌入式系统是随着计算机技术、微处理器技术、电子技术、通信技术、集成电路技术的发展而发展起来的,越来越广泛地运用于各种场合,包括汽车、航天、航空、军事装备等领域。同时,随着技术的发展,Flash电子盘的使用也较为广泛,以前只是在一般环境中使用,如今逐渐在实时嵌入式环境中开始使用。本文主要在结合某个型号研发的基础上,介绍了在VxWorks操作系统环境下实现大容量电子盘数据记录的软件设计。
1 嵌入式系统
1.1 嵌入式系统概述
嵌入式系统是随着计算机技术、微处理器技术、电子技术、通信技术、集成电路技术的发展而发展起来的。嵌入式系统已成为计算机技术和计算机应用领域的一个重要组成部分。根据国际电气和电子工程师协会(IEEE)的定义:嵌入式系统是控制、监视或辅助设备、机器和车间运行的装置,这是从应用上来定义的。我们国内的定义是:嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁剪,适合于应用系统对功能、可靠性、成本、体积、功耗方面要求严格的专用计算机系统。
嵌入式系统的发展在硬件上经历了单板机和单片机时代,软件经历了无操作系统和实时嵌入式操作系统的过程。目前,嵌入式系统广泛应用于制造工业、过程控制、通信、仪器、仪表、汽车、船舶、航空、航天、军事装备、消费类产品等领域。
嵌入式系统一般具有如图1所示的基本结构。
图1 嵌入式系统的基本结构
1.2 嵌入式系统的特点
嵌入式系统具有下面一些特点:
1)嵌入式系统通常是面向用户、面向产品、面向应用,不能独立与应用自行发展。
2)嵌入式系统的核心部件——嵌入式微处理器的功耗、体积、成本、处理能力和电磁兼容性等方面均受到应用要求的制约,基本上是定制和裁剪的。
3)软件要求固态化存贮。
4)软件代码高质量、高可靠性、高时效性。
5)软件采用交叉平台开发。
1.3 VxWorks操作系统及开发环境
VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统 (RTOS),具有良好的持续发展能力、高性能内核以及友好的用户开发环境,在嵌入式实时操作系统领域占有很大的份额。VxWorks操作系统具有以下特点:
1)十分灵活,具有多达1800个功能强大的应用程序接口;
2)适用面广,可以适用于从最简单到最复杂的产品设计;
3)可靠性高,可以用于星际探索等关键任务;
4)适用性强,可以用于所有的流行的CPU平台,包括68K、PowerPC、CPU32、x86、Mips、i960等,同时还支持RISC、DSP技术。
Tornado是与VxWorks操作系统配套、用于软件交叉开发的集成开发环境,提供了一种高效的开发实时嵌入式系统的方法,同时具有与目标机环境关系不大的特点。Tornado开发环境面向各种目标机环境,不论目标机是资源丰富的还是资源受限的,其主要在主机端执行,并和远程端目标机共享基于主机的动态链接器和符号表。图2显示了Tornado主要的主机组件接口和目标机之间的关系,通过目标服务器和目标机代理来实现主机工具和VxWorks间的通信。
图2 Tornado结构图
2 系统设计
2.1 系统概述
该系统是某型武器系统的一部分,主要功能是实现各个系统之间的传输以及数据记录。该系统包含四个具有各自功能的子系统。其中,中控机是其核心,作为该软件的运行硬件环境,控制管理系统内部各个子系统之间有序的协调工作,实现GJB289A、低速RS422和高速RS422等硬件接口的工作,并在工作过程中记录这些数据。
中控机主要配置参数如下:
1)CPU:选用Intel MG80486DX 25~33MHz;
2)存贮器:配置了Flash存贮器、SRAM存贮器和EEPROM存贮器;
3)MBI接口:用来实现GJB289A数据总线通信输出,单通道、双余度;
4)422接口:用来实现低速422接口数据的通信,4路,速率可以通过软件设置,在该系统使用的速率为115.2K;
5)高速422接口:用来实现高速422接口数据的通信,2路,传输速率不小于530K;
6)电子盘:用来记录各种数据,容量1G,采用Flash芯片,内置了升温电路。
2.2 软件需求
根据系统的研制要求,该软件应实现以下功能:1)进行外部系统与本系统之间的数字信息交换:采集下发的指令,并上报自身的状态;
2)采集、解算外部系统下传的火控数据和控制命令,按照系统要求进行处理。
3)记录高速422数据、系统之间的通信数据以及内部通信、状态数据到电子盘上,数据记录能够满足系统多次上电工作记录的要求;
4)控制内部给子系统协调有序工作;
5)控制系统内部的自检以及周期性监测;
在进行该软件设计的时候,除了要考虑运行环境平台以及系统自身的需求外,还需要考虑下面一些性能方面的需求:
1)在软件中,既存在着传输周期为25ms的数据,又存在传输周期为40ms的数据,在设计必须考虑这些数据的传输周期以及可靠性。
2)软件设计开发应遵照相应的硬件结构,对硬件资源开销约束,时间余量、存贮余量均不少于30%。
3)由于该系统是一个多线程任务系统,存在几个线程同时运行的情况,因此必须在设计时保证系统的实时性。
2.3 软件设计
2.3.1 软件结构设计
根据嵌入式系统的结构模型、结合该软件特点,该任务软件结构从总体上划分三层:操作系统、应用层、驱动层。其中,操作系统作为该任务软件的顶层,负责任务软件的启动和RAM存储映像的建立,并控制任务的调度;应用层完成所有系统功能的实现和控制管理的处理,应用层包括下面一些模块;驱动层直接负责硬件的操作。
2.3.2 软件模块设计
由于存在着两种不同周期的数据需要传输,因此为了满足该要求,在软件设计的时候建立两个线程:一个线程为25ms的周期任务,另外一个线程为40ms的周期任务,同时将周期任务切换的中断时间设置为5ms,这样既可以保证满足系统的要求,也可以保证任务周期、减少任务切换的时间。
25ms周期任务为主要工作线程,大部分工作就在该线程中。根据前面的介绍,VxWorks操作系统提供了多种任务之间的数据交换和同步方式,比如信号量(包括二进制、计数、互斥)、消息队列、共享内存、管道等。由于使用信号量、消息队列等通信方式相对于使用共享内存的方式要多一些时间开销,因此在该软件设计时,25ms周期任务、40ms周期任务之间主要通过共享内存方式来实现通信。
在进行该软件设计的时候,需要着重考虑将高速数据记录到电子盘的设计。由于该软件运行平台为单CPU系统,需要完成逻辑计算、RS422传输、高速数据传输和记录。RS422的传输速率为115.2K,需要传输的字节数为60几个,大约花在这方面的时间为5.874ms;25ms周期任务和40ms的周期任务的逻辑计算等功能的运行时间大约4到5ms,因此用到两路高速数据采集、记录到电子盘的时间不能超过7ms,否则就不能满足系统设计的要求,也可能会影响任务的实时性。而且,由于这是大容量Flash电子盘第一次运用在实时环境下,难度比较大。
综合各种因素考虑,首先排除利用操作系统提供的文件系统进行数据记录,改为直接访问电子盘的物理地址进行读写,而且使用汇编语言进行读写函数的编写,这是因为利用文件系统需要进行一系列的处理,比如逻辑地址与物理地址的映射转换,这样的时间开销大,在目前的硬件环境是不可能保证系统任务的执行时间。同时,为了满足系统多次加电记录不覆盖数据的要求,将电子盘的物理地址从使用上分成几个等同的分区,每次上电记录到不同的分区上。
其次,改进软件的流程。在传统的软件设计以及该项目设计之初,采用如图3所示的处理流程。经过测试发现,这样处理时间开销也比较大,因为存在着比较多的读写电子盘命令。
图3 电子盘读写改进后的流程
经过仔细考虑和讨论,采用如图4所示的流程。相对于前面的流程,主要增加了一个操作系统支持的环形缓冲区。在该流程中,在初始化的时候调用库函数为每路高速数据建立一个环形缓冲区,大小为20K,比如,ppRngBufA=rngCreate(1024*20)。接着在主工作线程中,通过查询、搬移数据函数每个周期去查询高速RS422接口的寄存器状态,存贮寄存器半满将数据导入到环形缓冲区,另一方面,软件周期查询环形缓冲区的数据情况,当其状态满足2K,就在主工作线程中调用写电子盘函数(该函数采用C和汇编语言混合编程)将数据写入到电子盘。
采用该软件设计方式后,经过试验和使用的测试验证以及完善修改,能满足该项目系统的要求,能保证系统的实时性。
图4 电子盘记录改进后的流程
3 结论
在嵌入式系统中,通过使用该软件设计方法能实现实时环境下大容量数据记录的功能。在硬件允许的情况下,结合数据回放分析需求,采用文件系统,可使数据记录更灵活,回放更方便。
[1]张大波.嵌入式训练系统原理、设计与应用.北京:机械工业出版社,2005,1.
[2]王金刚.基于VxWorks的嵌入式实时系统设计.北京:清华大学出版社,2004,10.
[3]周启平,等.VxWorks开发指南与Tornado使用手册.北京:中国电力出版社,2004,7.
[4]肖忠炳,等.基于VxWorks的大容量SATA电子盘驱动实现.北京:航空电子技术,2002(1).
[5]邵兴.下串口通信程序设计与应用.北京:电子技术,2011(10).