用于监控错误的方法和用于监控错误的数据处理装置与流程

文档序号:11772607阅读:209来源:国知局
用于监控错误的方法和用于监控错误的数据处理装置与流程

本发明涉及一种用于在计算机上的模拟环境中测试控制装置的控制程序的方法和一种用于在计算机上的模拟环境中测试控制装置的控制程序时监控错误的数据处理装置。



背景技术:

由j.mauss发表在proceedingszuembeddedrealtimesoftwareandsystems(erts)2014上的“chipsimulationusedtorunautomotivesoftwareonpc”已知一种用于在个人电脑上测试控制装置软件的工具,其中,在仿真处理器上执行所述控制装置软件并模拟环境数据。为了仅检查该控制装置软件的部分,使用者可以在规范文件中给出选择的待执行函数。该控制装置软件的执行可以借助调试程序逐步地实施,以确定所述规范文件的错误。



技术实现要素:

在此背景下,本发明的任务在于给出一种改进现有技术的方法。

所述任务通过具有权利要求1的特征的一种用于在计算机上的模拟环境中测试控制装置的控制程序的方法来解决。本发明的有利方案是从属权利要求的主题。

按照本发明的主题提供一种用于在计算机上的模拟环境中测试控制装置的控制程序的方法。在计算机上生成所述模拟环境。在仿真器上执行所述控制程序,其中,仿真器以处理器和存储区模拟控制装置的至少一部分。该仿真器在计算机上执行并且具有用于输入和输出数据的接口,其中,模拟环境中的环境值通过所述接口被写入到仿真存储区中。所述控制程序具有程序变量,其中,在执行控制程序期间该控制程序将变量值赋值给至少一些程序变量,并且所述变量值通过访问仿真存储区的存储器地址确定。

该仿真器给控制程序的每个程序变量配置一个扩展值域,其中,赋值给程序变量的变量值存储在所述扩展值域中,并且该仿真器将这些程序变量标记为错误的或无错误的。

借助将无错误的程序变量配置给第一类别并且将错误的程序变量配置给第二类别进行所述标记,其中,所述第二类别的每个程序变量的扩展值域都具有数据字段。

作为替代形式,借助存储在扩展值域中的错误字段进行所述标记,其中,将预先确定的数字或非数字的第一有效值赋值给无错误程序变量的错误字段,并且将预先确定的数字或非数字的第一错误值赋值给错误程序变量的错误字段,并且所述第一有效值不同于所述第一错误值,并且每个程序变量的扩展值域都具有数据字段。

在确定变量值时进行所述标记。如果通过仿真处理器访问在仿真存储区中存在的且写入的第一存储器地址或访问第二程序变量以便确定第一程序变量的变量值,所述第二程序变量配置给第一类别或包括具有第一有效值的错误字段,则将该程序变量标记为无错误的并且将确定的变量值存储在扩展值域中。如果在确定第一程序变量的变量值的情况下,通过仿真处理器访问在仿真存储区中不存在的或未写入的第二存储器地址或访问第三程序变量,所述第三程序变量配置给第二类别或包括具有第一错误值的错误字段,则将该第一程序变量标记为错误的,将预先确定的数字或非数字的第二错误值赋值给第一程序变量的变量值,并且将不存在的或未写入的第二存储器地址或第三程序变量的数据字段的所有记录的拷贝写入到第一程序变量的数据字段中。

要指出,在当前情况中描述所谓的离线模拟,在所述离线模拟中在计算机(例如个人电脑)上的模拟环境中测试调控软件。在离线模拟中通常不需要实时模拟。

仿真器能够实现直接用机器语言执行控制程序,其方式为,仿真该控制装置程序。在此,程序称为仿真器,该仿真器模拟控制计算机,并且由此能够实现在通过仿真器模拟的控制计算机上执行控制程序。

