您当前的位置:五五电子网电子知识单片机-工控设备嵌入式系统-技术基于μC/OSⅡ的实时任务模型研究与应用 正文
基于μC/OSⅡ的实时任务模型研究与应用

基于μC/OSⅡ的实时任务模型研究与应用

点击数:7964 次   录入时间:03-04 12:00:35   整理:http://www.55dianzi.com   嵌入式系统-技术

  0 引 言

  由于实时程序运行机制与传统程序相比具有独特性,在实时应用程序开发和相关教学实践中,如何根据应用需求和系统功能设计,确立实时程序结构,完成代码的设计与实现则是一个首要的、关键的问题。软件设计者常因缺乏简易、实用的实时软件开发基本方法,难以快速建立全面、系统的开发思路和实施步骤。现有实时内核技术及其应用软件开发资料篇幅较大,技术细节多,学习周期长,可操作性较差,一定程度上影响软件开发者的工作进度。需要一种简便易行、行之有效、可操作性强的开发方法,以便为快速全面了解、掌握实时软件开发流程提供指南。

  为此,通过分析实时软件核心技术,结合μC/OsⅡ实时 操作系统 内核,提出一个实时程序任务模型。依据该模型,确立 实时任务 功能及处理流程,调用实时内核,确立一个实时应用程序基本结构,实现实时程序运行机制,最终完成一个实时应用软件的设计与实现,并提供一个简单范例应用该任务模型。

  1 实时软件技术及实时软件构成

  实时软件开发环境一般采用实时操作系统( RTOS )作为系统开发和运行支持平台,支持模块化开发,提高开发效率,缩短开发周期,便于程序的调试、维护,使实时性能得到保证,系统稳定可靠。RTOS为每个任务建立一个可执行环境,并可方便地在任务间传递消息,在中断处理程序和任务间传递事件,根据任务优先级实施抢占调度。

  从实时操作系统(Real-time OS)的内核功能、实现方法和运行机制可得其目标包括:按照抢占优先级策略控制管理实时应用程序每个并发任务的运行;每个任务在多长时限可以完成或得到响应。任务时限(dead-line)是实现每个实时任务必备的性能指标。

  时限可以分为硬时限(Hard Deadline)和软时限(SOFt Deadline)。具有硬截止时间的任务即为关键任务,如果不能满足时限,则视为系统错误。根据任务设置的重要程度,将拥有关键任务的实时系统称为硬实时系统,否则称为软实时系统。

  硬实时技术应用广泛。例如:航空导航、武器控制等应用系统,必须使用实现硬实时技术的操作系统,将计算、存储、显示和机电控制系统以严格时限组合为一个系统。软实时系统运行方式与硬实时系统基本相同,区别在于只须满足统计意义上的实时要求。软实时系统一般要求满足时限的概率达到90%。比如,媒体播放系统一般要求1 s播放24帧图像。如果数据在数据严重负载的情况下,不能在1 s内处理24帧,造成播放失真。如果DVD播放正确率达到95%,用户就能基本满意。

  实时应用系统能否满足实时性能的要求,可从以下指标进行考察。

  1.1 中断 延迟

  从一个外部事件发生到响应中断处理函数的第一条指令开始执行,这段时长称为中断延迟。很多实时任务由中断驱动执行,中断事件必须在限定的时限内处理,否则将产生严重后果。

  例如,设定烤箱温度达到300℃时自动切断电源。从传感器探测到该极限温度,到系统进入切断电源的中断处理程序,其间系统处理这个时长即为中断延迟。显然,这个时长对烤箱设备的使用安全至关重要。

  1.2 抢占延迟

  从一个外部事件发生到处理该事件任务的第一条指令开始执行,这段时长称为抢占延迟。大多数实时系统都是处理一些周期性或非周期性的重复事件,事件触发任务执行。每当事件发生,相应的处理任务必须及时得到调度执行,否则将无法满足时限。抢占延迟反映系统响应的及时程度。

  例如:μC/OSⅡ某实时应用程序有如下功能,按照设定周期,需要运行统计任务对程序运行部分结果进行统计,从时钟到时,事件发生,到统计任务开始运行这段时间即为抢占延迟,这个时长决定统计结果误差的大小。

  图1表示实时软件设计编程和运行层次结构。该图对实现实时应用程序功能设计接口和运行机制进行层次划分。指明基于操作系统内核进行应用开发的编程层次和接口。从而形成实时应用程序内部结构。

