基于Vxworks的视频记录仪控制软件设计与实现

时间:2022-09-05 07:56:03

基于Vxworks的视频记录仪控制软件设计与实现

摘要:VxWorks操作系统是一个高实时性和高可靠性的嵌入式操作系统,它被广泛的应用于高精尖以及实时性要求极高的领域中。本文介绍了一种采用PC/104体系结构的硬件环境结合基于嵌入式操作系统Vxworks控制软件实现的视频记录仪,并重点介绍了基于Vxworks的控制软件实现过程。

关键词:VxWorks;多任务调度;信号量;中断

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2009)05-1246-02

VxWorks-based Video Recorder Control Software Design and Implementation

LI Xiao-kang1, GAO Rong-fang1, CHEN Jiang2

(1.School of Computer Science, Xi'an Shiyou University, Xi'an 710065, China;2.School of Computer Science, Northwestern Polytechnical University, Xi'an 710072, China)

Abstract: VxWorks is a highly real-time and reliable embeded operation system, it is widely applied in high tech scope and the scopes with high command for real-time characteristic. This paper introduces a kind of video record instrument, which based on the hardware of pc/104 architecture and the control software of the embedded operation system vxworks. this paper also highlights the realization process of control software, which based on vxworks.

Key words: Vxworks; multiple-task scheduling; semaphore; interrupt

1 引言

近年来,由于数字图像技术的快速发展,视频记录仪也越来越多地应用到各个行业中。其中大部分行业对于视频记录议的软硬件要求不是很高,但在某些特殊行业,比如军用上,由于其特殊的工作环境,对于记录议的硬件可靠性和控制软件的实时性提出了更高的要求,并且传统的通用操作系统已无法满足控制软件的高实时性要求。

本文设计了一种采用PC/104体系结构的硬件环境结合嵌入式操作系统Vxworks控制软件的方案,该方案满足了视频记录仪的可靠性和实时性要求,本文重点介绍了记录仪控制软件的实现。

2 视频记录仪的结构图及工作原理

视频记录仪的硬件环境由pc\104主板、图像采集压缩卡、图像存储器、RS232通讯口和电源等模块组成。采用这样的硬件结构使得整个记录仪具有超小尺寸、超低功耗、宽温特性、+5伏供电、高可靠性、可适用于各种恶劣环境等优点。因此,可以满足对于记录仪硬件的高可靠性要求。具体硬件结构如图1所示。

工作原理:记录仪上电后,首先对系统硬件进行初始化,然后通过串口发出开始命令后开始数据采集,并将采集到的视频数据保存到电子硬盘中,数据采集结束后再用串口发出结束命令结束数据采集。返回地面后,记录仪与地面PC机通过网线连接,将采集到的视频数据传输到PC机上以供工作人员分析与处理。

3 实时操作系统Vxworks及其任务调度

记录仪的控制软件采用嵌入式操作系统VxWorks实现。VxWorks是美国WindRiver公司设计开发的一种嵌入式实时操作系统(RTOS),是一个运行在目标机上的高性能、可裁减的嵌入式实时操作系统。它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。

VxWorks操作系统卓越的实时性主要是通过其精简的内核p灵活的多任务调度方式p信号量机制和中断机制实现的。VxWorks是采用微内核结构设计的操作系统,其Wind内核最小可以达到8KB,并且Wind内核提供了基本的多任务环境,从表面看系统中多个任务同时执行,实际上是内核根据某种任务调度策略让它们交替运行。

3.1 VxWorks多任务调度策略

Wind内核采用基于优先级的抢占式调度算法作为它的默认调度策略,同时也提供了轮转调度算法。Wind内核优先级划分为256级,0及为最高优先级,255为最低优先级。通常情况下,在同优先级任务间采用时间片轮转调度,不同优先级采用抢占式调度。

3.2 信号量

VxWorks支持各任务间通信机制,提供了多种任务间通信方式,主要有共享内存、信号量和消息队列等。但其中信号量能提供最快速的任务间通信机制,它主要用于解决任务间的互斥与同步。针对不同类型的问题,VxWorks提供以下3中信号量:1) 二进制信号量:使用最快捷、最广泛,主要用于同步或互斥;2) 互斥信号量:主要用于优先级继承、安全删除和回溯;3)计数器信号量:用于资源的数目较多的情况。

3.3 中断

在一个实时系统中,中断处理是至关重要的,系统通过中断机制响应外部事件,并对外部事件作出处理,系统对中断的响应速度和中断服务程序的处理速度直接反映了实时系统的性能。为了快速响应中断,中断服务程序ISR运行在特定的空间,不同于其它任何任务,中断处理没有任务的上下文切换。

由于VxWorks上述的性能和优点,采用它实现视频记录仪的控制软件能够满足系统的高实时性要求。

4 控制软件的设计与实现

根据系统的工作原理,可将控制软件分为以下4个模块:1)串口控制模块:通过串口发出一个中断命令开始或者停止录像;2)定时控制模块:通过看门狗定时器控制录像时间,防止视频文件过大;3)图像采集模块:将采集的视频图像进行压缩存储,并以系统当前时间作为视频图像的文件名;4)网络通讯模块:返回地面后通过网线与PC机相连,将视频文件传回PC机以供分析。

嵌入式系统控制软件设计的关键在于软件实时性的保证,具体内容包括任务的划分p任务优先级的确定p多任务间的通信机制和中断的处理。