访问所谓的控制装置描述文件,以便模拟例如can控制器、ad/da转换器等控制装置的芯片上的功能性或控制装置的其他内部功能性。所谓的控制装置描述文件包含所有函数和变量名及其所属地址的列表,并且可以例如是所谓的a21文件。为了理解本发明应注意的是,因为在仿真处理器的仿真器上执行控制程序,所以该控制程序在按照本发明的方法的范围中以机器语言存在。与此对应地,该控制程序的变量通过存储器地址代表,并且变量值是存储在仿真存储器的配置给变量的存储单元的存储器地址中的变量的值。就技术方面而言,不需要使用术语“变量”来描述用机器语言存储的程序。在本发明的描述中仅使用该术语,以便说明本发明的主题。

因而,本发明在技术上也可等同地如下表达:将扩展值域如上所述赋值给存储有变量值的存储器地址;可将被扩展值域赋值的存储器地址如上所述标记为错误的或无错误的;在尝试读入仿真存储区中不存在的或未写入的第二存储器地址的变量值时,将所述第二存储器地址标记为错误的;并且在尝试访问标记为错误的第三存储器地址时,为了在第一存储器地址中存储一个新的变量值,则将所述第一存储器地址标记为错误的。

随着模拟环境的生成,使用者产生为了执行控制程序仿真器所需的参数。称为环境值的参数在此不仅构成控制装置的变量值,而且构成外部传感器或类似装置的值,并且例如通过旁路方法可以提供给控制程序。

扩展值域能够实现管理除变量的实际值以外的其他信息,例如关于错误或补充函数的信息。扩展值域例如包括存储器的确定范围,该确定范围配置给程序变量并且在所述确定范围中除程序变量的变量值以外还存储其他信息。

该扩展值域的记录数量和类型可以相同地设计用于所有的程序变量,其中,该扩展值域除了变量值以外具有用于标记错误的错误字段以及用于记录错误传播的数据字段。在错误程序变量的情况中将数字或非数字的第一错误值赋值给错误字段。如果该程序变量是无错误的,则将数字的或非数字的第一有效值赋值给错误字段。

所述错误字段用于将程序变量标记为错误的或无错误的。在存在错误时配置给错误字段的非数字或数字的第一错误值可以因此是任意值,然而所述任意值必须是单义的,并且必须区别于赋值给不存在错误的错误字段的数字或非数字的第一有效值。例如,在不存在错误时将值0作为第一有效值赋值给所述错误字段,该第一有效值在出现错误时更改为1作为第一错误值。

如果通过将程序变量配置给不同的类别进行错误标记,则程序变量的扩展值域的记录数量和类型取决于配置给相应程序变量的类别。

类别可以例如是面向对象程序设计范围中的类。配置给属性和方法的变量类型称为类。因此按照本发明的值域在面向对象的类的意义上可以包括属性和方法。所述扩展值域也可以由一个或多个并行于变量管理和变量处理使用的列表以及变量本身组成,其中,例如每个类别提供一个列表并且待在列表中存储的信息由类别预先给定。

在通过配置给不同类别的错误标记的情况中,错误的并且由此属于第二类别的程序变量的扩展值域除变量值以外具有用于记录错误传播的数据字段。无错误的程序变量属于第一类别。扩展值域必须仅具有变量值,不需要数据字段。

为了实现可以借助变量值本身识别错误的程序变量,例如第二错误值是非数字的并且在控制程序的范围中是单义的值。借助错误字段的值或借助程序变量的类别可以可靠地识别错误的程序变量。

在访问错误的存储器地址或错误的变量时赋值给变量值的第二错误值可以是任意的非数字错误值,例如“error”,该错误值单义地区别于有效的、典型数字的变量值。容易理解的是,基于记录和错误标记,借助类别配置或借助错误字段在错误访问的情况下也可以将数字的错误值(例如0)配置给变量值。

按照本发明的方法的优点是:错误的出现不会导致中断控制程序的运行。由于仿真器也在出现错误的情况下完全执行控制程序,因此测试控制程序的部分是可能的。如果应该测试控制程序的单个功能性,则必须仅在模拟环境中模拟所有对于待测试的功能性必要的环境值并且通过仿真器的接口写入到仿真存储区中,因为用于其他未测试的功能性的环境值的错误不会导致中断控制程序。

