一种嵌入式系统时序仿真分析的场景刻画方法与流程

文档序号:24305402发布日期:2021-03-17 00:58阅读:179来源:国知局
一种嵌入式系统时序仿真分析的场景刻画方法与流程

本发明属于嵌入式系统技术领域,具体涉及一种仿真分析的场景刻画方法。



背景技术:

嵌入式系统(embeddedsystem)与人们的关系日益密切,世界上95%微处理器都用于嵌入式系统。嵌入式系统的应用领域非常广泛,在一些对实时性要求比较高的领域,嵌入式系统时序特性是否满足设计要求将对实时系统运行产生关键影响,时序异常可能造成任务执行失败,甚至对系统造成破坏性影响。因此,保证嵌入式软件时序设计以及实现的正确性是嵌入式软件开发的重要任务。而随着嵌入式系统规模和复杂程度不断上升,使用建模与仿真的方法对嵌入式系统进行时序分析逐渐成为一种合理的选择。而在建模与仿真的过程中,由于嵌入式系统的运行过程比较复杂,需要对实时系统中的,单纯通过对中断、任务、调度算法等方面的建模很难准确的通过仿真还原出系统的原型,并且在修改模型的时候可能对仿真过程造成不可预测的改变。

为解决上述问题,使仿真过程能够准确对应真实系统,使仿真过程得到的结果有意义,采用场景刻画的方法对仿真过程进行精确控制,对中断的执行与开关做了精确的控制,以应对在真实系统中可能出现的情况。并且对任务的偏序关系以及任务中的状态机进行精细设置,并且可以在不修改原本的模型的基础上,采用外部约束的方法进行调试,简化了涉及人员的操作,提高了模型的精细程度,使得仿真的结果也更加合理,为程序设计人员提供更加精确的参考,以提高嵌入式系统的确定性。



技术实现要素:

为了克服现有技术的不足,本发明提供了一种嵌入式系统时序仿真分析的场景刻画方法,对已经抽象好的系统进行更加精细的控制。该方法提出了中断到达时间,对于周期中断可以指定其激活时间,对于非周期中断则可以设置其到达的时间、到达的次数、多次到达的平均时间、到达的时间间隔、每次中断到达后是否执行,并且还提出了中断的开关时机,允许中断在某个任务执行结束后对中断进行一定的操作。对任务则提出了任务的偏序关系设置,以及状态机下状态的循环和迁移控制。通过外部控制的方式对仿真过程进行细化,为程序设计人员提供了更大的设计空间,可以使模型更加逼近真实系统,得出的仿真结果能更好的提升系统的确定性。

本发明解决其技术问题所采用的技术方案包括以下步骤:

步骤1:建立嵌入式系统时序仿真分析的场景刻画的总体模型;

首先对场景整体进行刻画,其中包括中断到达时间、任务执行偏序关系、状态机的循环控制、状态之间迁移控制、中断开关时机控制;模型如下:

scene={interruptarrive,tasksequence,cyclecontrol,transcontrol,interruptswitch}

其中interruptarrive代表中断的到达时间,tasksequence代表任务偏序关系控制,cyclecontrol代表循环迁移控制,transcontrol状态之间的迁移控制,interruptswitch代表中断开关时机控制;

步骤2:建立周期中断以及非周期中断的到达时间控制模型;

周期中断的达到时间模型表示为:

israrrtimep=<idp,isrtypep,starttimep>

其中idp表示周期中断的唯一标识符,isrtypep表示中断的类型,starttimep代表周期中断的开始时间;在仿真过程中,周期中断在指定的到达时间到达,而不是在仿真开始时即刻到达,到达时间指在仿真开始到周期中断开始执行或者开始进行响应的时间间隔;

非周期中断的到达时间表示为:

interruptarrtimet=<idt,isrtypet,starttimet,exeornott>

