论文部分内容阅读
嵌入式软件在交通运输、航空工业、工业生产等领域以及人们的日常生活中有着广泛的应用。在航空、工业控制中,嵌入式系统一旦出现运行失效,极有可能导致灾难性的后果。因此对其进行严格的可靠性测试,对保证整个软件顺利运行起着不可或缺的作用。嵌入式软件实时可预测是软件可靠性测试的重要内容。软件的实时性指标和软件的最坏情况执行时间WCET(worst-case execution time)有着重要联系。错误的WCET估值是绝大多数嵌入式软件运行达不到实时性要求的重要原因,因此对程序WCET值的研究也成为了国内外研究的热点之一。对WCET值的研究主要分为动态测试与静态预估两个领域,本文围绕WCET的测试展开研究,主要工作如下:给出了一种基于关联进程通信的WCET动态测试方法。该方法首先通过抽象解释(Abstract interpretation)对程序进行语义分析,寻找程序状态不变节点,通过对状态不变节点执行路径进行分析,产生类似于CFG(程序流图)的节点流图。然后通过本文给出的APC算法,测试节点流图中每个节点的WCET值。最后利用测试值组成的有向无环图,得到整段程序运行的WCET值。本文给出了两种APC算法:算法1是利用管道技术测试节点WCET值的高密度算法;算法2主要测试存在函数调用关系的节点的WCET值。该测试方法对Malardalen所有基准程序进行反复测试,测试结果表明本文给出的测试方法精确有效,且测试误差在理论分析误差之内。使用本文方法对程序任务切换时间进行测试时,测试结果与LMbench测试工具的测试结果差距仅3μs,但本文给出的测试方法具有更强的针对性,支持对各类程序片进行上下文切换时间的测试。给出一种基于MPA算法和静态预估分析技术的WCET分析框架,该框架首先通过MPA算法对程序的程序流进行分析,获得最小树约束。然后通过象征性循环上界约束分析函数中的内部循环变量,结合最小树约束得到程序的WCET表达式。最后使用静态预估分析方法对每一个基本块的底层指令周期进行绝对估值,将底层指令周期代入WCET表达式计算出程序最终的WCET值。本文使用给出的新框架与原静态预估可视化框架对给出的用例程序进行了详细的测试,实验证明本文提出的新框架与原静态预估框架实验差距在2%之内,进一步的测试表明两框架的误差与程序规模反相关,且本文提出新框架相比于原框架时间复杂度更小,自动化程度更高。