一个特别的优点在于,关于原始错误源的信息被继承。因此,在控制程序完全运行后对于每个程序变量直接借助记录在数据字段中的地址读取错误的来源。由此,关于感兴趣的程序变量有针对性地提供关于生成的模拟的错误或不完全性的信息。

在一种改进方案中,在确定第一程序变量的变量值的情况下,在访问配置给第二类别的程序变量或访问包括具有第一错误值的错误字段的第二程序变量时,第二程序变量的标识写入到第一程序变量的数据字段中。由此记录错误的整个路径或错误传播。每个单义标识程序变量的数值(例如程序变量的名或程序变量的存储器地址)适合作为程序变量的标识。

按照另一种改进方案,对于如下情况:配置给第二类别的或包括具有第一错误值的错误字段的第一程序变量的控制程序具有预先给定的值,则将所述第一程序变量标记为无错误的,所述预先给定的值作为变量值存储在该第一程序变量的扩展值域中,其中,在借助配置给第一类别或配置给第二类别进行标记时数据字段从扩展值域中删除,并且在借助错误字段进行标记时所有数据字段的记录删除。由此可以破坏错误传播。基于有效值的赋值,该程序变量再次标记为有效的或继续进行。

结合错误传播的记录开启如下可能性:不是必须在来源处消除错误,例如通过仿真需要的存储器地址消除错误,而是通过将有效的值直接赋值给之后接着的程序变量消除错误。

容易理解的是,对于借助类别配置进行标记的情况,无错误的以及因此配置给第一类别的程序变量不必具有数据字段。然而也可能的是,在配置给第一类别的程序变量的值域中设置数据字段,其中所述数据字段没有记录。如果配置给第一类别的程序变量也具有数据字段,则在程序变量从第二类别类别转换成第一类别的情况下不是整个数据字段从扩展值域中删除,而是仅清除数据字段的所有记录或不传输数据字段的记录。

在另一种实施形式中,控制程序具有至少两个程序块,其中,所述程序块按照控制程序的条件分支规则与条件有关地替代地执行。如果所述条件与配置给第二类别的或包括具有第一错误值的第一程序变量的错误字段有关,即与错误的第一程序变量有关,则执行所有程序块。通过执行控制程序的所有替代的规则,在执行对于所有可能的程序变量的控制程序后给使用者提供信息。

按照一种改进方案,将每个其他在执行程序块时被赋值的程序变量标记为错误的,其中,第一程序变量的数据字段的所有记录的拷贝分别写入到其他程序变量的数据字段中,并且将该第二错误值分别赋值给其他程序变量的变量值。由此,在执行该控制程序后可以可靠且简单地标识所有与条件分支规则有关的程序变量。

按照一种替代的改进方案,在执行用于每个其他程序变量的程序块后对比赋值的变量值,控制程序不仅在执行第一程序块期间而且在执行其他程序块期间将变量值赋值给所述其他程序变量。在赋值的变量值之间有偏差的情况下,其他程序变量标记为错误的,将第二错误值赋值给其他程序变量的变量值,并且将第一程序变量的数据字段的所有记录的拷贝分别写入到其他程序变量的数据字段中。由此确保了仅这样的程序变量标记为错误的并且提供关于错误来源的信息,所述信息的变量值实际上与分支规则有关。

如果例如仅在形式上涉及条件分支,例如如果赋值给在不同程序块中的程序变量的变量值是相同的,则也不标记或继承错误。如果关于一个或多个程序变量仅涉及单纯形式上的条件分支,例如对于单个变量a,而另外的程序变量的变量值与条件分支规则有关,则所述一个或多个程序变量(例如变量a)标记为无错误的,而其他程序变量标记为错误的。