其中interruptarrtimet代表非周期中断到达时间,idt代表非周期中断的唯一标识符,isrtypet代表中断的类型,,starttimet代表非周期中断的到达时间,exeornott代表每次到达是否执行;

其中非周期中断的到达时间starttimet能够设置多个值,代表中断多次到达的情况,表示如下:

starttimet={time1,time2,...,timen}

其中time1,time2,…timen,代表每个非周期中断的到达时间,多个到达时间表示非周期中断到达多次,但每次中断到达后能够通过设置exeornott操作该次中断是否执行,表示如下:

exeornott={exe1,exe2,...,exen}

其中exe1,exe2,…,exen,代表中断到达多次后每次是否执行,参数数量与starttimet一致;

步骤3:建立任务偏序关系的模型;

系统中执行的任务集合为task={t1,t2,...,tn},n≥2,集合中的任务之间存在偏序关系:

tasksequence={tn,...,tm},tn,...,tm∈task

偏序关系即预先设计任务的执行顺序,其中tn,...,tm代表系统中执行的部分任务集合,按照集合中任务排列的先后顺序代表任务之间的偏序关系;

步骤4:建立循环迁移控制模型

cyclecontrol={id,starttask,startstatus,endstatus,cyclecount}

其中id代表循环迁移控制变量的唯一标识符,starttask代表循环执行所在的任务标识符,startstatus代表循环开始的状态标识符,endstatus代表状态循环结束的状态,startstatus和endstatus为starttask中的状态机的任意状态,cyclecount代表状态循环的次数cyclecount∈{1,2,...,n};

步骤5:建立状态迁移控制进行模型:

transcontrol={id1,initialval,transtask,startstatus1,varval,tostatus,newval}

其中id1代表状态迁移控制变量的唯一标识符,initialval代表该变量的初始值initialval∈{1,2,...n},transtask代表状态迁移的任务标识符,startstatus1代表状态迁移的起始状态,varval代表状态迁移全局变量迁移之前的值varvali∈{1,2,...n},tostatus代表迁移到的状态,newval代表状态迁移后的变量值newval∈{1,2,...n};

步骤6:对中断开关进行建模:

interruptswitch={id2,switchtask,switchstart,release,controltype,isrid}

其中id2为中断开关控制变量唯一标识符,switchtask代表执行任务的识符,switchstart代表任务执行的操作,release代表任务执行后生成的任务或者作业;controltype代表对中断的操作量controltype∈{on,off},即定义中断的开操作或者关操作;isrid代表被操作的中断标识符;

步骤7:嵌入式系统时序仿真分析的场景刻画;

步骤7-1:检查嵌入式系统真实系统中断,根据真实系统的中断到达时间设置嵌入式系统仿真系统的中断到达时间;如果真实系统的中断是周期中断,则设置仿真系统周期中断的激活时间;如果真实系统的中断是非周期中断,并且该中断只到达一次,则设置仿真系统中该中断到达时间;如果真实系统的中断到达多次,则设置仿真系统中多次到达的中断的平均到达时间、到达次数、每次到达的时间间隔、并且设置每次中断到达之后是否运行该中断;

步骤7-2:对真实系统中的任务执行进行分析,根据真实系统中有偏序关系的任务集合进行抽象,在仿真系统中设置任务执行的序列;如果仿真过程对设置的偏序关系产生违背,则提示用户修改设计;

步骤7-3:对真实系统中的状态机进行分析,如果存在状态机下的数个状态循环执行数次后截止的情况,则设置仿真系统状态循环控制模块,在仿真过程中约束循环体的执行次数并且控制循环跳出;

步骤7-4:如果真实系统中的状态机在不同情况下的状态迁移的结果不同,则设置状态迁移控制进行仿真:首先设置状态迁移控制模型初值initialvalue,并且设置迁移到不同状态的条件值与执行完毕后模型值的改变值newvalue,通过检测模型值是否与设置的条件值相同来判断执行状态迁移操作,并且将模型值赋值为设置的改变值newvalue;

