EDN China > 设计实例 > 嵌入式系统 > 正文
?

(多图) 嵌入式操作系统在高速实时信号处理系统中的应用

电子技术应用/作者:张超 苏涛 吴顺君 西安电子科技大学?? 2008年06月25日 ?? 收藏0

  2 嵌入式实时操作系统VxWorks

  VxWorks是实时多任务操作系统,它能在确定的时间内执行其功能,并对外部异步事件作出响应。多任务环境允许一个实时应用划分为多个独立任务运行,各任务有各自的线程和系统资源。VxWorks实时操作系统由多个相对独立的目标模块组成,用户可根据需要选择适当模块来裁剪及配置系统,从而有效地保证系统的安全性和可靠性。这样,通过目标模块之间的按需组合,可得到许多满足功能需求的应用。

  下面介绍VxWorks的技术特征。

  (1)任务

  在VxWorks中,最小的程序运行单位称为任务(Task)。建立任务时,要对其分配一段固定的代码和数据空间。操作系统内核通过任务控制块对它的执行、通信、资源等情况进行控制。任务具有就绪、阻塞、挂起和延迟等状态。与大多数嵌入式系统一样,在VxWorks中,所有任务存在于统一的线性空间中共享物理内存,每个任务没有自己独立的代码段和堆,只有独立的动态栈,任务中的地址即是真正的物理地址。由于不需要进行地址空间映射,所以任务切换时的上下文切换(Context Switch)时间大为减少,从而符合实时操作系统快速响应的原则。VxWorks的代码段与堆共享减少了上下文切换时间,却带来了共享代码的可重入性问题。如一个函数被两个任务调用,当其中包含对全局、静态变量等从堆中分配空间的数据进行访问时,就有可能产生冲突,从而引发错误。这个问题在应用软件开发时要加以注意,其解决方法是使用局部变量(从栈中分配空间)或使用互斥信号量对临界代码进行保护。

  (2)任务调度

  VxWorks有优先级抢占调度和时间片轮转调度两种任务调度策略。系统共有256 个优先级。优先级抢占调度指一个优先级较低的任务正在执行中,另一个优先级高的任务进入就绪状态,则马上抢占处理器资源,执行高优先级任务,直到高优先级任务释放处理器(完成、挂起、阻塞等)才继续执行被中断的低优先级任务。优先级抢占调度可以保证实时系统的迅速响应特性,但也存在问题。当系统中存在几个相同优先级的任务时,就会使单一任务独占处理器直至完成。如果这个任务占用太多时间,则会影响其他同优先级任务的运行。当加入时间片轮转调度时,系统给相同优先级的任务分配相同的一段时间片,以轮转方式占用CPU。加入了基于优先级的时间片轮转调度方式,使不同优先级的任务间以抢占方式调度,相同优先级的任务以时间片进行轮转。

  (3)存储管理

  在基本的内核中,任务直接操作线性物理内存,不存在虚拟存储等复杂的存储管理策略,这主要是针对实时性考虑的。对于存在MMU的处理器中,VxWorks也提供支持标准的虚拟存储区和共享内存(多处理器间共享)组件。这样任务是操作虚拟存储,代码更加安全。

  (4)任务间通信

  任务间存在多种通信形式,内核支持各种UNIX的通用手段:信号量(Semaphore)、消息队列(Message Queue)、管道(Pipe)、信号(Signal)、套接字(Socket)。信号量主要用于对临界资源进行互斥保护及任务间或中断与任务间的同步;消息队列多用于消息驱动机制;管道是基于文件系统实现的任务间按先进先出方式传送数据的通信方式;信号相当于软中断,用于显示错误信息;套接字机制主要用于网络通信。当任务间需要大量交换数据时,由于VxWorks直接操作物理内存,可以直接访问全局存储区,不需要特别的手段。这与Linux下的共享存储段申请和Windows中的存储映射文件方式不同。

  (5)中断

  在VxWorks中,所有中断服务程序都不属于任何一个任务,并且使用同一个栈进行数据存储,中断将不会引起上下文切换,以实现高效的中断响应。中断与各任务之间可以通过前面所述的各种手段通信,但是对中断服务程序有一些限制。因为中断不存在上下文切换,所以不能调用可能导致阻塞的资源。例如动态分配内存(malloc)、获取信号量(semTake)和打印程序(printf)等。中断资源宝贵,所以中断服务程序应尽量短小,把运算量大和耗时的工作放在服务程序外处理。

  (6)文件系统

  VxWorks支持网络文件系统NFS及多种本地文件系统,如MS_DosFS、RawFS和RT-11FS,用户可根据具体配置选择。

  (7)网络支持

  Vxworks支持多种物理介质的TCP/IP协议族和几乎所有常用的基于TCP/IP协议的应用层协议,如ARP、BOOTP、SLIP和FTP,甚至其启动就是通过BOOTP或FTP方式取得系统映象文件。

  以上简单介绍了VxWorks的一些技术特征,充分反映了实时性与嵌入式的密切相关性。

  3 系统软件设计与实现

  VG4软件开发主要分为操作系统的配置生成和应用程序的开发两部分。操作系统的生成主要是对BSP的配置和对VxWorks组件进行裁剪。在应用程序的开发中,为了满足实时性要求,应对任务进行合理划分,使程序达到多任务并行操作。


?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

嵌入式? 操作系统? 信号处理?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