新闻中心

EEPW首页>嵌入式系统>设计应用> VxWorks操作系统及实时多任务程序设计

VxWorks操作系统及实时多任务程序设计

作者: 时间:2012-03-27 来源:网络 收藏


  (3) 存储管理 在基本的wind内核中,任务直接操作线性物理内存,不存在虚拟存储等复杂的存储管理策略,这主要是从性能来考虑的。不过也提供支持POSIX标准的虚拟存储区和共享内存(多处理器间共享)组件。

  (4)任务间通信在任务间传递控制信息时,通信量小,wind内核支持各种UNIX的通信手段:信号量(semaphore)、消息队列(message queue)、管道(pipe)、信号(signal)、套接字(socket)。信号量主要用于对临界资源访问的同步和互斥;消息队列多用于消息驱动机制;管道是基于文件系统实现的任务间按先进先出方式传送数据的通信方式;信号相当于软中断;套接字机制主要用于网络通信。

  当任务间需要大量交换数据时,由于直接操作物理内存,可以直接访问全局存储区,不需要特别的手段,与Linux下的共享存储段申请和WindowsNT中的存储映射文件方式不同。

  (5)中断在下,所有中断服务程序都不属于任何一个任务,并且使用同一个栈进行数据存储,则中断将不会引起上下文切换,以实现高效的中断响应。中断与各任务之间可以通过前面所述的各种手段进行通信,但要注意对中断服务程序有一些限制,例如不能进行可能导致阻塞的资源申请等等。

  (6) 文件系统 VxWorks支持多种本地文件系统:MS_DosFS、RawFS和RT 11FS,可根据具体配置选择;还支持网络文件系统NFS,可以没有局域文件系统。

  (7) 网络支持 Vxworks支持多种物理介质的TCP/IP协议族和几乎所有常用的基于TCP/IP协议的应用层协议,例如ARP、BOOTP、SLIP和FTP,甚至其启动就是通过BOOTP或FTP方式取得系统映像文件的。以上简单介绍了一些VxWorks的技术特点。要注意,这些特点都是跟VxWorks的特性 ——实时性与嵌入式密切相关的。

  三、 X窗口系统

  本系统采用美国Peritek公司的VCL V图形控制器插件进行显示输出和输入控制,客户界面基于X Window。X客户程序的开发选用美国SeaWeed公司的SeaWindM软件。

  X是美国麻省理工学院(MIT)研制的一个可移植的网络透明的窗口系统。它具有设备独立性和网络透明性的特点,即基于X开发的应用程序不需要重写或重新编译就可以在新的显示硬件上执行,并且在网络环境下通过X可在网络任一节点上运行X的应用程序而不必考虑该节点的物理位置。

  四、 显示与控制系统的具体实现

  本系统的功能主要是初始化各处理模件、根据输入命令对各处理模件进行控制和对处理结果的实时显示。这些都是通过与相应子系统的数据通信来完成的。对通信数据和策略的分析是系统设计的关键。系统与其他子系统中存在着这样几类通信数据:与前端模拟子系统的控制信息与数据、与数字信号处理子系统相关的控制信息和数据、发射信号控制信息、显示数据以及从键盘和鼠标获得的输入信息。这几类数据都是通过VME背板总线传输,通过对VME地址空间直接读写进行访问。其中由数字信号处理子系统送来的数据是由数据更新事件驱动的。为了满足实时性的要求,需要在每组结果数据更新之前完成通信,因此处理的优先级需要很高。

  基于上面的考虑,系统划分为4个任务:系统监控、显示与输入、子模件控制和错误处理。

  系统监控——提交和监控其他子任务。
  显示与输入——实时显示信号处理结果和产生输入消息。
  子模件控制——向各子模件发送控制参数和计算数据,由输入消息驱动。
  错误处理——根据错误类型进行相应处理:显示错误信息、重启动各模件、中止系统,由出错消息驱动。
  信号处理结果读取在显示和输入任务中完成,其驱动事件为处理结果更新。在被动声纳处理中,短时间能量积累的结果每64ms更新一次,平均功率谱结果每 1.5s更新一次;主动声纳处理的幅度信息数据率为1.3kb/s,频域处理结果更新率为5~10次/s。如果由信号处理模件在数据更新后向 MVME177发送中断事件,由于数据更新率差别较大,可能造成瞬间中断频繁,增加处理复杂度。所以采用定时中断,使用间隔为50ms的定时中断去检查数据更新标志,既能保证实时数据刷新,又能简化处理结构。

  各任务间的大批量数据传输利用VxWorks的共享内存直接访问,而传递控制消息多采用消息队列(message queue)。在显示和输入任务中有两类驱动事件:键盘、鼠标输入和显示数据更新。显示刷新的优先级应该高于人工输入,所以在这里使用了信号(signal)。当任务捕获信号时,立即中断正在执行的流程,转而进行信号服务处理。完成后,继续原处理流程可以保证显示的实时刷新。

  各任务之间的通信机制由4个消息队列、1个定时中断和1个信号完成:

  消息队列SystemMsg:系统开机、系统关机、系统复位、系统重启等,由错误处理任务和键盘输入产生;由系统监控任务接收。
  消息队列ParamModifyMsg:更改前端硬件参数、DSP参数等,由键盘输入产生,由子模件控制任务接收。
  消息队列ErrorMsg:定义了各种错误类型,由各任务的出错接口产生;由错误处理任务接收。
  X消息队列:由显示和输入任务接收(被SeaWindM软件包封装)。 定时中断:由系统监控任务启动和停止,读取DSP处理结果。 信号处理:由显 示和输入任务注册,定时中断发送信号,接收到后进行数据显示。
  系统定义全局变量System_Data。其数据类型为自定义的System_Data_Struct结构。通过System_Data实现任务间的数据交换。

  结束语

  以上介绍了数字式声纳的显控系统的设计。基于VxWorks的多任务设计使系统的实时性和稳定性都非常好。目前该显控系统已通过测试,达到了系统的设计要求。

上一页 1 2 下一页

评论


相关推荐

技术专区

关闭