步骤7-5:获取真实系统中断开关的前置条件;在仿真系统中设置中断开关的时机:设置在指定任务执行之前进行开关中断或者指定任务执行之后进行开关中断或者指定任务产生了另一个任务进行开关中断;

在仿真过程中通过设置中断开关的控制变量,根据需求设置开关中断的任务switchtask,或是该任务下的作业switchstart,或是以发布了任务release作为标志,对目标中断isrid进行开关操作,通过设置controltype来控制开操作还是关操作。

本发明的有益效果是:由于采用了本发明提出了一种嵌入式系统时序仿真分析的场景刻画方法,通过场景刻画方法可以更加精细的控制仿真过程,使得设计出的仿真系统能够更加逼近真实系统,通过场景刻画方法可以对中断、任务、状态机进行细致的控制,让仿真过程更加透明,简化仿真的建模工作,并且提高模型的真实程度,提高仿真系统的泛用性以及准确性,间接的提高了嵌入式系统设计的准确性,从而提高嵌入式系统的确定性。

附图说明

图1是本发明嵌入式系统时序仿真分析场景刻画框架图。

具体实施方式

下面结合附图和实施例对本发明进一步说明。

本发明提出了实时系统仿真的运行场景模型,用于约束系统的仿真过程,提高实时系统仿真模型的精确程度,使模型能够更加贴近真实系统。由于嵌入式系统在实际运行过程中受很多因素限制,导致执行过程比较复杂,仅按照一般的中断模块以及任务模块的基本配置信息难以准确地还原真实系统的运行过程,导致仿真结果的实用性降低,因此需要一种外部控制方法对仿真过程进行微调。将系统中的所有构件统一起来作为仿真运行的一部分,并且对各个构件的执行动作做出细致的设计,使各个构件能够在特定的时间进行特定的动作,使整个仿真过程与实际系统的运行方式一致,为嵌入式系统建模仿真分析提高了准确度,进而有利于嵌入式系统的设计。

如图1所示,本发明提供一种嵌入式系统时序仿真分析的场景刻画方法,包括以下步骤:

步骤1:建立嵌入式系统时序仿真分析的场景刻画的总体模型;

首先对场景整体进行刻画,其中包括中断到达时间、任务执行偏序关系、状态机的循环控制、状态之间迁移控制、中断开关时机控制;模型如下:

scene={interruptarrive,tasksequence,cyclecontrol,transcontrol,interruptswitch}

其中interruptarrive代表中断的到达时间,tasksequence代表任务偏序关系控制,cyclecontrol代表循环迁移控制,transcontrol状态之间的迁移控制,interruptswitch代表中断开关时机控制;

步骤2:建立周期中断以及非周期中断的到达时间控制模型;

周期中断的达到时间模型表示为:

israrrtimep=<idp,isrtypep,starttimep>

其中idp表示周期中断的唯一标识符,isrtypep表示中断的类型,starttimep代表周期中断的开始时间;在仿真过程中,周期中断在指定的到达时间到达,而不是在仿真开始时即刻到达,到达时间指在仿真开始到周期中断开始执行或者开始进行响应的时间间隔;

非周期中断的到达时间表示为:

interruptarrtimet=<idt,isrtypet,starttimet,exeornott>

其中interruptarrtimet代表非周期中断到达时间,idt代表非周期中断的唯一标识符,isrtypet代表中断的类型,,starttimet代表非周期中断的到达时间,exeornott代表每次到达是否执行;

其中非周期中断的到达时间starttimet能够设置多个值,代表中断多次到达的情况,表示如下:

starttimet={time1,time2,...,timen}

其中time1,time2,…timen,代表每个非周期中断的到达时间,多个到达时间表示非周期中断到达多次,但每次中断到达后能够通过设置exeornott操作该次中断是否执行,表示如下:

exeornott={exe1,exe2,...,exen}

其中exe1,exe2,…,exen,代表中断到达多次后每次是否执行,参数数量与starttimet一致;

