CN1879067A - 匹配用于控制工作过程的函数的方法和装置 - Google Patents
匹配用于控制工作过程的函数的方法和装置 Download PDFInfo
- Publication number
- CN1879067A CN1879067A CNA2004800328222A CN200480032822A CN1879067A CN 1879067 A CN1879067 A CN 1879067A CN A2004800328222 A CNA2004800328222 A CN A2004800328222A CN 200480032822 A CN200480032822 A CN 200480032822A CN 1879067 A CN1879067 A CN 1879067A
- Authority
- CN
- China
- Prior art keywords
- function
- address information
- instruction
- program
- variable
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000006870 function Effects 0.000 title claims abstract description 130
- 238000000034 method Methods 0.000 title claims abstract description 112
- 230000008569 process Effects 0.000 claims description 20
- 230000005055 memory storage Effects 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 9
- 230000018109 developmental process Effects 0.000 description 12
- 238000011161 development Methods 0.000 description 8
- 230000008859 change Effects 0.000 description 7
- 230000008878 coupling Effects 0.000 description 7
- 238000010168 coupling process Methods 0.000 description 7
- 238000005859 coupling reaction Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 7
- 230000004048 modification Effects 0.000 description 7
- 238000012986 modification Methods 0.000 description 7
- 239000004615 ingredient Substances 0.000 description 3
- 238000002266 amputation Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000002349 favourable effect Effects 0.000 description 2
- 238000011835 investigation Methods 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000009933 burial Methods 0.000 description 1
- 230000009849 deactivation Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B15/00—Systems controlled by a computer
- G05B15/02—Systems controlled by a computer electric
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Automation & Control Theory (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
- Programmable Controllers (AREA)
Abstract
匹配用于控制工作过程的函数的方法和装置,其中所述函数动用至少一个程序的至少一个全局变量用于控制,并且给该全局变量分配地址信息,其中所述全局变量的这个地址信息由至少一个加载指令从存储装置中被加载,其特征在于,所述加载指令的全局变量地址信息被替换。
Description
现有技术
本发明源于根据独立权利要求的前序部分的匹配用于控制工作过程的函数的一种方法和一种装置,尤其是在汽车中。同样地,本发明源于具有权利要求的前序部分特征的一种相应的控制器以及一种相应的用于函数开发且具有与其相关联的计算机程序的计算机和相应的计算机程序产品。
在控制器软件的函数开发中,尤其是在用于发动机控制、刹车控制、传动控制等的汽车控制器上,旁路(Bypass)应用是一种快速原型设计方法,以便开发和测试新的控制器函数。但是,在所有另外的诸如在自动化领域和机床领域内的控制器应用中,这种函数开发也是可能的。
作为开发方法,为此使用外部控制器旁路(如DE 101 06 504 A1所示)以及内部控制器旁路(如DE 102 286 10 A1所公开的)的两种应用。
在此,DE 101 06 504 A1涉及用于仿真控制器或调节器(特别是汽车控制器或调节器)的控制和/或调节函数的一种方法和一种仿真装置。为了进行仿真,所述函数被转移到外部的仿真计算机中,其中在开始仿真之前经由仿真计算机的软件接口和控制/调节器的软件接口建立数据连接。为了显著地加速控制/调节器的新的控制/调节函数的开发和编程,建议在开始仿真之前在不改变软件的情况下配置用于仿真不同控制/调节函数的软件接口。
DE 102 286 10 A1在其一侧示出用于借助至少一个旁路函数来检验控制程序的一种方法和一种装置,其中控制程序与至少一个旁路函数一起在电计算单元上被执行。通过动态链接到预定的接口来实现旁路函数的耦合。
不依赖于所提及的这两种方法和装置,为了应用性而需要控制器软件中的嵌接(Eingriffe)。该嵌接利用概念“旁路自由段”或“软件自由段(Software-Freischnitt)”来表示。旁路自由段或软件自由段精确地描述了软件函数中的位置,在所述位置上控制器变量不是通过软件程序而是经由弯路、例如经由一个旁路软件函数被写入。软件自由段是很个别的并且在正常情况下不是控制器软件程序的组成部分,因为为此消耗存储资源。
如果函数开发者需要具有软件自由段的控制器程序,那么在开发部门指派之后才将这些软件自由段装入程序状态(Programmstand)。软件开发对此以人工方式更改相应函数的源代码,并且通过编译和连接过程创建新的控制器程序,所述控制器程序显性地被用于原型设计。
如现有技术中所实施的方法或装置的缺点在于,直到快速原型程序状态可用的过程时间较长。在此,一个重要因素是与其相联系的高的用于指定和转换软件嵌接的技术上及管理上的花费。
依照当前的知识状况,一种可比较的方法基于以下思想,即通过到子函数的跳转指令来替换存储指令(对控制器变量的写访问)。但是,对于具有混合指令组(16/32位CPU指令)的微控制器,存储指令可以是16位宽,因为寻址间接经由地址寄存器实现。该16位宽的指令不可以为调用子函数而被引用,因为直接的面向地址的子函数调用要求32位宽的跳转指令。因此,现有技术中的方法只能有条件地被应用并且只能被应用在具有纯32位指令组的微处理器中。也就是说,在存储指令具有确定位宽时,在这里强烈限制了关于函数开发的灵活性。这也适用于以下情况,即某一存储指令由于其他原因根本不允许操作,使得不能够通过到子函数的跳转指令来实现这样的占据。
因此,本发明的任务是,将软件自由段装入已有的软件程序中而无无源代码修改,并且克服所提到的在现有技术中的问题。
发明优点
本发明展示出优选地用于汽车的匹配用于控制工作过程的函数的一种方法和一种装置,其中所述函数动用至少一个程序的至少一个全局变量用于控制,并且给该全局变量分配地址信息,所述地址变量位于至少一个存储装置中,其中由至少一个加载指令从存储装置中加载所述全局变量的这个地址信息,并且有利地替换所述加载指令的全局变量地址信息。
在此,有利地根据地址信息确定所述函数的起始地址,其中就能够通过附加函数扩展或替换所述函数,使得通过替换地址信息来用附加函数替换和/或扩展用于控制工作过程的函数。
因此,本发明有利地涉及无源代码修改的软件自由段的“动态挂钩”(“Dynamic-Hooks”)。在此所描述的方法以及相应的装置改变加载(Load)指令的地址信息,改变函数调用并且插入新的程序代码。该改变在已有的软件程序状态上、例如基于所针对的HEX代码修改加以实施。
此外有利的是,通过指针变量的地址信息来替换全局变量的地址信息,其中所述指针变量的地址信息位于保留的存储区域、特别是控制器中的存储装置的存储区域。
除了关于加载指令的修改,在一个扩展方案中最好规定:操作针对全局变量的存储指令,其方式是通过跳转指令来替换存储指令。在此最好通过用跳转指令代替存储指令来用附加函数替换和/或扩展用于控制工作过程的函数。
根据所提及的装置以及方法,通过本发明还揭示一种包括这种装置的控制器和本发明的主题、如适合用于实施这种方法的计算机程序。对此,在计算机、特别是根据本发明的应用控制器装置或者应用PC上实施该计算机程序。在此,根据本发明的计算机程序能够存储在任意的机器可读的载体上。这种计算机可读的数据载体或者机器可读的载体可以特别地是磁盘、CD-ROM、DVD、存储棒或者每种另外的移动存储介质。同样地,存储介质、如ROM、PROM、EPROM、EEPROM或闪存以及暂时的RAM存储器等也能够被用于存储。因此,在作为本发明主题的计算机程序产品方面,存储介质或机器可读的载体的选择不应视为受到限制。
利用本发明能够快速使用并且灵活运用不同的快速原型设计方法、软件测试方法和数据校准方法。
因此在不束缚软件开发能力的情况下实现软件自由段的实施。由此得到整体上更少的技术开销和管理开销,因此减少成本。
同时可以支持具有混合的例如16/32位宽的CPU指令的指令组的微处理器类型。
从说明书和权利要求的特征中得到另外的优点和有利的扩展。
附图说明
下面根据附图中所示的主题更详细地说明本发明。在此,图1示出根据本发明的用于函数匹配的装置。
图2揭示确定程序中的自由接口或软件自由段的过程。
图3示出用于修改加载和/或存储指令的不同方法的概要和选择。
图4针对加载指令的优选的第一修改方法示出程序图示。
图5针对存储指令的第二修改方法示出程序图示。
图6针对存储指令的第三修改方法示出程序图示。
图7针对存储指令的第四修改方法示出程序图示。
图8示出对用于控制工作过程的函数的调用进行匹配的原理图。
在图9中示出用于绑定附加函数的Hook函数。
图10示出存储装置中关于Hook函数的存储段的示意图。
在图11中最后更详细地示出根据本发明的完整的开发过程。
具体实施方式
图1在示意图中示出具有控制器的应用装置100和应用系统101,其经由具有接口103和104的连接102相耦合。在此,该连接102可以如无线一样有线地加以实施。用105表示微处理器、特别是具有混合指令组的微处理器。106示出存储装置,所述存储装置包括地址寄存器108、数据寄存器107以及至少一个在函数方面要匹配的程序的存储区域。在此,用于实现本发明的控制装置可以被包含在应用系统中或者通过该应用系统来代表,但或者可以在使用微处理器的情况下自身被构造。同样地,用于实现本发明的存储装置被安装在控制器之外,特别地正好被安装在应用系统中。利用所示的装置能够实现根据本发明的主题。
虽然可以实现函数与外部旁路的匹配,但是有利的扩展可以在内部这样地进行匹配,使得该匹配被绑定在程序运行中并因此在不改变源代码的情况下实现软件嵌接的动态挂钩(Dynamic-Hook)。
这里描述的主题改变加载指令的地址信息,改变存储指令的内容,改变函数调用的地址信息并且插入新的程序代码。这里在实施例中,在已有的软件程序状态上基于所针对的十六进制代码修改来实施所述改变。
进一步揭示的关于本发明主题“动态软件自由段”的不同的组成部分的内容如下:
·确定程序位置
·修改程序位置,包括
修改加载/存储指令以及
修改函数调用
·创建附加的程序代码
·绑定软件自由段代码
·对存储区分段以及
·用于创建程序代码的开发过程
下面所描述的方法基于微控制器的使用,所述微控制器的指令组是混合的并且特别地包含16/32位宽的CPU指令。作为示范性的实例,这里例如使用英飞凌的微控制器TriCore TC17xx(RISC/DSP/CPU),其是控制器的组成部分,所述控制器用于控制工作过程、特别是在汽车上的工作过程,例如用于发动机控制或者用于控制转向、传动、刹车等。
但是,所述方法也可以被应用在具有非混合指令组的微处理器上,特别是在纯32位微处理器(RISC处理器、例如PowerPC/MPC5xx)上。
原则上,在所述方法中假定:编译器的代码生成器顺序地排列机器指令。这应被理解为连续的指令排列,以便将例如间接寻址的控制器变量的地址信息加载到相应的寄存器中。与此相反地,在直接寻址的变量的情况下,地址信息自身位于指令中。在大多数编译器中给出该情况。
确定程序位置(图2)
对此的输出点是以十六进制代码文件的形式可供使用的控制器软件程序。作为另外的文件使用数据说明文件(例如ASAP)和连接器文件(例如ELF二进制),所述文件提供关于控制器变量和控制器函数的信息。
利用反汇编软件程序(例如一个Windows软件程序)将十六进制代码文件进行反汇编。从数据说明文件中或者从为本方法所创建的参考数据库中获取要自由截除(freizuschneidenden)的控制器变量。
根据本发明所创建的反汇编程序、例如Windows软件程序借助所查找的控制器变量的地址信息在被反汇编的程序代码中查找相应的对该变量的访问指令(加载指令/存储指令),所述指令影响变量内容。
作为Windows软件程序的该反汇编程序是在每个汇编指令之后检验寄存器内容的激励程序。如果存储指令被定位并且所加载的地址寄存器对应所查找的控制器变量的地址值或者存储指令的存储目标对应变量地址,那么就存在一个在其上改变控制器变量内容的查找位置。
如何改变在查找位置上的程序代码的方法和方式取决于控制器变量的各自的寻址方式。
这在图2中被示出。在图中用201标出控制器程序代码。202示出软件函数。箭头203用符号表示所述的用于确定存储指令的方法。用204标出变量访问的存储指令,而且该存储指令是这样的使得在直接寻址情况下存储指令的存储目标是RAM地址而在间接寻址情况下地址寄存器的内容对应RAM地址,由此就能够确定加载指令。因此,用205标出的箭头用符号表示所述的用于确定加载指令的方法。用于加载变量地址、专门地加载全局变量地址的加载指令用206来标出。
修改程序位置(图3至图8)
在此,对于相应不同的寻址方式,加载指令查找位置和/或存储指令查找位置被定位,并且针对该查找位置确定查找位置位于其中的控制器函数,以便在整个程序代码中能够通过对新创建的Hook函数的函数调用来实现所有函数调用,使得控制器函数的最初的函数调用能够在相应的Hook函数内得以实现。
加载/存储指令的修改
在所述的微控制器中,在最不相同的实施中存在多种不同的寻址方式。该多样性可以被减少到最小。
下面描述四种方法,其尽可能地揭示对全局变量进行写访问的可能组合。可以考虑用于代码分析的其他方法,诸如关于预设的地址寄存器的相对寻址。
对此在图3中给出关于用于修改加载和/或存储指令的不同方法的概况。存储指令st.x表明在其中:st.b=存储字节,st.h=存储半字以及st.w=存储字。下面详细说明图3中所列举的四种方法。
在图4中详细示出了按照方法1的程序位置的修改。在方法1中示例性地涉及16位存储指令和间接寻址。基于所找到的存储指令的位置,在被反汇编的程序代码中对位置进行回溯,直到确定所属的加载指令。对于该方法,所找到的加载指令是重要的。该方法不仅被应用在混合指令集情况下出问题的场合,而且还被应用在由于其他原因不能够通过跳转指令来替换存储命令的场合。
在方法1中,所确定的加载指令关于后续的存储指令通过指针变量的地址信息来替换。通过开发环境、特别是Dhooks开发环境来产生该指针变量。指针变量的地址位于变量存储布局的、存储装置的保留的自由区域中。修改过的加载指令对与最初指令一样的地址寄存器进行寻址。修改过的加载指令的区别在于地址寄存器的寻址方式以及在于地址信息。
因此在图4中,在原理图示中说明方法1。在此,用401表示最初的程序代码,并且用411表示修改过的程序代码。402和406以及417和407形成控制器函数、这里为function_a()。在此,在402中或在417中示出指令或指令序列,并且在406或407中示出本身的函数性。用axx%表示对地址寄存器(例如在16位宽的情况下a0至a15)的访问,并且用dxx%表示对数据寄存器(例如在16位宽的情况下d0至d15)的访问。那么对此考察在408、409、410、413、414和415中的指令movh.a和ld.a(加载指令)以及st.x(存储指令)。在该实例中,movh.a和ld.a作为32位指令(参见412和403)。存储指令st.x被示出为16位指令(参见405),并由此在该实例中不能够通过32位跳转指令来替换。如所说的,这也适用于所有其他的在其中不能够或不期望进行这种替换的情况。那么将新的根据本发明的指令代码或程序代码403装入412,并且将加载指令改变到指针变量iB_PtrMsg_xxx(Ptr=指针)上。控制器变量的地址通过依照404的指针变量的地址来替换。稍后在四种方法之后详细说明用于创建附加程序代码或附加函数的方法。
在图5中详细描述了按照方法2的程序位置的修改。在此,针对方法1的相同的符号和缩写也适用于所有其余方法实例。在此,用501表示最初的程序代码,并且用511表示修改过的程序代码。502和506以及517和507形成控制器函数、这里为function_a()。在此,在502中或在517中示出指令或指令序列,并且在506或507中示出本身的函数性。用axx%表示对地址寄存器(例如在16位宽的情况下a0至a15)的访问,并且用dxx%表示对数据寄存器(例如在16位宽的情况下d0至d15)的访问。那么对此又考察指令movh.a和ld.a(加载指令)以及st.x(存储指令)。现在存储指令st.x被示出为32位指令(参见505),并由此在该实例中能够通过32位跳转指令来替换。那么将新的根据本发明的指令代码或程序代码503(jla:跳转指令)装入505。
在方法2中涉及与间接寻址相联系的32位存储指令。32位的存储指令通过到软件Balkon(阳台)函数(balcony_M2)的决定跳转指令来替换(参见520对软件Balkon函数的调用)。在jla跳转指令的情况下将返回地址存储在地址寄存器a11中(参见521中)。
在所提到的软件Balkon函数521中,地址寄存器%axx的内容通过指针变量(iB_PtrMsg_xxx)的地址值来替换,其中通过所述内容来对控制器变量进行寻址。地址寄存器%axx和先前加载的数据寄存器%dxx的索引在软件Balkon函数521中是相同的。
如果32位宽的存储指令考虑到软件自由段,则为此需要附加的程序代码。在Dhooks开发环境中产生该程序代码,并将其表示为Balkon函数。Balkon函数包含附加的初始化机制、复制机制和自由段机制,并且被用作用于改进自由段功能性的软件函数。Balkon函数被用于自由段方法2、3和4。
通过跳转指令jla,所用的数据寄存器%dxx的内容保持不变。那么在软件Balkon函数中实现经由指针的寻址,并因此将存储指令转向指针变量。存储指令st.x如在最初代码中一样写入数据。
随后,经由存储在地址寄存器a11中的返回地址,通过间接跳转依照522返回到控制器函数中。
在图6中详细描述了按照方法3的程序位置的修改。在此,相同的符号和缩写也适用于所有其余方法实例、这里特殊地适用于方法2。在此,用601表示最初的程序代码,并且用611表示修改过的程序代码。602和606以及617和607形成控制器函数、这里为function_a()。在此,在602中或在617中示出指令或指令序列,并且在606或607中示出本身的函数性。在此考察特殊的st.x(存储指令)、即st.t。现在存储指令st.t被示出为32位指令(参见605),并由此在该实例中能够通过32位函数调用(call balcony_M3)来替换。那么将新的根据本发明的指令代码或程序代码603(call:函数调用)装入605。
在方法3中涉及与直接寻址618相联系的32位存储指令st.t(具有地址610的存储指令)。32位存储指令通过软件Balkon函数(balcony_m3,621)的32位函数调用(call balcony_M3,603)来替换(参见604)。软件Balkon函数621包含自由段的查询和最初状态中的存储指令。在激活自由段时不执行存储指令。因此,所述变量与控制器函数解耦。对此,根据612实现Balkon函数621的调用620。然后,经由控制器变量的地址(ecu变量的地址)619实现到控制器函数的返回622。
在图7中详细描述了按照方法4的程序位置的修改,相同的符号和缩写适用于所有其余的方法实例、这里特殊地适用于方法2。在此,用701表示最初的程序代码,并且用711表示修改过的程序代码。702和706以及717和707形成控制器函数、这里为function_a()。在此,在702中或在717中示出指令或指令序列,并且在706或707中示出本身的函数性。用%axx表示对地址寄存器的访问,并且用%dxx或%dyy表示对数据寄存器的访问。那么对此考察先前在方法中所述的指令mov、st.x(存储指令)调用和jla。存储指令st.x被示出为32位指令(参见705),并由此在该实例中能够通过32位跳转指令来替换。那么将新的根据本发明的指令代码或程序代码703(jla:跳转指令)装入705。
在方法4中涉及与直接寻址(718)相联系的32位存储指令st.x(710)。32位的存储指令通过32位跳转指令(Jla balcony_M4_a)来替换。跳转指令指向利用720被调用的软件Balkon函数1(balcony_M4_a(),721)。在软件Balkon函数1721中,先前所加载的数据寄存器%dxx的内容被缓冲存储到临时的DHooks变量(iB_TempMsg_xxx)。根据721,通过函数调用利用723来调用另一个Balkon函数(balcony_M4_b(),724)。该第二软件Balkon函数2包含如方法3中的本身的自由段。软件Balkon函数724包含对自由段的查询。在去活自由段的情况下,将临时变量iB_TmpMsg_xxx的内容回写到控制器变量中(参见725)。在激活自由段的情况下不进行回写。因此,控制器变量与控制器函数相解耦。然后,经由722返回到控制器函数。
修改函数调用(图8)
针对被定位的加载/存储查找位置,确定查找位置所处的控制器函数,这利用为本方法所开发的Windows软件程序来实现,该Windows软件程序根据加载/存储指令的位置且借助参考信息来确定所述控制器函数的相应的起始和终止地址。
随后,在整个程序代码中通过对新创建的Hook函数的函数调用来替换所有对所述控制器函数的函数调用。
在相应的Hook函数内实现最初的对控制器函数的函数调用。
在图8中,由于清晰性的原因而选择与在至此的图2、4、5、6、7中的图示相同的图示,以便使得该修改图示是可比较的。用801表示最初的控制器程序代码,并用811表示各自被修改的程序代码。在此,使用一个任务列表task_list和一个相应的附加函数或子函数subfunction_x()。出于简化的目的,现在不再显性地在指令序列和本身的函数性之间进行区分(相较于图3至7)。用804表示根据图2的用于确定函数地址和函数调用的过程。依照805,function_a的地址通过hook_function_a的地址来替换。相应地,在806处通过对hook_function_a的调用来替换对function_a的函数调用。最后在807中通过对hook_function_a的调用来替换对function_a的间接的函数调用(这里作为32位指令)。在此,用nP分别表示通过替换新形成的程序代码。
用于创建附加程序代码的方法(图9)
因此,对于自由段位于其中的控制器函数,可以安Hook函数,或者安放了这种函数。在图9中对此揭示了这种Book函数hook_function_a()和hook_function_x()的示意图。在此,用901表示控制器程序代码。902表示附加程序代码的存储区域。用903表示本身的Hook函数,在该Hook函数中用904表示有可能需要的指针变量的可能的初始化。905揭示针对特别是快速原型设计方法的软件自由段、配置和绑定的程序代码。最后,用906表示对最初的控制器函数function_a()的调用。这对于第二Hook函数hook_function_x()是可比较的,但是出于清晰性原因未再示出。
Hook函数也包含自由段机制,其控制对关于应用数据的快速原型设计方法的访问。此外,在Hook函数中必要时实施指针变量的初始化以及对本身的控制器函数的函数调用。
下面根据自由段方法来描述Hook函数的特征:
对于自由段方法1和2:
在存储指令可以被有意义地写入由指针寻址的控制器变量之前,必须对具有变量地址的指针变量进行寻址。在Hook函数中实现指针的初始化。如果自由段访问不是有效的,则初始化具有临时DHooks变量的地址的指针。在该位置上例如在对控制器变量间接寻址的情况下转到对临时变量的写访问。
对于自由段方法3和4:
在这两种方法中涉及控制器变量的直接寻址。不使用必须被初始化的指针。在Hook函数中有用于控制软件自由段的机制以及对最初的控制器函数的函数调用。
此处,在如已经简要说明的通过跳转指令进行替换的情况下还应执行Balkon函数。提前详细描述了所述应用。如果32位宽的存储命令考虑软件自由段,则对此需要附加的程序代码。该程序代码在DHooks开发环境中被产生并且被表示为Balkon函数。Balkon函数包含附加的初始化机制、复制机制和自由段机制,并且用作用于扩展自由段函数性的软件函数。Balkon函数被应用于自由段方法2、3和4。
用于绑定软件自由段代码的方法
软件自由段代码的绑定例如通过十六进制代码合并过程来实施。在该动作中,动态自由段方法的开发环境的结果(十六进制代码)被复制到最初软件程序(十六进制代码)的自由区域中。类似于内部控制器旁路方法地设计本方法,在所述内部控制器旁路方法中将来自两个分离软件开发过程的十六进制代码信息相互连接。
存储区域的分段(图10)
对于自由段方法,在控制器软件程序的存储布局S1中需要存储装置的自身的存储区域。根据图10,本方法要求用于代码(Dhook-Code)S4、数据(Dhook-Data)S3和RAM(Dhook-RAM)S2的自由区域。在代码区域存有自由段函数(附加程序代码),在数据区域存有应用量,通过所述应用量来控制自由段机制。为本方法所需的指针变量和管理的RAM变量被存储在RAM变量的自由区域中。
用于创建程序代码的开发过程(图11)
软件自由段代码的产生自动地通过为本方法所创建的开发环境来实现,并且在图11中再次被示明。在此,也可以自动地按照可预定的判据实现或实施在点8处的变量选择。
1.十六进制代码文件(包含例如以Intel十六进制或者Motorola-S19格式的机器代码)
2.应用数据说明文件(例如包含变量和特征参数的地址和换算公式)
3.ELF二进制文件(具有函数和变量的地址的连接器输出文件)
4.用于将机器代码转换成可读汇编指令的程序
5.被反汇编的程序代码(用作模拟器的输入)
6.用于提供程序信息的转换器
7.参考数据库(用于对公开索引进行解析)
8.应用者完成自由段变量的选择
9.关于要自由截除的控制器变量
10.程序代码模拟器(顺序地读取所有操作码并检验寄存器内容)
11.自动生成的源代码(包含软件自由段的程序代码、附加函数和关于要修改的程序代码位置的信息)
12.软件开发环境(控制用于产生十六进制代码和应用数据的所有过程)
13.用于控制自由段的应用数据
14.程序代码+自由段代码+补丁代码
15.Hex/A2L合并过程(DynamicHooks部分与原始的程序代码相连接)
16.应用数据说明文件(包含项目数据以及自由段应用数据)
17.具有软件自由段的程序状态
Claims (12)
1.对用于控制工作过程的函数进行匹配的方法,其中所述函数动用至少一个程序的至少一个全局变量用于控制,并且给该全局变量分配位于至少一个存储装置中的地址信息,其中通过至少一个加载指令从存储装置中加载所述全局变量的地址信息,其特征在于,
所述加载指令的全局变量地址信息被替换。
2.如权利要求1所述的方法,其特征在于,
通过指针变量的地址信息来替换所述全局变量的地址信息。
3.如权利要求2所述的方法,其特征在于,
所述指针变量的指针信息位于保留的存储区域中。
4.如权利要求1所述的方法,其特征在于,
通过以下方式操作针对所述全局变量的存储指令,即通过跳转指令来替换所述存储指令。
5.如权利要求1所述的方法,其特征在于,
根据所述地址信息确定所述函数的起始地址。
6.如权利要求1或5所述的方法,其特征在于,
通过替换所述地址信息来用附加函数替换所述的用于控制工作过程的函数。
7.如权利要求4所述的方法,其特征在于,
通过用所述跳转指令替换所述存储指令来用附加函数替换所述的用于控制工作过程的函数。
8.实施对用于控制工作过程的函数进行匹配的方法的装置,其中所述函数动用至少一个程序的至少一个全局变量用于控制,并且给该全局变量分配地址信息,其中设置有存储装置,在所述存储装置中存有所述地址信息,其中此外包括控制装置,通过所述控制装置由至少一个加载指令从所述存储装置中加载所述全局变量的地址信息,其特征在于,
所述控制装置被这样设计使得所述加载指令的全局变量地址信息被替换。
9.如权利要求8所述的实施对用于控制工作过程的函数进行匹配的方法的装置,其特征在于,
所述控制装置被这样设计使得附加地实施如权利要求2至7之一所述的方法。
10.具有按照权利要求8的用于实施所述方法的装置的用于控制工作过程的控制器。
11.具有存储在机器可读的载体上的程序代码的计算机程序产品,所述计算机程序产品用于在计算机上执行所述程序时实施如权利要求1至7之一所述的方法。
12.具有程序代码的计算机程序,所述程序代码用于在计算机上执行所述程序时实施如权利要求1至7之一所述的所有步骤。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE10352172.0 | 2003-11-05 | ||
DE10352172A DE10352172A1 (de) | 2003-11-05 | 2003-11-05 | Verfahren und Vorrichtung zur Anpassung von Funktionen zur Steuerung von Betriebsabläufen |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1879067A true CN1879067A (zh) | 2006-12-13 |
CN100458606C CN100458606C (zh) | 2009-02-04 |
Family
ID=34559486
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004800328222A Expired - Fee Related CN100458606C (zh) | 2003-11-05 | 2004-11-04 | 匹配用于控制工作过程的函数的方法和装置 |
CNB2004800327766A Expired - Fee Related CN100524109C (zh) | 2003-11-05 | 2004-11-04 | 激励用于控制工作过程的函数的方法和装置 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004800327766A Expired - Fee Related CN100524109C (zh) | 2003-11-05 | 2004-11-04 | 激励用于控制工作过程的函数的方法和装置 |
Country Status (7)
Country | Link |
---|---|
US (2) | US7593791B2 (zh) |
EP (2) | EP1682950A1 (zh) |
JP (2) | JP4520466B2 (zh) |
CN (2) | CN100458606C (zh) |
DE (3) | DE10352172A1 (zh) |
RU (1) | RU2352972C2 (zh) |
WO (2) | WO2005045537A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101807157A (zh) * | 2010-03-30 | 2010-08-18 | 南京恩瑞特实业有限公司 | 基于函数访问全局变量的防御性编程方法 |
CN111694702A (zh) * | 2019-03-11 | 2020-09-22 | 大众汽车有限公司 | 用于进行安全的信号操纵的方法和系统 |
CN112596769A (zh) * | 2020-12-21 | 2021-04-02 | 潍柴动力股份有限公司 | 一种变量管理方法及装置 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2007269613B2 (en) * | 2006-07-06 | 2010-07-22 | Fluor Technologies Corporation | Propane recovery methods and configurations |
JP4941040B2 (ja) * | 2007-03-26 | 2012-05-30 | 富士通株式会社 | テスト仕様書生成プログラム、およびテスト仕様書生成装置 |
KR101019209B1 (ko) * | 2007-04-25 | 2011-03-04 | 이화여자대학교 산학협력단 | 임베디드 소프트웨어의 인터페이스 자동 추출 장치 및 그방법 |
US8166344B2 (en) | 2009-01-28 | 2012-04-24 | Dspace Digital Signal Processing And Control Engineering Gmbh | Method for controlling an operating mechanism and a manipulation unit |
US8171341B2 (en) | 2009-01-28 | 2012-05-01 | Dspace Digital Signal Processing And Control Engineering Gmbh | Method for controlling an operating mechanism and a manipulation unit |
US8074118B2 (en) | 2009-01-28 | 2011-12-06 | Dspace Digital Signal Processing And Control Engineering Gmbh | Method for influencing a control unit and manipulation unit |
CN102402480A (zh) * | 2011-10-12 | 2012-04-04 | 吴华中 | 电路板固件命令行调试(测试)工具 |
EP2759939B1 (de) | 2013-01-29 | 2016-06-08 | dSPACE digital signal processing and control engineering GmbH | Verfahren zum Manipulieren einer Speicheroperation eines Steuergeräteprogramms auf einen virtuellen oder realen Speicher |
EP2881858B1 (de) * | 2013-12-09 | 2016-04-06 | dSPACE digital signal processing and control engineering GmbH | Verfahren zur Änderung der Software im Speicher eines elektronischen Steuergerätes |
EP3377949B1 (de) * | 2015-11-19 | 2020-04-01 | dSPACE digital signal processing and control engineering GmbH | Verfahren zum betreiben eines steuergeräts sowie zum externen bypassing eingerichtetes steuergerät |
CN107688467B (zh) * | 2016-12-23 | 2019-11-15 | 北京国睿中数科技股份有限公司 | 处理器随机指令复用的验证方法 |
DE102020112331A1 (de) | 2020-05-07 | 2021-11-11 | Audi Aktiengesellschaft | Lernsystem zum Lernen individueller Programmiereingaben |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4530052A (en) * | 1982-10-14 | 1985-07-16 | Honeywell Information Systems Inc. | Apparatus and method for a data processing unit sharing a plurality of operating systems |
GB2197506A (en) * | 1986-10-27 | 1988-05-18 | Burr Brown Ltd | Providing and handling break points in a software monitor |
US5195183A (en) * | 1989-01-31 | 1993-03-16 | Norand Corporation | Data communication system with communicating and recharging docking apparatus for hand-held data terminal |
US5109504A (en) | 1989-12-29 | 1992-04-28 | Texas Instruments Incorporated | Graphics program adaptor |
JP2922723B2 (ja) * | 1992-06-29 | 1999-07-26 | キヤノン株式会社 | 情報処理装置 |
JPH06250837A (ja) * | 1993-02-25 | 1994-09-09 | Ricoh Co Ltd | スケジューリング処理方式 |
FI102220B (fi) | 1995-10-30 | 1998-10-30 | Nokia Telecommunications Oy | Vikaantumistietojen keräys tietokoneyksikön uudelleenkäynnistyksen osa na |
JPH09311792A (ja) * | 1996-05-22 | 1997-12-02 | Hitachi Ltd | レジスタ割り付け方法 |
US6216237B1 (en) * | 1998-06-19 | 2001-04-10 | Lucent Technologies Inc. | Distributed indirect software instrumentation |
US6543049B1 (en) * | 1999-09-03 | 2003-04-01 | International Business Machines Corporation | Ranked break points and method for debugging a computer program |
JP2001147837A (ja) * | 1999-11-18 | 2001-05-29 | Fujitsu Ltd | プログラムトレース装置及び記憶媒体 |
WO2001090887A1 (fr) * | 2000-05-25 | 2001-11-29 | Fujitsu Limited | Procede de traitement de programme permettant un traitement haute vitesse au moyen d'un materiel a reconfiguration dynamique et programme permettant d'executer ce procede de traitement |
DE10036278A1 (de) * | 2000-07-26 | 2002-02-07 | Bosch Gmbh Robert | Verfahren zur Überwachung eines Programmablaufs mittels einer Debug Logik |
JP2002099425A (ja) * | 2000-09-25 | 2002-04-05 | Hitachi Ltd | グローバル変数のローカル変数変換方法 |
DE10106504A1 (de) | 2001-02-13 | 2002-08-29 | Bosch Gmbh Robert | Verfahren und Vorrichtung zum Emulieren von Steuer- und/oder Regelfunktionen eines Steuer- oder Regelgeräts |
JP3729251B2 (ja) * | 2001-03-12 | 2005-12-21 | オムロン株式会社 | コントローラ及びシステム |
US6859892B2 (en) * | 2001-04-25 | 2005-02-22 | Hewlett-Packard Development Company, L.P. | Synchronous breakpoint system and method |
JP4391724B2 (ja) * | 2001-06-08 | 2009-12-24 | ローベルト ボッシュ ゲゼルシャフト ミット ベシュレンクテル ハフツング | 車両の駆動シーケンス制御の監視方法及びその装置 |
DE10228610A1 (de) | 2001-06-27 | 2003-01-16 | Bosch Gmbh Robert | Verfahren zum Überprüfen eines auf einer elektronischen Recheneinheit ablaufenden Steuerprogramms |
DE10220611A1 (de) * | 2002-02-15 | 2003-08-28 | Brueninghaus Hydromatik Gmbh | Drehgleitlager |
JP4403794B2 (ja) * | 2003-02-28 | 2010-01-27 | 株式会社デンソー | 制御プログラムの検査方法及び検査装置及び検査プログラム |
-
2003
- 2003-11-05 DE DE10352172A patent/DE10352172A1/de not_active Withdrawn
-
2004
- 2004-11-04 EP EP04797412A patent/EP1682950A1/de not_active Ceased
- 2004-11-04 CN CNB2004800328222A patent/CN100458606C/zh not_active Expired - Fee Related
- 2004-11-04 CN CNB2004800327766A patent/CN100524109C/zh not_active Expired - Fee Related
- 2004-11-04 JP JP2006537060A patent/JP4520466B2/ja not_active Expired - Fee Related
- 2004-11-04 US US10/578,342 patent/US7593791B2/en not_active Expired - Fee Related
- 2004-11-04 JP JP2006537062A patent/JP2007510205A/ja active Pending
- 2004-11-04 DE DE112004002631T patent/DE112004002631D2/de not_active Withdrawn - After Issue
- 2004-11-04 US US10/578,341 patent/US20070214451A1/en not_active Abandoned
- 2004-11-04 WO PCT/DE2004/002447 patent/WO2005045537A1/de active Application Filing
- 2004-11-04 RU RU2005124163/09A patent/RU2352972C2/ru not_active IP Right Cessation
- 2004-11-04 WO PCT/DE2004/002462 patent/WO2005045538A1/de active Application Filing
- 2004-11-04 DE DE112004002647T patent/DE112004002647D2/de not_active Expired - Fee Related
- 2004-11-04 EP EP04802677A patent/EP1682951A1/de not_active Ceased
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101807157A (zh) * | 2010-03-30 | 2010-08-18 | 南京恩瑞特实业有限公司 | 基于函数访问全局变量的防御性编程方法 |
CN101807157B (zh) * | 2010-03-30 | 2012-08-29 | 南京恩瑞特实业有限公司 | 基于函数访问全局变量的防御性编程方法 |
CN111694702A (zh) * | 2019-03-11 | 2020-09-22 | 大众汽车有限公司 | 用于进行安全的信号操纵的方法和系统 |
CN112596769A (zh) * | 2020-12-21 | 2021-04-02 | 潍柴动力股份有限公司 | 一种变量管理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
DE112004002631D2 (de) | 2006-09-21 |
WO2005045538A1 (de) | 2005-05-19 |
EP1682950A1 (de) | 2006-07-26 |
DE10352172A1 (de) | 2005-06-09 |
DE112004002647D2 (de) | 2006-09-21 |
WO2005045537A1 (de) | 2005-05-19 |
JP2007510205A (ja) | 2007-04-19 |
JP2007511817A (ja) | 2007-05-10 |
CN100458606C (zh) | 2009-02-04 |
CN100524109C (zh) | 2009-08-05 |
EP1682951A1 (de) | 2006-07-26 |
US20070033583A1 (en) | 2007-02-08 |
RU2005124163A (ru) | 2007-03-27 |
US7593791B2 (en) | 2009-09-22 |
US20070214451A1 (en) | 2007-09-13 |
CN1879066A (zh) | 2006-12-13 |
JP4520466B2 (ja) | 2010-08-04 |
RU2352972C2 (ru) | 2009-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9519466B2 (en) | Executable code for constrained computing environments | |
CN101697131B (zh) | 一种可重定位文件动态加载的方法及装置 | |
CN1879067A (zh) | 匹配用于控制工作过程的函数的方法和装置 | |
CN1504881A (zh) | 爪哇执行设备和爪哇执行方法 | |
CN100343809C (zh) | 中间代码执行系统和中间代码执行方法 | |
US7200840B2 (en) | Method and apparatus for enabling access to global data by a plurality of codes in an integrated executable for a heterogeneous architecture | |
CN1577268A (zh) | 共享库系统及构建该系统的方法 | |
CN1577265A (zh) | 用于可扩充编译器和工具基础结构的描述语言 | |
CN1959640A (zh) | 在软件包管理系统将用户进程表示为软件包的系统和方法 | |
CN100414517C (zh) | 异构体系结构中的覆盖生成、管理的方法和设备 | |
CN102722387B (zh) | 动态打补丁的方法和装置 | |
CN1922574A (zh) | 无需额外的代码分析来进行链接时代码优化的方法和系统 | |
CN103309684A (zh) | 动态加载应用的方法及装置 | |
JP5401561B2 (ja) | クラスファイル内にネイティブコードを埋め込むことによる仮想メカニズム内でのプラットフォーム依存ルーチンの適用 | |
CN1313925C (zh) | 构件自描述封装方法及运行的方法 | |
CN1255744C (zh) | 智能卡通用高速发卡机及其发卡方法 | |
CN104461569A (zh) | 一种基于matlab的c/c++程序生成辅助方法 | |
KR100478463B1 (ko) | 응용 프로그램의 동적링크 방법 | |
Sarma | New trends and challenges in source code optimization | |
CN100476736C (zh) | 在虚拟机环境下调用方法的方法和包括虚拟机的系统 | |
Kachman et al. | Configurable reprogramming methodology for embedded low-power devices | |
CN1786904A (zh) | 容易进行软件开发的嵌入系统及方法 | |
JP2004288076A (ja) | ネイティブライブラリへのアクセス方法 | |
CN1154924C (zh) | 动态维护应用程序的功能模块的方法 | |
Palaniappan | Recent trends and challenges in source code optimization |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090204 Termination date: 20171104 |
|
CF01 | Termination of patent right due to non-payment of annual fee |