嵌入式实时多任务软件的软总线结构设计
摘要:本文提出在嵌入式实时操作系统上建立实时多任务软件系统时,使用软总线提供数据驱动层以处理多任务间共享资源的构架方式。该方案封装各种共享资源的操作,在操作系统上构建使资源对于其他系统任务模块构建者透明的数据驱动接口。实验结果表明该方案能较好的为各任务进程提供共享资源建立和使用的接口,同时有效地屏蔽由于进程资源共享与进程独立性的矛盾而可能产生的错误。
1.引言
随着大型嵌入式系统向着集成化和多元化方向的发展,嵌入式软件系统的复杂度也日益增大。在集成多个硬件工作模块组成的复杂系统中,要求软件系统能同时测控多个模块的同步工作,软件设计要求做到实时多任务。针对软件设计的要求,采用基于实时多任务操作系统提供的底层任务调度机制,建立软件架构成为较好的选择。本文提出了基于实时多任务操作系统,建立软件架构时采用软总线提供数据驱动层的架构模式。针对实时多任务操作系统,分析任务调度与数据驱动层。针对资源共享与任务进程独立性等问题,提出软总线在共享数据维护上的优势。
2.任务调度、共享资源与软总线结构研究
2.1 嵌入式开发任务调度和资源共享
目前主要的实时多任务操作系统(VxWorks,嵌入式Linux,WinCE)的任务调度均采用对于不同优先级抢占式调度,对同优先级采用时间片轮转调度的方法。为使低优先级任务能得到运行,软件需要能阻塞高优先级任务,同时也要能使被阻塞的任务重新就绪运行。操作系统对进程间通信资源的操作能产生这样的效果,所以在架构软件时,常借助进程间通信资源的使用。然而采用这样的方式,调度灵活性较差,同时低优先级任务对进程间通信资源的占用也始终处于劣势。任务进程较多复杂软件系统中,无法避免的会出现多进程共用资源的情况,事实上进程通信资源也是一种多进程共用的资源。进程可以对自身资源进行管理,但对于这些共享的资源,就无法只由共享者中的某一个进行管理。而这个管理却是必要的,否则进程内部的意外可能通过这些资源蔓延到其他进程,如:进程内部意外的对资源地址赋空,就会使其他共享该资源的进程在使用该资源时崩溃。这就要求在系统设计时,有独立于各个进程之外的总体的对资源管理的模块。
2.2 软总线结构
在此,本文提出软总线结构来架构复杂的软件系统,以解决任务调度和资源管理上的困难。软总线是封装了操作系统对于进程间通信资源,共享内存等有多个进程共同使用的资源操作的模块。该模块为任务进程模块提供标准的资源申请、使用及回收接口,任务进程使用该接口及协议的标识进行资源的共享。
首先,软总线封装了各种进程可能共享的资源,独立于进程之外对资源进行管理,使共享资源对于任务进程透明,任务进程无法直接操作资源。这样的处理方式使得资源本身不能被任务进程修改或破坏。任务进程获取的数据,实际是总线上数据的副本,而所有关于总线上数据的更新都需要总线模块的认证,以避免出错。总线模块在操作系统底层调用的基础上,通过封装资源、提供接口,构建了一个数据驱动层。同时,由于软总线的封装,使得在构建软件系统时,对进程的调度需要通过软总线来实施。如果在总线模块处加载系统的调度策略,可以更灵活有效地对每个资源进行任务的调度。使得一方面降低了在开发初期为任务进程设置合理优先级的难度,一方面也使得不同任务能在不同的资源处能有更为灵活的优先策略。
综合以上两点,以软总线架构底层数据驱动的方式构建实时多任务软件系统,可以有效地保护和管理共享资源并更为简单灵活对系统进行调度。
3.软总线软件架构方案
本设计基于Vxworks操作系统,试验平台包括通信、存储、复接、硬件总线与主控计算机等硬件电路板,及与硬件相对应的软件功能模块。
3.1 软件架构整体方案
本设计中,软总线封装的操作系统对于内存、信号量以及消息队列的创建、删除及使用等操作。上层与硬件功能对应的软件任务模块需要通过软总线进行对资源操作。具体的结构如图1 所示:对于功能模块本地化的资源,不强制要求使用软总线操作。
图1 软总线架构设计框图
3.2 软总线详细设计
对于软总线结构的架构方式,设计关键节点就是软总线模块。该模块负责对操作系统的资源封装和上层功能模块的资源使用请求处理。本设计中,将软总线分成两个主要的部分:资源池和管理表。资源池是软总线模块开辟的内存区域,在内存池上进行系统其他功能模块的共享资源的创建。
软总线引入了以下操作特性:资源创建于软总线的资源池,功能模块通过标示符来间接地使用资源,资源使用需要经过软总线的验证
- Linux系统对ISA总线DMA的实现(06-19)
- DSP HPI口与PC104总线接口的FPGA设计(04-14)
- 一种基于DSP的张力、深度、速度测量系统(04-15)
- 用双端口RAM实现与PCI总线接口的数据通讯(05-06)
- 对TTCAN的分析(05-26)
- 基于PCI总线和DSP芯片的图像处理平台的硬件设计(07-06)