一种星载嵌入式实时多任务软件的可测试性设计方法

文档序号:6583401阅读:284来源:国知局
专利名称:一种星载嵌入式实时多任务软件的可测试性设计方法
技术领域
本发明属于航天软件可测试性设计技术领域,具体涉及一种软件设计方法。
背景技术
星载软件是实现卫星功能的重要部分。随着卫星功能的增加、电子线路的集成以及硬件功能的软件化,星载软件功能和规模日益扩大,而且多个功能需要实时并行处理,因此,航天领域要求将星载软件设计成实时多任务结构。星载实时多任务软件基于实时多任务操作系统,将软件设计成若干个任务的集合,通过事件驱动对多个任务进行调度,任务之间通过操作系统提供的机制进行同步、互斥和数据交换。实时多任务软件内部的逻辑复杂,同时带有不确定性。另外,在测试过程中缺少对于多任务运行过程中软件内部状态变化、任务切换、数据流转的有效监控手段,因此测试难度很大。传统的插桩打印信息的测试方法不但影响软件产品的实时性和任务切换过程,而且不能在轨使用;通过地址总线和数据总线的外接侦听分析的方法又过于复杂,需要专用的软硬件设备。

发明内容
本发明的目的在于针对星载实时多任务软件逻辑复杂且运行时存在不确定性的特点,为提高其可测试性,降低测试复杂度,同时满足在轨实时软件监测的需求,提供一种不影响系统实时性,不需要插桩测试,利用卫星遥测通道将状态流传输到地面,实时反映星载多任务软件的状态变化、任务切换和数据流转情况,可提高软件测试效率,并且可以在轨使用的星载嵌入式实时多任务软件的可测试性方法。本发明的技术方案如下—种星载嵌入式实时多任务软件的可测试性设计方法,该方法包括如下步骤1)进行需求分析;a.进行测试需求分析;b.确定测试点;
2)设置状态执行点,使状态执行点与测试点对应;3)根据状态执行点数量定义状态整数;4)分析一个遥测周期内最大可能被记录的状态执行点数量,以确定全局状态数组的元素容量,根据元素容量定义全局状态数组;5)定义互斥信号量;6)对每个状态执行点进行状态记录,生成状态流;7)将全局状态数组通过遥测打包传回地面;在上述的星载嵌入式实时多任务软件的可测试性设计方法中所述的步骤6)按如下步骤进行a)获取互斥信号量;
b)删除全局状态数组的第一个元素;c)将第二个元素的数值拷贝到第一个元素,依次拷贝,直到空出最后一个元素;d)将当前状态写入最后一个元素;e)释放互斥信号量。在上述的星载嵌入式实时多任务软件的可测试性设计方法中所述的步骤7)按如下步骤进行a)获取互斥信号量;b)拷贝全局状态数组到遥测数据包;c)将全局状态数组的每一个元素置为保留整数,以清除状态;d)释放信号量。本发明的显著效果在于通过星载软件内建状态流,将软件测试时的测试点明确地用星载软件内部地状态执行点表达,可保证测试覆盖性;不需要插桩测试,简化了测试过程,不需要另外配备测试硬件,简化了测试设备;不仅可用于地面的软件测试过程,也可用于在轨运行时进行故障诊断。