实时软件设计编程和运行层次结构

  实现具体实时应用业务逻辑一般采用分解任务的方法。将一个实时应用功能划分为多个并发执行的任务。分配任务不同的优先级,赋予任务自主延迟功能,进行必要的任务通信,设置关键任务的中断响应。明确任务的执行条件、中断条件和挂起条件等因素。每个任务是系统中一个独立的执行调度单位和资源分配单位。如图1所示,调用RTOS内核系统函数接口,创建实时任务;任务的运行从接受内核调度开始,按照自身流程设计循环执行,直至系统运行结束。

  通过对实时应用功能划分及运行技术分析研究,总结出实时应用的基本构成单位和基本功能实现方法,如图2所示。

实时应用业务逻辑功能划分

  2 基于μC/OSⅡ内核的实时任务模型

  μC/OSⅡ嵌入式操作系统是一个多任务、优先级抢占、可移植、可裁减的实时内核。具有时间、内存、信号量、邮箱和信息队列等各类功能函数,各任务间可以互相通讯,适用于小型CPU,开源代码简练,应用领域广泛。

  μC/OSⅡ操作系统以系统函数形式提供各类管理功能,以任务为单位对应用代码进行管理。应用程序调用系统函数编码,并进行编译、链接、运行。应用代码与内核构成一个整体。实时软件编码的核心问题在于将应用软件的具体功能转化为系统中一个个并发执行的实时任务,接受操作系统内核调度程序的调度和管理,使应用功能最终实现。

  基于μC/OSⅡ实时操作系统内核进行应用程序开发,首要的工作在于如何将应用程序中的功能进行模块分解,使每个模块转换为可并发执行的任务;调用内核完成任务流程的设计与实现;启动操作系统内核的任务调度程序,并发执行任务。

  由于实时应用程序的开发既要考虑内核功能及接口,也要设计应用逻辑功能。设计一个任务模型,直接服务于实时应用程序的设计与实现。该模型对设计与实现的全过程进行简要分解,对各个环节进行功能设计与实现,引导用户将设计功能转换为应用程序。

  图3提供了任务模型框架与构建基本步骤。

任务模型框架与构建基本步骤



www.55dianzi.com

  2.1 任务分解

  任务分解是将一个实时应用业务逻辑,按照任务的管理和控制接口划分为若干独立的任务,并发运行,实现应用功能。简单地分为设计阶段和编码阶段。

  2.1.1 设计阶段

  (1)根据应用程序功能需求,将应用程序功能划分为若干并发任务。首先将需要并发执行的子功能确立为任务,任务优先级按响应的迫切程度确定。

  (2)确定每个任务处理流程,确保完成任务功能。

  (3)确定任务功能实现是否与其他任务的执行有关联。

  2.1.2 编码阶段

  (1)完成每个任务的程序设计。将任务流程使用C语言编写为独立的函数。根据应用需求,不同的任务也可共用同一个函数的代码段。

  (2) 实时任务 需确定优先级。为确保低优先级任务有机会运行,每个任务函数中需包括睡眠、挂起、等待指定时间等一些自主放弃CPU的语句,调用内核函数实现。

  2.2 任务通信

  实时任务间存在互相合作或竞争关系。μC/OSⅡ实时 操作系统 内核允许并发任务间通过事件、信号量、消息邮箱、消息队列进行通信。实现分为两步:定义通信事件数据类型及初始化;任务编码中适时调用发送和接收函数。

  (1)创建任务前,调用内核,定义需要的通信机制数据结构。

  (2)发送任务和接收任务调用内核任务通信函数实现编码,发送任务和接收任务可有多个。

  2.3 任务创建

  将编码完成的任务函数,通过调用内核函数,转换为内核可调度的任务。系统函数INT8U OSTa-skCreate(void(*task)(void*pd),void*pdata,OSSTK*ptos,INT8U prio)的输人数据为:任务代码指针——任务函数名;创建任务运行时传递的指针——可为空值;任务堆栈栈顶指针——任务现场数据;任务优先级——确定任务关键程度。

  2.4 任务性能

  为确保实时应用程序的实时特性,满足实时软件的性能需求,必须要求实时内核能够控制每个实时任务的响应时间和执行时间。

  任务的响应时间可利用系统内部定时器计算,根据任务的执行顺序,在起始任务开启定时器,在结束任务停止计时,经反复调试,可以测定实时任务的响应时间,一般设为计时最大值,可为确定任务抢占 延迟 时间提供直接数据。

  任务执行时间的测定方法类似。在任务执行代码起始位置开启定时器;在一个任务周期结束时停止计时。反复调试,测得的最大值计为任务的执行时间,又为一个任务最长的一个执行周期,也为控制单个任务功能的执行提供依据。

  2.5 任务与μC/OSⅡ实时内核连接

[1] [2]  下一页


本文关键字:模型  嵌入式系统-技术单片机-工控设备 - 嵌入式系统-技术