首先是根据系统控制软件的功能进行任务划分,任务的准确划分对于整个控制软件的设计极为关键,它决定了整个控制软件实时性能的优劣。任务数目过多会造成系统运行效率降低,资源开销增大。任务划分过少又会造成每个任务需要实现的功能过于繁杂。

为使任务划分合理,达到理想的目标,任务划分的方法依据以下原则:1)以CPU为中心,将输入/输出设备相关的功能分别划分为独立的任务;2)找出关键任务,用一个独立的高优先级任务或ISR实现;3)剩余的p按固定顺序执行的功能划分为较低优先级的任务。

根据以上划分原则,整个系统控制软件可划分为4个任务:视频图像采集任务p图像存储任务p定时控制任务和网络通讯任务,其中视频图像采集任务和图像存储任务设置为相同优先级。串口控制着图像采集的开始与结束并且属于外部事件,因此它应具有最高优先级,采用中断的方式实现。定时控制按周期循环执行,将它设置为最低优先级。网络通讯是在地面实现的功能,属于关键任务,因此将它也作为最高优先级。

任务的数目和优先级确定之后,还需要考虑任务之间的通信,多任务间的通信机制决定了各任务能否同步协调运行,它主要是通过信号量实现,根据信号量的类型特点,本方案采用二进制信号量。需要注意的是,二进制信号量的初值可为empty和full,决定了它适用于不同的情况,当初值为empty时用于任务间的同步,当初值为full时用于任务间的互斥。而且信号量释放与等待操作必须成对出现。

针对以上划分的四个任务分析,实际上串口中断和定时任务控制着视频图像存储任务的执行,它们三者具有同步关系,它们之间的协调要通过二进制信号量实现。其中串口控制采用中断服务程序实现,为了保证系统的实时性,必须使中断服务程序处理时间最短,因此,在中断服务程序中只执行释放信号量操作。定时任务每隔一段周期向图像存储任务释放一次信号量,而图像采集任务只有等到信号量可用时才能执行,通过这样的方式以达到三个任务之间的协调运行。

具体的程序实现过程如下:

1)主程序创建四个任务

void Dspmain()

{…

taskSpawn("tDSP1", 100, 0, 10000, (FUNCPTR)DSPTask1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);

taskSpawn("tDSP2", 100, 0, 10000, (FUNCPTR)DSPTask2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);

taskSpawn("tcpftp",30,VX_FP_TASK,20480,mymain,0,0,0,0,0,0,0,0,0,0);

taskSpawn("sTimeControl",110,0,5000,(FUNCPTR)TimerControl,0,0,0,0,0,0,0,0,0,0);

…}

2)创建一个中断连接,将其与中断服务程序绑定,并通过中断服务程序释放信号量

if(pciIntConnect((VOIDFUNCPTR*)INUM_TO_IVEC(INT_VEC_GET(

TIMERINTNUM)), ComInterrupt, maxnum) != 0)

void ComInterrupt(int maxnum)

{…

semGive(ControlSem1);

…}

3)图像存储任务等待因为等待信号量而处于阻塞状态,当中断产生并释放信号量后视频采集任务获得信号量得以运行。

void DSPTask2(int dspnum)

{…

semTake(ControlSem1, WAIT_FOREVER);

…}

4)定时控制任务在串口发出开始命令之后通过看门狗实现每隔一固定周期释放一次信号量,以控制图像存储任务的定时存储

void TimerControl()

{while(1)

{/*启动看门狗定时器*/

setTimer(CAPTURE_TIME,sbs_watch_dog,Time_out);

break;}}

Void setTimer(int timer,WDOG_ID sbs_watch_dog,UINT32 is_watch_dog)

{

if((wdStart(sbs_watch_dog,timer/TICK_MS,(FUNCPTR)OnTimer,0))==ERROR)

}

LOCAL void OnTimer(UINT32 is_watch_dog)

{

semGive(ControlSem1);

setTimer(CAPTURE_TIME,sbs_watch_dog,Time_out);

}

5)在返回地面后,网络通讯任务为最高优先级,因为该任务只有在网络连接后才被激活,因此它与串口中断任务并不冲突。

5 结束语

本文设计的视频记录仪控制软件基于嵌入式操作系统VxWorks实现,创新点在于将信号量与中断服务程序相联系,在中断服务程序中只执行释放信号量操作,从而在实现实时系统控制的同时,也避免了低优先级任务被中断所阻塞。而且根据系统功能对任务的准确划分极好的实现了系统的实时性,保证了记录仪数据采集的顺利完成。

参考文献:

[1] 陈智育,温彦军, 陈琪. VxWorks程序开发实践[M].北京:人民邮电出版社,2004.

[2] 王学龙.嵌入式操作系统VxWorks系统开发与应用[M].北京:人民邮电出版社,2003.

[3] VxWorks Programmer's guide 5.4[M].wind river.inc,1999.

[4] 冉义贵,昊勤章,任国强. 基于嵌入式操作系统VxWorks的SCSI硬盘高速记录系统[J].计算机应用,2004,30(2):11-13.

[5] 李慧,李涛,杨占华,等. VxWorks下基于多任务调度的分析和研究[J].微机发展,2005,15(6):30-32.

上一篇:论VRRP技术在广域网中的应用 下一篇:高等医学院校计算机程序设计课程教学探索与实...