另外,本发明提供一种用于在计算机上的模拟环境中测试控制装置的控制程序时监控错误的数据处理装置,其中,该数据处理装置包括仿真器和模拟环境单元,所述模拟环境在所述模拟环境单元上产生,所述模拟环境单元能够在该数据处理装置上执行,所述控制程序能够由仿真器执行,所述仿真器能够在该数据处理装置上执行,其中,该仿真器具有仿真处理器和仿真存储区并且以该处理器和存储区模拟控制装置的至少一部分,并且该仿真器还具有用于输入和输出数据的接口,该数据处理装置设置用于将所述模拟环境中的环境值通过所述接口写入到仿真存储区中,所述控制程序具有程序变量,在执行控制程序期间所述控制程序将变量值赋值给至少一些程序变量,所述变量值能够通过访问仿真存储区的存储器地址确定,其特征在于,所述仿真器将扩展值域配置给控制程序的每个程序变量,将赋值给程序变量的变量值存储在所述扩展值域中,所述仿真器将各程序变量标记为错误的或无错误的,借助将无错误的程序变量配置给第一类别以及将错误的程序变量配置给第二类别进行所述标记,其中,所述第二类别的每个程序变量的扩展值域具有数据字段,或者借助在扩展值域中存储的错误字段进行所述标记,其中,将预先确定的数字或非数字的第一有效值赋值给无错误的程序变量的错误字段并且将预先确定的数字或非数字的第一错误值赋值给错误的程序变量的错误字段,并且每个程序变量的扩展值域都具有数据字段,在确定变量值时进行所述标记,其中,在确定第一程序变量的变量值时,在仿真处理器访问在仿真存储区中存在的且写入的第一存储器地址或者访问配置给所述第一类别或包括具有第一有效值的错误字段的第二程序变量时,将所述程序变量标记为无错误的,并且将确定的变量值存储在扩展值域中,其中,在确定第一程序变量的变量值时,在仿真处理器访问在仿真存储区中不存在的或未写入的第二存储器地址或访问配置给所述第二类别或包括具有第一错误值的错误字段的第三程序变量时,将所述第一程序变量标记为错误的,将预先确定的数字或非数字的第二错误值赋值给第一程序变量的变量值,以及将所述不存在的或未写入的第二存储器地址或第三程序变量的数据字段的所有记录的拷贝写入到第一程序变量的数据字段中。

按照一种改进方案,在确定第一程序变量的变量值时,通过访问配置给所述第二类别的或包括具有第一错误值的错误字段的第二程序变量,将第二程序变量的标识写入到第一程序变量的数据字段中。

按照一种改进方案,在所述控制程序将预先给定的值赋值给配置给所述第二类别的或包括具有第一错误值的错误字段的第一程序变量的情况下,将所述第一程序变量标记为无错误的,将所述预先给定的值作为变量值存储在该程序变量的扩展值域中,其中,在借助配置给所述第一类别或第二类别进行标记时将所述数据字段从扩展值域中删除,并且其中,在借助错误字段进行标记时删除所述数据字段的所有记录。

按照一种改进方案,对于如下情况能够执行所有程序块,即:所述控制程序具有至少两个程序块,其中,所述程序块能够按照控制程序的条件分支规则与条件有关地替代地执行,并且所述条件与配置给第二类别的或包括具有第一错误值的错误字段的第一程序变量有关。

按照一种改进方案,将在执行程序块时被赋值的每个其他程序变量标记为错误的,其中,将第一程序变量的数据字段的所有记录的拷贝分别写入到所述其他程序变量的数据字段中,并且将第二错误值相应地赋值给所述其他程序变量的变量值。

按照一种改进方案,在执行用于每个其他程序变量的程序块后能够对比所赋值的变量值,控制程序不仅在执行第一程序块期间而且在执行其他程序块期间将变量值赋值给所述每个其他程序变量,其中,在所赋值的变量值之间有偏差的情况下,将所述其他程序变量标记为错误的,将第二错误值赋值给所述其他程序变量的变量值,并且将第一程序变量的数据字段的所有记录的拷贝写入到所述其他程序变量的数据字段中。

