发明名称 一种基于VxWorks系统多任务机制的高实时并发测试方法
摘要 本发明涉及一种基于VxWorks系统多任务机制的高实时并发测试方法,实现步骤为:根据测试用例规划测试任务,为各个测试任务配置任务属性,所述任务属性包括任务名称、任务周期、任务优先级、开始时间、结束时间;创建任务和任务对应的信号量;注册定时器用于多任务调度,建立任务信息表。本发明能够在确定的时间内完成运算和逻辑处理以及与被测系统的交互,而且能够在同一时间段内完成多项并发的测试任务,满足了嵌入式软件的高实时性并发测试要求。
申请公布号 CN103885881A 申请公布日期 2014.06.25
申请号 CN201410133217.X 申请日期 2014.04.03
申请人 北京航空航天大学 发明人 杨顺昆;刘斌;司维
分类号 G06F11/36(2006.01)I 主分类号 G06F11/36(2006.01)I
代理机构 北京科迪生专利代理有限责任公司 11251 代理人 杨学明
主权项 一种基于VxWorks系统多任务机制的高实时并发测试方法,其特征在于实现步骤如下:(1)根据测试用例规划测试任务所述测试用例指对测试流程的描述和约束,是执行一次测试的必要的前提和准备;所述测试任务是一种测试操作的集合;(11)将测试用例分解为各种基本操作,所述基本操作是指将测试用例分解成的最小单元;(12)将步骤(11)中得到的各基本操作按照重要性以及操作的时间特性分配到多个测试任务中,所述重要性指一个基本操作是否比其他基本操作重要,如果遇到同一个时间点多个基本操作同时需要执行的情况,某一个基本操作必须强制的先于其他基本操作运行,则认为该基本操作比其他基本操作重要;所述操作的时间特性是指基本操作是否存在执行开始以及结束的时间点要求,是否存在需要按照一定周期反复执行的情况;将各基本操作分配到测试任务中的原则如下:时间特性相同的操作,合并到一个测试任务中,如果存在不同的时间特性,则将基本操作放到另一个测试任务中,如果某基本操作的重要性与测试任务中的其他基本操作不同,则将该基本操作放到另一个测试任务中;(2)为各个测试任务配置任务属性,所述任务属性包括任务名称、任务周期、任务优先级、开始时间、结束时间;(21)为测试任务命名,测试人员可以对测试任务进行手动命名,否则为测试任务分配一个不会重复的名字;(22)为测试任务设置优先级,按照步骤(12)获得的各基本操作的重要性关系为这些基本操作组成的测试任务设置优先级,如果需要,测试人员可以手动修改测试任务的优先级;针对周期执行的测试任务,为周期小的任务分配比较高的优先级;(23)对于不需要按照周期执行的测试任务,只要在特定时间点执行一次的任务,将其周期和结束时间设置为与开始时间相同,对于不需要配置开始时间和结束时间和结束时间的测试任务,将其开始时间和结束时间设置为零;(3)创建任务和任务对应的信号量(31)调用VxWorks系统函数注册任务,为每个测试任务对应创建一个任务,每个任务的优先级即为测试任务的优先级;(32)为每个任务创建一个对应的信号量用于控制任务的状态;(33)将测试任务的实现写入对应任务的入口函数,在实现测试任务的代码块之前加入获取信号量语句,并且使用死循环语句使整个代码块循环执行,以便保证只要能够获取信号量,测试任务的实现代码不停地循环执行;由于无法获取信号量,所有任务创建之后处于挂起态;(4)注册定时器用于多任务调度,定时器的周期按照各任务的最大公约数设置;如果存在任务配置了开始时间和结束时间,则将开始时间和结束时间看作周期加入计算最大公约数的集合中,以便VxWorks系统能够计算出最精确的定时器周期;将VxWorks系统的每秒tick数设置为1s/定时器周期以避免浪费多余的CPU资源;所述tick为VxWorks系统内核调度的最小时间片;(5)建立任务信息表,将所有任务的任务名称,任务优先级,任务周期,开始时间,结束时间以及对应的信号量信息记录到表中;其中,任务周期、开始时间和结束时间不直接记录时间,而是记录tick数;然后把任务信息表中的所有任务进行排序,将所有任务按照任务周期从小到大进行排序;最后再将所有任务周期相同的任务按照优先级从高到低排序;(6)测试开始运行后,定时器自动按照各任务执行任务周期的最大公约数运转,在定时器的回调函数中,维护一个全局的tick计数器,每次进入回调函数将计数器加一;遍历任务信息表,判断所有任务是否到了应该执行的时刻:如果全局的tick计数大于等于任务的开始tick数并且小于等于任务的结束tick数同时全局的tick计数对任务周期tick数取余为0,则释放该任务运行所需的信号量,任务开始执行。
地址 100191 北京市海淀区学院路37号