一种任务超时保护方法技术领域
本发明涉及计算机技术领域,尤其涉及一种任务超时保护方法。
背景技术
嵌入式系统多为实时处理系统,这就要求系统在规定时限要求内及时给出
响应,例如在基于图像的目标检测及跟踪系统中,目标检测及跟踪处理任务必
须满足系统实时处理要求,否则将出现目标检测或跟踪位置滞后甚至无法给出
正确输出的问题。
在嵌入式实时处理系统中,一些算法的处理时间是基本固定的,与采集的
数据的复杂程度无关,这类算法的处理时间主要与所采用的处理器的主频有关,
因此在设计阶段就可以保证系统的实时性能,但是实际的系统为了满足用户各
种各样的需求,其处理算法的时间多与输入数据的复杂程度有关,这样当输入
数据复杂程度偏高时,数据处理任务就可能存在超时的问题,在超时情况下,
如何保证系统后续给出必要的有意义的输出,并保证良好的用户体验,这将是
软件设计人员不得不面临的难题。
目前,实现任务超时保护的方案一种是通过定时器实现对特定软件模块的
监控,这种方式在进入软件模块前启动一个定时器,在退出软件模块前重置该
定时器,如果定时器未在指定时间内重置(即发生超时),该定时器将产生一个
中断,该中断服务程序将执行相应的任务超时保护操作;另一种是通过特定硬
件电路(如看门狗)实现系统在超时状态下的全局复位,来达到重启系统的目
的。前者受限于系统中定时器的数量,而后者虽然可以很好的实现正确的系统
状态恢复,但是对于包含外设较多的嵌入式系统,在复位后,系统将需要重新
完成相关设备的初始化,这不但影响了系统的响应时间,同时在输入数据无变
化的条件下,任务重启后,依然会存在超时问题,这不能从根本上解决软件超
时的问题,此外该方式主要受看门狗电路控制,也不能实现任务超时的工作现
场的保护,这样一些关键的状态信息将不能被保存下来,不利于对超时处理原
因的后续分析。可见,现有的基于硬件的任务超时保护的方案存在各种弊端,
不能满足使用需求。
发明内容
鉴于上述问题,提出了本发明以便提供一种解决上述问题的任务超时保护
方法,该方法在软件层面实现了任务的超时保护。
具体的,本发明提供的任务超时保护方法,应用于嵌入式实时操作系统中,
包括:
创建同步任务、被监控的处理任务,并为每个被监控的处理任务创建对应
的监控任务;其中,所述同步任务为周期任务,各所述被监控的处理任务均维
护一初始状态为未置位的超时标志;
在周期时间到达时,调度所述同步任务,所述同步任务检测各被监控的处
理任务的超时标志的状态,针对每个被监控的处理任务,若其超时标志未置位,
则触发该被监控的处理任务;否则,触发对应的监控任务;
所述被监控的处理任务将其维护的超时标志置位后执行数据处理算法,并
在数据处理算法执行完成后,对超时标志进行去置位处理;
所述监控任务对系统状态数据进行保存,并删除其监控的处理任务。
可选地,本发明所述方法中,所述监控任务删除其监控的处理任务后,还
包括:调整数据处理算法,以降低算法处理时间,并基于调整后的数据处理算
法重新创建被监控的处理任务。
可选地,本发明所述方法中,所述同步任务的运行周期与系统外部硬件中
断的周期一致。
可选地,本发明所述方法中,所述监控任务通过对数据处理算法中影响处
理时间的一个或多个阈值参数进行调整的方式,调整数据处理算法,以降低算
法处理时间。
可选地,本发明所述方法中,所述监控任务保存的系统状态数据包括:本
监控任务监控的处理任务所运行的数据处理算法中影响运行时间的阈值参数。
可选地,本发明所述方法中,所述监控任务保存的系统状态数据,还包括:
系统寄存器的数据。
本发明有益效果如下:
a.不依赖于特定的定时器硬件资源;
b.不依赖于额外的硬件电路,降低了硬件成本;
c.可以保存发生超时后的关键状态信息,方便后续对任务超时的原因进行
分析,为后续的处理算法优化提供关键数据;
d.可以根据超时状态,调整相关参数,并可能从根本上解决在此状态下任
务超时的问题。
附图说明
图1为本发明实施例中同步任务的执行流程图;
图2为本发明实施例中处理任务的执行流程图;
图3为本发明实施例中监控任务的执行流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清
楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是
全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造
性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的目的是结合嵌入式实时处理系统中存在的任务超时问题,采用基
于软件的方式,实现一种任务超时保护方法。大部分嵌入式处理系统都满足如
下的数据流,数据采集-数据处理-数据输出,在这种数据流驱动的系统中,为了
提高系统的实时性能,多使用外部中断事件触发数据处理任务,对于某一特定
的系统,该中断的周期是固定的,该中断的周期即是系统的实时处理时限要求,
即数据处理流程应在下次中断到来前完成已采集数据的处理,因此本发明基于
这种特点,建立一种任务超时保护机制。
具体的,本发明提供的任务超时保护方法要求所开发的软件基于嵌入式实
时操作系统RTOS(RealTimeOperationSystem),并且所用的嵌入式实时操作系
统支持基于优先级的多任务处理,具体本发明实施例所述方法包括以下步骤:
a,初始化系统硬件及软件资源;
b,创建同步任务,处理任务,并为关键的处理任务(被监控的处理任务)
分别创建任务超时保护监控任务;
c,进入实时操作系统的任务调度器,调度器将根据操作系统的任务调度规
则对如下三个任务进行调度;
d,调度同步任务。对于同步任务,其实现形式可以是硬件中断服务程序,
或者是中断回调函数,它对应相应的外部同步中断,它是一个周期任务,其周
期依赖于外部硬件中断的周期。进入此任务时,表明处理数据已经准备好,它
将根据超时标志状态触发被监控的处理任务或监控任务,若不超时,则触发被
监控的处理任务,进入步骤e,若超时,则触发监控任务,进入步骤f,三个任
务中,该任务优先级最高;
e,调度处理任务。对于被监控的处理任务,该任务为系统的核心任务,如
果超时标志未设置(默认未设置),该任务将被同步任务触发,进入该任务后,
该任务将首先设置超时标志,然后执行数据处理算法,数据处理算法执行完成
后,将清除超时标志。这里,只要数据处理不发生超时现象,将总能执行超时
标志清除操作,这样监控任务常态将处于阻塞状态,而发生超时后,该超时标
志将不能在进入同步任务前执行清除操作,三个任务中,该任务优先级最低;
f、调度监控任务。对于监控任务,该任务针对关键处理任务实现了系统的
任务超时保护机制,正常工作时,该任务常态处于阻塞状态,当被监控的处理
任务发生超时后,该任务由同步任务触发,进入该任务后,将首先保存系统的
关键状态信息(为了实现关键信息的保存及后续的读出,需要硬件结构上包含
非易失性存储器或数据输出接口,例如,EEPROM、FLASH等存储器或串口等
数据通信接口),然后删除超时的被监控的处理任务,之后调整超时的被监控的
处理任务执行的数据处理算法,以降低算法处理时间,最后重新创建处理任务,
三个任务中,该任务优先级次之。
本实施例中,保存的系统的关键状态信息包括:本监控任务监控的处理任
务所运行的数据处理算法中影响运行时间的阈值参数。优选地,还包括:系统
寄存器的数据。其中,保存系统寄存器数据的目的是防止处理任务超时导致系
统崩溃。
进一步地,本实施例中,监控任务通过对数据处理算法中影响处理时间的
一个或多个阈值参数进行调整的方式,调整数据处理算法,以降低算法处理时
间。
其中,监控任务调整的阈值参数为监控任务自身根据保存的系统状态数据,
确定的一个或多个阈值参数;或者,为顶层用户根据保存的系统状态数据分析
得到的一个或多个阈值参数,并通过命令的方式(不仅限于该方式)被监控任
务获取。
为了更清楚的阐述本发明,下面分别对上述三个任务的具体执行流程进行
说明。
如图1所示,为系统中同步任务的执行流程图,其执行流程包括:
步骤100,同步任务由于在等待系统资源,处于阻塞状态;
步骤101,同步任务如果得到系统资源,将被触发,否则继续处于阻塞状态;
步骤102,进入同步任务后,该任务将首先检测被监控的处理任务的超时标
志;
步骤103,如果发现超时标志未被置位,说明未发生超时,将执行步骤104,
否则将执行步骤105;
步骤104,被监控的处理任务将被触发,从而被监控的处理任务后续将得到
操作系统的调度;
步骤105,监控任务被触发,从而监控任务后续将得到操作系统的调度;
步骤106,同步任务结束操作,将进入阻塞状态,继续等待下一次系统资源
的到来。
如图2所示,为系统中处理任务的执行流程图,其执行流程包括:
步骤200,被监控的处理任务由于在等待系统资源,处于阻塞状态;
步骤201,被监控的处理任务如果得到系统资源,将被触发,否则继续处于
阻塞状态;
步骤202,进入被监控的处理任务后,被监控的处理任务将首先设置超时标
志;
步骤203,被监控的处理任务将运行核心的数据处理算法;
步骤204,被监控的处理任务将清除超时标志;
步骤205,被监控的处理任务结束操作,将进入阻塞状态,继续等待下一次
系统资源的到来。
如图3所示,为系统中监控任务的执行流程图,其执行流程包括:
步骤300,监控任务由于在等待系统资源,处于阻塞状态;
步骤301,监控任务如果得到系统资源,将被触发,否则继续处于阻塞状态;
步骤302,进入监控任务后,该任务将首先保护系统关键数据;
步骤303,监控任务将删除被监控的处理任务;
步骤304,监控任务将调整数据处理算法的一些参数(这里主要是一些影响
处理时间的阈值参数),以使算法处理时间得到降低;
步骤305,监控任务结束操作,将进入阻塞状态,继续等待下一次系统资源
的到来。
可见,本发明所述方法不依赖于特定的定时器硬件资源,不依赖于额外的
硬件电路,降低了硬件成本;并且可以保存发生超时后的关键状态信息,方便
后续对任务超时的原因进行分析,为后续的处理算法优化提供关键数据;以及
可以根据超时状态,调整相关参数,并可能从根本上解决在此状态下任务超时
的问题。
总之,以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保
护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,
均应包含在本发明的保护范围之内。