步骤3:建立任务偏序关系的模型;

系统中执行的任务集合为task={t1,t2,...,tn},n≥2,集合中的任务之间存在偏序关系:

tasksequence={tn,...,tm},tn,...,tm∈task

偏序关系即预先设计任务的执行顺序,其中tn,...,tm代表系统中执行的部分任务集合,按照集合中任务排列的先后顺序代表任务之间的偏序关系;

步骤4:建立循环迁移控制模型

cyclecontrol={id,starttask,startstatus,endstatus,cyclecount}

其中id代表循环迁移控制变量的唯一标识符,starttask代表循环执行所在的任务标识符,startstatus代表循环开始的状态标识符,endstatus代表状态循环结束的状态,startstatus和endstatus为starttask中的状态机的任意状态,cyclecount代表状态循环的次数cyclecount∈{1,2,...,n};

步骤5:建立状态迁移控制进行模型:

transcontrol={id1,initialval,transtask,startstatus1,varval,tostatus,newval}

其中id1代表状态迁移控制变量的唯一标识符,initialval代表该变量的初始值initialval∈{1,2,...n},transtask代表状态迁移的任务标识符,startstatus1代表状态迁移的起始状态,varval代表状态迁移全局变量迁移之前的值varvali∈{1,2,...n},tostatus代表迁移到的状态,newval代表状态迁移后的变量值newval∈{1,2,...n};

步骤6:对中断开关进行建模:

interruptswitch={id2,switchtask,switchstart,release,controltype,isrid}

其中id2为中断开关控制变量唯一标识符,switchtask代表执行任务的识符,switchstart代表任务执行的操作,release代表任务执行后生成的任务或者作业;controltype代表对中断的操作量controltype∈{on,off},即定义中断的开操作或者关操作;isrid代表被操作的中断标识符;

步骤7:嵌入式系统时序仿真分析的场景刻画;

步骤7-1:检查嵌入式系统真实系统中断,根据真实系统的中断到达时间设置嵌入式系统仿真系统的中断到达时间;如果真实系统的中断是周期中断,则设置仿真系统周期中断的激活时间;如果真实系统的中断是非周期中断,并且该中断只到达一次,则设置仿真系统中该中断到达时间;如果真实系统的中断到达多次,则设置仿真系统中多次到达的中断的平均到达时间、到达次数、每次到达的时间间隔、并且设置每次中断到达之后是否运行该中断;

步骤7-2:对真实系统中的任务执行进行分析,根据真实系统中有偏序关系的任务集合进行抽象,在仿真系统中设置任务执行的序列;如果仿真过程对设置的偏序关系产生违背,则提示用户修改设计;

步骤7-3:对真实系统中的状态机进行分析,如果存在状态机下的数个状态循环执行数次后截止的情况,则设置仿真系统状态循环控制模块,在仿真过程中约束循环体的执行次数并且控制循环跳出;

步骤7-4:如果真实系统中的状态机在不同情况下的状态迁移的结果不同,则设置状态迁移控制进行仿真:首先设置状态迁移控制模型初值initialvalue,并且设置迁移到不同状态的条件值与执行完毕后模型值的改变值newvalue,通过检测模型值是否与设置的条件值相同来判断执行状态迁移操作,并且将模型值赋值为设置的改变值newvalue;

步骤7-5:获取真实系统中断开关的前置条件;找到仿真系统中设置中断开关的时机,通常真实系统中会出现某个任务(或作业)执行之后需要打开或者关闭某个中断的情况,或者某个任务(或作业)执行之后产生了另一个任务需要打开或者关闭某个中断的情况。在仿真过程中通过设置中断开关的控制变量,根据需求设置开关中断的任务switchtask,或是该任务下的某个作业switchstart,亦或是以发布了某个任务release作为标志,对目标中断isrid进行开关操作,具体操作可以通过设置controltype来控制开操作还是关操作。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1