按照一种改进方案,该数据处理装置是计算机,在该计算机上能够执行如上所述的按照本发明的方法。

附图说明

下面参考附图进一步阐释本发明。在此,同样的部件标以相同的附图标记。所示出的实施形式是极简化的。其中:

图1示出仿真器与模拟环境的示意图,

图2示出程序变量的第一实施形式的示意图,以及

图3示出程序变量的第二实施形式的示意图。

具体实施方式

图1示出第一实施形式的视图,其中,用于控制装置(未示出)的以机器语言存在的控制程序10由计算机30上的仿真器20执行,其方式为:所述仿真器模拟控制装置的处理器以及控制装置的存储区24。仿真器20具有接口22用于输入和输出数据。

为了测试控制程序10的一个或多个函数f1、f2、f3,在计算机30上的模拟环境40的范围内产生所述一个或多个函数f1、f2、f3所需的所有环境值42。所述环境值42可供仿真器20使用,其方式为:借助用于输入和输出数据的接口22将环境值42写入到仿真存储区24中。环境值42不仅可以代表控制装置的变量,例如通过芯片上的组件提供的功能性,也可以代表从外部(例如从外部传感器)传输给控制装置的数据。

在执行控制程序10期间,将变量值赋值给程序变量。为此,访问仿真存储区24中的存储器地址或者访问至少一个另外的程序变量。如果建立的模拟环境或生成的环境值是不完整的,那么由控制程序询问的在仿真存储区中的存储器地址可能缺少或不能写入。所述两种情况导致程序变量的变量值错误。相应地,访问错误的程序变量导致结果错误。

按照本发明,将扩展值域50、60、70赋值给用于记录错误的程序变量。图2在左侧示出第一程序变量的示意图。示出的第一程序变量是无错误的并且因此由仿真器20配置给第一类别k1。所述第一程序变量具有值域50,其中,该扩展值域50具有变量值52。

在图2右侧示出第二程序变量的示意图,所述第二程序变量是错误的并且因此属于第二类别k2。第一程序变量的变量值52具有任意值,而第二错误值error总是配属给第二程序变量的变量值62。存储器地址存储在第二程序变量的数据字段64中。所述存储器地址对应于在执行控制程序10过程中为了给第二程序变量赋值而询问的存储器地址,该存储器地址要么在仿真存储区24中不存在要么未写入。

按照图2中示出的第一实施例,为错误的和无错误的程序变量设置不同的类别k1、k2。如果由于访问仿真存储区的不存在的或未写入的存储器地址致使出现错误,则将该程序变量配置给第二类别k2。另外,将第二错误值error赋值给变量值62并且将该存储器地址写入到数据字段64中。如果在访问另外的错误程序变量时出现错误,则该第二程序变量同样配置给第二类别k2,将第二错误值error赋给变量值62,并且附加地将所有在所述另外的错误程序变量的数据字段中标注的存储器地址拷贝到第二程序变量的数据字段64中。

在图3中示出第二实施例。在此,所有程序变量具有相同设计的扩展值域70,所述值域除变量值72和数据字段74外还包括错误字段76。将第一有效值(例如0)配设给无错误程序变量的错误字段76。如果出现错误,按照第二种实施例不进行类别转换,而是将第一错误值(例如1)赋值给错误字段。

通过错误继承,即将存储器地址写入或拷贝到数据字段64、74中,在运行后提供所有需要的关于出现的错误的信息。因此可能的是,也仅测试控制程序10的第一函数f1,其方式是:仅在模拟环境中产生对于第一函数f1相关的环境值并且借助接口22将其提供给仿真器。其结果是其他不感兴趣的函数f2、f3的输出值是错误的。

借助作为第一函数f1的输出值提供的程序变量的变量值、类别和/或错误字段,确定是否在执行第一函数f1时出现错误。程序变量的数据字段64、74提供在哪个位置出现错误并且错误如何传播的信息。

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