用于影响控制程序的方法和建模系统的制作方法_2

文档序号:9249096阅读:来源:国知局
为此,在给函数指派函数名之前,执行该函数名与控制程序的所有其他函数的对比,并根据按本发明的方法确定一致性程度,并且只有当对于所有其他函数一致性程度没有超过预先规定的或能预先规定的阈值时,才自动进行向该函数指派函数名。
[0019]在本发明的一个有利的实施形式中,第二分配表还包含第一函数与由相应的第一函数调用的其他第一函数的对应关系,特别是这样的对应关系关系,第二分配表将一个函数树分配给控制程序的第一函数的至少一部分,所述函数树列出了由第一函数出发调用的函数,由被调用的函数出发调用的函数,等等。当由第一函数出发直接或间接调用的函数的至少一部分根据按本发明的方法已经被识别,则可以以这种方式给第一分配表中仍未识别的函数调用分配函数树,并执行与在第二分配表中列出的一个或多个函数树的比较。附加于根据本发明的对分配给函数调用的变量访问的比较,所述比较可以作为用于识别函数调用的另一个判定标准使用。特别是在该实施形式中,不包含变量访问的函数对于该方法也是可以访问的,例如,因为所述函数的代码只由函数调用组成。
[0020]在一个改进方案中,通过建模系统选出所述第一函数中的一个第一函数并使所选出的第一函数的函数调用失效和/或用第二函数替代该第一函数。特别是通过建模系统和影响装置,利用一个第二函数或多个第二函数的程序代码覆盖所选出的一个第一函数或所选出的多个第一函数的程序代码。
[0021]在一个实施形式中,建模系统具有第二存储器单元,其中第二函数存储在第二存储器单元中并且对于在要由第二函数替代的第一函数至少使变量访问失效和/或事后覆盖变量。
[0022]第二分配表可以设计成ASAP2文件(也称为ASAM MCD-2MC或A2L文件)。要指出的是,ASAP2格式是一种在汽车领域中用于对控制程序进行技术描述的标准化格式。ASAP2文件特别是可以包含带有相配的存储器地址的变量的清单、变量与各个函数的对应关系以及函数调用树与各个函数的对应关系。
【附图说明】
[0023]下面参考附图详细说明本发明。这里相同的部分用相同的附图标记标注。所示出的实施形式是非常示意性的,就是说,间距以及横向和纵向延伸不是按比例的,并且如果没有另行说明,彼此间不具有可导出的几何关系。其中:
[0024]图1示出用于影响控制器的控制程序的布置系统的视图;
[0025]图2示出存储在第一存储器中的控制程序的结构的非常简化的视图;
[0026]图3示出控制程序的细节化的视图和根据本发明的方法的一个实施形式;
[0027]图4示出说明AP2格式的子程序的细节化的视图。
【具体实施方式】
[0028]图1的附图示出用于影响控制器ECU的控制程序STP的布置系统的视图,所述控制程序在图2中示出。控制器E⑶具有第一存储器SPl和处理器C,所述处理器具有与该处理器连接的接口 TRDE。控制器E⑶通过线路10与建模系统MODSYS连接,所述建模系统MODSYS在控制器E⑶的外部构成。建模系统MODSYS包括显示单元KPC和影响装置GSI。显示单元KPC通过线路20与影响装置GSI连接。当然,控制程序STP作为二进制代码或作为十六进制代码存在。
[0029]在图2的附图中示出存储在存储器SPl中的控制程序STP的结构。控制程序STP具有多个第一函数F1A、F1B、F1C、......、F1N。要指出的是,第一函数F1A、F1B、F1C、......、
FlN通常以子程序的形式存在。
[0030]在图3的附图中示出控制程序STP的结构的细化视图和根据本发明的方法的一个实施形式。控制程序STP包括多个子程序或分配给子程序的第一函数F1A、F1B、
F1C、......、F1N,在附图中总体用fcn表示。每个第一函数F1A、F1B、F1C、......、FlN
以第一指令开始并且在相应的第一函数F1A、F1B、FlC........FlN的末尾处具有返回指令return。这里可以理解,在运行或执行控制程序STP时,在相应的第一函数F1A、F1B、FlC........FlN的调用处存在转移地址,并且所述转移地址指向与函数调用相关联的子程序的存储器地址。在转移指令所指向的所述存储器地址处存放有第一指令begin fcn。子程序作为二进制的程序代码的序列存在。在程序代码序列的末尾处分别存在返回指令return连同与返回指令return相配设的返回地址。
[0031]此外,各子程序或所示的第一函数F1A、F1B、FlC........FlN分别包括第一数量的变量访问。这里,在当前情况下示出两种类型的变量访问,实现写访问的写指令store和实现读访问的读指令load,就是说给每个变量访问分配一个存储器地址。就是说写指令store和读指令load指向存储器的确定的存储器地址。因此,利用写指令store和读指令load能够在确定的存储器单元中写入变量的值或由确定的存储器单元读出变量的值。
[0032]此外还示出具有第一表TABl和第二表TAB2的第一分配表ZUORDl和第二分配表ZU0RD2。表TABl和TAB2代表第一分配表ZU0RD1的两个不同的处理阶段。第一表TABl代表ZU0RD1在一个方法步骤结束后的阶段,第二表TAB2代表在后面的另一个方法步骤结束后完成的第一分配表ZU0RD1。第二分配表ZU0RD2是预先规定的表并且特别是包含控制程序STP的变量的清单连同所属的存储器地址以及这些变量与控制程序STP的各个函数的对应关系。在一个有利的实施形式中,第二表设计成控制器描述文件的形式,特别是ASAP2文件的形式。由检查控制程序STP得到的结果存储在第一分配表ZU0RD1中并与第二分配表ZU0RD2的内容相比较。
[0033]在第一方法步骤中,检查控制程序STP的程序代码,以发现函数调用的出现,并确定与函数调用相关联的转移地址和返回地址以及与相应的第一函数F1A、F1B、F1C........FlN相关联的变量连同变量相应的存储器地址。为此,将所有在控制程序的序列中在所述程序调用之后,但在分配给程序调用的返回指令之前进行的变量访问分配给一个所确定的函数调用。这种对于本领域技术也作为程序句法剖析已知的分析的结果是在如图3中所示的对控制程序STP的描述。在理想情况下,就是说在无错误地执行分析之后,所述描述包含所有第一函数F1A、F1B、F1C........FlN的清单连同分别所属的函数地址(即,分别属于第一函数的程序指令的存储器地址)、对于每个函数所属返回指令的存储器地址以及由所述函数出发对变量进行的写访问和读访问的清单连同变量相应的存储器地址。
[0034]在第二方法步骤中,通过与第二分配表ZU0RD2的第一次比较给变量的存储器地址分配变量的名称并且将所述第一次比较的结果记录到第一分配表ZU0RD1中。结果得到临时的分配表TABl,该分配表给在该时刻尚未识别的程序函数分别分配一个变量签名。
[0035]在所述方法的一个实施形式中,在检查程序代码时,不仅给一个确定的函数分配直接由该函数出发进行的变量访问,而且还分配由该函数的子函数出发进行的变量访问,其中,两种变量访问的类型,即由该确定的函数出发进行的变量访问和由该确定的函数的任意子函数出发进行的变量访问同等重要地记录到临时的分配表TABl中。给定函数的子函数根据本发明是指控制程序的这样的函数,该函数直接或间接地按照程序调用的顺序由所述给定的函数出发被调用。所述方法的该实施形式可能是有利的。特别是如果给定的第二分配表ZU0RD2具有这样的特性,即第二分配表将从子函数出发进行的变量访问分配所述给定的函数,则必须相应地执行第一分配表ZU0RD1中的分配,由此该方法能可靠地工作。
[0036]在第三方法步骤中,将来自第一表TABl的函数的至少一部分与第二分配表ZU0RD2中的函数描述进行比较,并以这种方式给第一函数?认、?川、?1(:、......、FlN的至少一部分分别分配一个函数名,优选分别分配与变量签名具有最大一致性的函数的名称。例如在附图中,将两个函数名fcn_label_l和fcn_label_3根据其变量签名分配给其所属的第一函数。结果得到完成的分配表TAB2。接下来,对于所有的分配了函数名的函数,使用者获知名称和存储器地址,这使得使用者能够对这些函数进行改变。
[0037]在未示出的第四方法步骤中,至少将其中一个变量的第一值用第二值替代,例如这样替代,使得给一个构造成用于控制执行器的函数FlX分配函数名,并且根据以这种方式获得的地址信息使函数FlX失效并通过第二函数F2X来替代,其中F2X构造成用于控制相同的执行器,但相对于FlX包括不同的用于描述一个通过其值影响执行器行为的变量的规则。
[0038]在图4中示出示例性描述按照ASAP2格式的子程序“enginejdle_rev”的
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1