图1为本发明提供的星载嵌入式实时多任务软件的可测试方法的流程图;图2为状态记录过程流程图;图3为遥测打包过程流程图。
具体实施例方式下面结合附图及具体实施例对本发明作进一步详细说明。如图1所示,本发明提出了星载嵌入式实时多任务软件的可测试性设计方法,它是基于状态流遥测编码的可测试性设计方法,实现是在星载软件的设计阶段完成,分为需求分析阶段和编码实现阶段。其具体步骤如下1)进行需求分析在需求分析阶段完成以下两个步骤a)进行测试需求分析;对星载软件进行分析,对那些不能通过黑盒手段实施测试的过程测试项目一一列举,这些过程测试项目主要是工作时序,包括单机部件和计算机通讯的时序、软件内部数据交换的时序、事件发生后的处理时序、任务切换的时序、中断嵌套处理时序。b)确定测试覆盖点;针对上述列举的每个过程测试项目,确定若干个测试点,通过这些测试点,可正确反映时序过程。如计算机和某敏感器单机的通讯时序为计算机首先发出握手信号,敏感器在Ims之内应答表明通讯正常,3&1S后计算机发出采样信号,敏感器在Ims之内回复采样数据。则可确定计算机的测试点为“握手信号发出后”、“应答信号收到后”、“采样信号发出后”、“采样数据收到后”。以下进入编码设计阶段
2)设置状态执行点,使状态执行点与测试覆盖点对应;软件执行状态是指软件在执行过程的操作结果,包括成功、错误两种状态,也包括表达“运行至此”的中性状态,而并不指运算的具体返回值。在实时多任务软件中,任务是被操作系统调度的最小单位,任务一般用一个任务体函数来实现。状态执行点是指任务体函数运行的特征点,如任务的进入和退出、发送消息(邮件、管道数据)后、IF语句的分支、 获得信号量后等。不是所有的特征点都用于设置成状态执行点,而是选取关键的特征点来设置。每一个测试点,在星载软件中都有代码段与之对应,在此代码段,设置状态执行点。状态执行点一般为两个。例如测试点为“握手信号发出后”,则状态执行点为“握手信号发出成功后”和“握手信号发出失败后”,这两个状态执行点可确定软件工作时序是否流经此处。3)根据状态执行点数量定义状态整数;为每一个状态执行点分配一个整数,并将此整数通过宏定义来规定。状态整数与对应的状态含义用宏定义的方式联系起来,在头文件里规定。并指定不表示任何状态的保留整数。例如,步骤幻中的两个状态执行点可通过宏定义分别指定为1和2。在对每一个状态执行点分配状态整数的时,应规定不表示任何状态的保留整数,例如OxFFFF。4)分析一个遥测周期内最大可能被记录的状态执行点数量,以确定全局状态数组的元素容量,根据元素容量确定全局状态数组;全局状态数组是指内存中的一段专用地址,用于记录若干个整数,可记录的整数个数由实时遥测的周期和状态执行点设置的数量来决定,决定的原则是保证记录每遥测周期可能产生的最多数量的状态记录整数。例如若Is的遥测周期内最大可能被记录的状态执行点数量为4,则全局状态数组的元素容量可设置为4。在星载软件初始化时,全局状态数组的每个元素都被置为保留整数。5)定义互斥信号量;根据实时多任务操作系统提供的互斥信号量机制,定义一个用于对全局状态数组进行读写操作的互斥信号量。在星载软件初始化的时候创建此信号量。6)对每个状态执行点进行状态记录,生成状态流;在每个状态执行点通过状态记录语句记录状态。当软件运行到状态执行点时,预先指定的状态整数被记录在全局状态数组内。在一段时间内连续记录的状态整数,依次排列在全局状态数组内,生成状态流。如图2所示,按如下步骤进行状态记录a)获取互斥信号量;b)删除全局状态数组的第一个元素;c)将第二个元素的数值拷贝到第一个元素,依次拷贝,直到空出最后一个元素;d)将当前状态写入最后一个元素;e)释放互斥信号量。7)将执行点测试状态通过遥测打包传回地面;在整星遥测打包时,将全局状态数组拷贝到当前遥测周期的遥测数据包内,包括4 个步骤,如图3所示a)获取互斥信号量;
b)拷贝全局状态数组到遥测数据包;c)将全局状态数组的每一个元素置为保留整数,以清除状态;d)释放信号量。
权利要求
1.一种星载嵌入式实时多任务软件的可测试性设计方法,其特征在于,该方法包括如下步骤1)进行需求分析;a.进行测试需求分析;b.确定测试点;2)设置状态执行点,使状态执行点与测试点对应;3)根据状态执行点数量定义状态整数;4)分析一个遥测周期内最大可能被记录的状态执行点数量,以确定全局状态数组的元素容量,根据元素容量定义全局状态数组;5)定义互斥信号量;6)对每个状态执行点进行状态记录,生成状态流;7)将全局状态数组通过遥测打包传回地面;
2.如权利要求1所述的星载嵌入式实时多任务软件的可测试性设计方法,其特征在于所述的步骤6)按如下步骤进行a)获取互斥信号量;b)删除全局状态数组的第一个元素;c)将第二个元素的数值拷贝到第一个元素,依次拷贝,直到空出最后一个元素;d)将当前状态写入最后一个元素;e)释放互斥信号量。
3.如权利要求1或2所述的星载嵌入式实时多任务软件的可测试性设计方法,其特征在于所述的步骤7)按如下步骤进行a)获取互斥信号量;b)拷贝全局状态数组到遥测数据包;c)将全局状态数组的每一个元素置为保留整数,以清除状态;d)释放信号量。
全文摘要
本发明涉及航天软件可测试性设计技术领域,具体公开了一种星载嵌入式实时多任务软件的可测试性设计方法,通过星载软件内建状态流编码,将软件测试时的测试点明确地用星载软件内部地状态执行点表达,可保证测试覆盖性;不需要插桩测试,简化了测试过程,不需要另外配备测试硬件,简化了测试设备;不仅可用于地面的软件测试过程,也可用于在轨运行时进行故障诊断。
文档编号G06F11/36GK102163171SQ200910216990
公开日2011年8月24日 申请日期2009年12月31日 优先权日2009年12月31日
发明者余志鸿, 张志 , 张晋, 曹荣向, 杨洁, 王磊, 袁利 申请人:北京控制工程研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1