CN104699478B - 改变电子控制单元的存储器中的软件的方法和计算机系统 - Google Patents
改变电子控制单元的存储器中的软件的方法和计算机系统 Download PDFInfo
- Publication number
- CN104699478B CN104699478B CN201410698598.6A CN201410698598A CN104699478B CN 104699478 B CN104699478 B CN 104699478B CN 201410698598 A CN201410698598 A CN 201410698598A CN 104699478 B CN104699478 B CN 104699478B
- Authority
- CN
- China
- Prior art keywords
- routine
- program
- address
- processor
- bypass
- 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.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0638—Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/66—Updates of program code stored in read-only memory [ROM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种用于改变电子控制单元的存储器中的软件的方法,其中,在覆盖存储器中的地址区域中存储旁路例程的至少一个功能性部分,借助旁路例程应至少部分地取代原始的程序例程;或者在覆盖存储器中存储作为旁路例程的第一部分的跳转指令,跳转指令直接或间接地指向旁路例程的第二部分,该第二部分存储在处理器能访问的地址区域内,并且为了激活覆盖功能而创建关联关系信息,关联关系信息将覆盖存储器的地址和/或地址区域与待取代的程序例程的或待取代的一部分程序例程的地址或地址区域相关联,并且关联关系信息能够经由控制单元的接口激活或去激活。本发明还涉及一种用于用于改变电子控制单元的存储器中的软件的计算机系统。
Description
技术领域
本发明涉及一种用于改变电子控制单元的存储器中的软件的方法,其中,所述存储器包括至少一个只读存储器,所述只读存储器具有存储在其中的并且构成所述软件的至少一部分的多个原始的程序例程,所述原始的程序例程通过所述控制单元的至少一个处理器执行;所述存储器具有用于存储易失性数据的至少一个工作存储器;并且所述存储器还具有覆盖存储器,所述覆盖存储器中的每个存储地址能够借助于关联关系信息与所述只读存储器中的存储地址相关联,以至于所述处理器在覆盖功能被激活时代替执行在所述只读存储器中的地址处的程序例程指令而是执行在所述覆盖存储器的相关联的地址处的指令。
本发明还涉及一种用于改变电子控制单元的存储器中的软件的计算机系统。
背景技术
在汽车工业中,软件的使用能够实现如通过纯机械解决方案不可能实现的、某种程度有效的监测和控制机制。现代汽车包括由电子控制单元(ECU)、工作存储器和只读存储器构成的网络,所述电子控制单元总是具有至少一个处理器,所述处理器执行程序例程,所述只读存储器通常通过闪存存储器实现。
所有控制单元还具有接口,这些控制单元借助于所述接口接收传感器数据、操控执行器并且相互通信。如在软件工业中通常常见的那样,在ECU编程时也倾向于采用现有的解决方案。因此现有的马达控制单元,例如用于先前系列的马达的马达控制单元,用作为研发新的控制单元的基础。然后选择性地修改或者重新开发各个程序例程,而绝大部分旧代码被保留。
替选地,制造商经常对供应商要求完全编程的开发控制单元,以便将其随后根据自己的特定要求来自行修改。在这种情况下,新开发的程序例程必须被集成到控制单元的可运行的二进制代码中并且在那里取代、改变或补充相应的原始程序例程。该集成过程称作为旁路。
为了实现旁路存在不同的可能性。非常广泛传播的方法是基于服务的旁路。服务是位于控制单元的存储器中的特定函数。在程序代码的特定位置上调用服务并且该服务通过下述方式承担旁路的技术实施,即:服务附加于或代替原始的程序例程而调用旁路例程,提供所述旁路例程的输入参数并且在其运行之后确保由旁路例程写入的值存储在控制单元存储器中的正确位置处。其它方法不要求服务函数。这些其它方法基于二级制代码的修改。例如可行的是,通过插入开关逻辑器而禁用函数中的变量访问。
原则上,旁路例程的代码能够位于外部系统上或者位于控制单元本身上。后一种可能性,即所谓的内部旁路,在此不要求附加的硬件并且不取决于特殊接口的存在。
开发控制单元必须根据至今为止的用于实施旁路的现有技术来制备。在应用基于服务的旁路方法时这意味着,在要取代的函数之前和/或之后(根据方法)和/或之内,服务函数的调用必须被集成到程序例程的二进制代码中。在理想情况下,该服务调用在源代码层面上已经实现。在实践中,其并不总是可实现的。例如,控制单元的供应商对此可能没有准备或者在已经制成控制单元之后才显示出对特定函数进行旁路的必要性。在这样的情况下也可行的是,将调用后续地集成到二级制代码中。
根据当前的现有技术,旁路例程的代码的操作分别引起新写入控制单元的闪存存储器。这不仅是耗时的(几十秒至几十分钟)并且中断正在运行的测试系列,而且也过度损耗闪存存储器,而该闪存存储器在物理上仅能够承受有限次的存储过程。
在相应于现有技术的典型情况下,除了自有的程序代码,对于基于服务的内部旁路存在在闪存中的特定的旁路-服务函数。为旁路准备的任意程序例程f扩展服务的两次调用。将旁路例程安装在闪存中的用户将该旁路例程的存储地址登记在表中。该服务函数的第一次调用例如直接发生在f之前。该服务函数获得表位置作为参数。如果服务函数在那里发现存储地址,那么所述服务函数调用位于该地址处的旁路函数。否则该服务函数保持被动。旁路例程只要其被执行则将由其产生的所有值根据专门为其定义的全局变量写入缓冲存储器中。在执行完旁路例程之后,处理器又跳回到原本的程序中。然后函数f正常运行,而与旁路例程是否被执行无关。
在运行完f之后进行服务函数的第二次调用。所述服务函数获得第二表位置作为参数并且在那里发现覆盖函数的地址。该地址与旁路例程匹配并且连同旁路例程一起被安装。覆盖例程读取由旁路例程设立的缓冲存储器并且覆盖由f写入的变量。
关于由f处理的变量的信息来自控制单元的a2l文件。该文件是在每个开发控制单元中附有的技术说明文件。其主要包含块和第二块,所述块将在控制单元上运行的函数与其相应所读取的和所写入的变量相关联,所述第二块列举变量的存储地址。因此,f的源代码的知识对于设计旁路例程不是必需的。
发明内容
本发明的目的是,在控制单元上改变软件(所述软件在最初、尤其是在制造商方面并不是为此准备的),允许在软件上的改变,尤其是因此不必包括在程序例程内的准备好的服务函数的调用。
此外的一个目的是,在此允许尽可能不动或者甚至完全不动闪存存储器的内容,由此避过大部分在旁路时出现的、已经提及的问题(闪存存储器的物理加载、为了写入控制单元而引起的高耗时、通过服务函数的预先准备的必要性)。另一目的是,开辟在控制单元的运行时间能够动态地补充、改变或更换程序例程的代码的可能性,尤其是无需为此停止控制单元。
根据本发明,所述目的如下实现:经由控制单元的接口借助于连接在该接口上的影响设备或者通过集成到控制单元程序中的服务代码,尤其是在控制单元运行时间期间,在覆盖存储器的地址区域中存储旁路例程的至少一部分,原始的程序例程应被该旁路例程取代或至少部分地取代。根据本发明,旁路例程包括对控制单元的功能产生直接影响的功能代码和可选的辅助代码,所述辅助代码在需要时对功能代码进行补充,以便确保功能代码的正常执行。对辅助代码的示例是跳转指令、服务函数和服务函数的调用。
根据本发明,取代程序例程或者取代至少一部分程序例程理解为,程序例程或一部分程序例程在功能上被取代,即由处理器执行其它例程或其它部分而不是执行该例程或者一部分该例程。根据本发明的取代尤其根据本发明不改变只读存储器中的原始代码,而是能够不动该原始代码。根据本发明确保由处理器执行其它代码而不是执行原始代码。
为此利用本发明,使得控制单元,尤其是不是用于构造产品中的系列而是用于开发、测试和调整在该单元上实现的软件的开发控制单元,通常具有所谓的覆盖存储器。所述覆盖存储器是特定的存储区域,该特定的存储区域用于快速地且不复杂地覆盖程序代码的个别碎片。
在此,其例如能够为自有的集成到处理器中的存储模块或者为工作存储器或闪存存储器的预订的或可预订的区域。覆盖存储器中的各个地址或整个地址区域能够借助于至少一个关联关系信息、尤其是为此设置的处理器寄存器中的关联关系信息来存储。地址或同等大小的地址区域分配在闪存或工作存储器上。
根据本发明,借助于与控制单元连接的计算机或在其上运行的软件和/或与控制单元连接的影响设备创建关联关系信息,所述关联关系信息然后为了激活关联关系进而为了激活覆盖功能而被写入到为此设置的处理器寄存器中。
在这种类型的控制单元中,在处理器每次访问存储地址、尤其是至少所述只读存储器的存储地址时检查:该地址是否与覆盖存储器中的地址相关联。如果是这种情况,那么忽略存储地址的内容并且代替于此访问覆盖存储器中的相关联的存储地址。如果在那里存在可执行的指令,那么由处理器执行该指令。实现所述方法的逻辑器优选硬接在控制单元的处理器上。
根据现有技术,覆盖存储器用于调整控制单元。在此理解为使已制成的并且经测试的控制单元软件的参数适配于特定的车辆型号。在控制单元中应用的常见的闪存存储器中出于物理原因仅能够以高的耗费操纵各个值,这是因为为此必须首先完全删除闪存存储器的较大的存储区域并且然后又必须完全重新编程该存储区域。闪存的这样的删除和不断地重写在时间上通常是不可接受的。这在正在运行的程序执行时通常也是完全不可行的,因为当处理器在该区域中编辑其程序代码或者处理存在那里的数据时,完全删除或仅部分重新编程的闪存存储区域能够导致不可预见的反应。参数因此被写入到覆盖存储器中,以至于所述参数覆盖存储在闪存上的变量并且能够在那里快速地且在运行时被操纵。根据现有技术,因此覆盖存储器仅用于覆盖变量或参数。
现在,根据本发明的方法提出,通过使用覆盖存储器引入新的功能,即使用覆盖存储器以用于将旁路例程的代码插入到控制单元程序中并且通过所述代码至少部分地在功能上取代或补充程序例程。
因此,旁路例程完全地或至少部分地写入到覆盖存储器中,并且处理器的用于覆盖功能的寄存器通过存储至少一个关联关系信息而配置为,使得代替执行待取代的原始程序例程而执行旁路例程。一个特定的实施方案提出,在覆盖存储器中存储跳转指令,所述跳转指令将处理器引向在激活的覆盖存储器之外的存储地址,自该存储地址起存储至少一部分旁路例程。这原则上能够是覆盖存储器之内或之外的任意地址。本发明因此也能够用在仅提供小的覆盖存储器的控制单元中。
根据本发明,“激活的覆盖存储器”理解为所有存储地址的整体,所述存储地址根据关联关系信息分别与其它存储地址一一对应地相关联,以至于其在覆盖功能被激活时使该存储地址如之前阐述的那样分别覆盖其它的存储地址。
与现有技术中已知的基于服务的旁路不同,通过供应商准备控制单元通过使用本发明而不再是必需的。此外可行的是,快速地且在不停止控制单元的情况下再加载或更换旁路例程的代码。
为此能够提出,覆盖函数只要其是被激活的则首先被去激活,以至于控制单元在执行原始的程序例程的情况下继续运行。这能够例如通过删除处理器寄存器或位于其中的关联关系信息实现。
在此期间,能够根据意愿来操纵覆盖存储器中的旁路例程的代码或覆盖存储器中的跳转指令,当这完成之后,覆盖功能再次被激活。在此确保:只要存在于覆盖存储器中的被覆盖的代码与原始的代码不同,处理器在覆盖存储器被激活时不执行通过覆盖存储器覆盖的存储区域中的指令。
相反,在去激活的时间点,不允许在一部分旁路例程之内存在与被覆盖的原始代码不同的程序流。否则,程序进程的不一致性可能会引起不可预见的后果直至损坏测试车辆、模拟器或检测台。
这种情况例如通过下述方式防止:将覆盖存储器的(去)激活耦联到相关区域之外的存储地址上。
用户不能直接引起两个功能之间的切换,而是用户优选借助于在所连接的计算机上运行的软件根据其愿望来通知激活或去激活,并且一旦处理器到达固定的、被认为是安全的存储地址(即位于相关区域之外的地址),那么所应用的旁路工具(例如经由接口与控制单元连接的影响设备)就执行该激活/去激活。
这例如通过监控程序计数器而是可行的,经由所述程序计数器能够读取当前处理的机器指令的存储地址。此外存在多种其它可能性,如将变量访问用作触发器,由触发器获知其在安全的存储地址上进行或者监控I/O引脚。
一种优选的、特别安全的可能性是应用特殊的、集成到程序代码中的服务函数,该服务函数根据信号引起原始函数和旁路代码之间的切换。
也能够提出,借助于覆盖功能不仅旁路例程覆盖原始的程序代码,而且通过利用覆盖功能而进行该覆盖的去激活/激活,其方式例如是:将在待取代的程序例程之外的程序例程中的指令通过覆盖存储器中的跳转指令覆盖,其中,跳转指令指向下述地址,自该地址起对程序代码编程,所述程序代码重构被覆盖的指令,其中,所述程序代码还为待取代的程序例程执行覆盖功能的去激活/激活,并且所述程序代码以跳转指令结束,该跳转指令指向待取代的程序例程之外的程序例程中的下述指令,该指令跟随被覆盖的指令,尤其是其中通过调用在所述程序代码之内的子程序例程来实现去激活/激活。
因此始终确保,当处理器执行在待取代的程序例程之外的程序代码时,实现去激活/激活。承担去激活/激活的程序代码例如能够将由开始提到的软件或影响设备创建的为此所需的关联关系信息写入到处理器的为此设置的寄存器中。
在根据本发明的设置为在激活的覆盖存储器中存储仅一个跳转指令的解决方案中也能够提出,激活可靠地进行,使得在将跳转指令存储在覆盖存储器中之前,该跳转指令指向覆盖存储器之外的存储地址,自该地址起存储旁路例程,在覆盖存储器中存储整个待取代的程序例程的或者整个待取代的程序例程部分的重构,并且通过该重构激活用于覆盖整个待取代的程序例程的或者整个待取代的程序例程部分的覆盖功能。
因此引起:通过激活首先不发生任何功能改变,即在激活后通过处理器精确地执行与在激活之前相同的程序代码。如果现在在激活的覆盖存储器的地址上存储有已提及的跳转指令,那么引起:在执行下一程序例程时处理器在其执行时被引导转到位于覆盖存储器之外的旁路例程上。在此,实际切换到旁路例程上因此不通过激活覆盖功能进行,而是通过将跳转指令存储在相关联的覆盖存储区域中的第一地址上进行,这优选又通过软件实现,该软件在经由已提及的接口与控制单元连接的计算机上运行。
在考虑安全地去激活/激活用于至少部分地待取代的程序例程的覆盖功能的情况下,本发明能够提出存储旁路例程的多个实施方案。
例如能够提出,在旁路例程的程序代码长度小于待取代的程序例程或待取代的程序例程部分的程序代码长度的情况下,只读存储器中的被待取代的程序例程或待取代的程序例程部分占用的整个地址区域在覆盖存储器中通过等长的地址区域覆盖,进行取代的旁路例程至少部分地优选在该情况下完全地存储在该等长的地址区域中。在优选情况下,则仅使用用于旁路例程的覆盖存储器。
在旁路例程的程序代码长度大于待取代的程序例程或待取代的程序例程部分或可用的覆盖存储器的程序代码长度的情况下,只读存储器中的被待取代的程序例程或待取代的程序例程部分占用的整个地址区域能够在覆盖存储器中通过等长的地址区域来覆盖,在该等长的地址区域中存储旁路例程的至少一个第一部分,该第一部分以跳转指令结束,该跳转指令引起处理器在程序执行时在通过跳转指令指定的地址处继续运行,自该地址起存储旁路例程的至少一个另外的部分。该至少一个另外的旁路例程部分则能够例如也存储在覆盖存储器之外,例如存储在工作存储器中。
该实施方案此外能够提出,在通过旁路例程取代整个程序例程时,该旁路例程以跳转指令、尤其以向回跳转指令结束,该跳转指令引起处理器在执行程序时返回下述程序例程,该程序例程调用待取代的程序例程,尤其是作为子程序例程调用。因此常见的是,在子程序被调用时,在“Gosub”指令的意义下自动地通过处理器存储程序计数器读数,该程序计数器读数相应于该指令的地址位置,并且通过“Return”指令作为处理器的向回跳转指令返回下一个在该位置上紧接着的指令。
而如果仅取代一部分程序例程,那么旁路例程也能够以跳转指令结束,该跳转指令引起处理器在原始的程序例程的下述指令的情况下继续执行程序,该指令跟随待取代的部分。在此,跳转指令通常包括下述参数,所述参数代表绝对的或相对的地址说明,也就是说,恰好是处理器为了进一步执行程序应跳转到的地址。
一个实施方式也能够提出,整个旁路例程存储在激活的覆盖存储器之外的存储区域中,并且在覆盖存储器中的待取代的程序例程的地址处的指令用跳转指令覆盖,该跳转指令引起处理器在执行时在下述地址处继续运行,所述地址通过跳转指令指定并且自该地址起存储旁路例程,该旁路例程以向回跳转指令结束,该向回跳转指令引起处理器返回到下述程序例程,所述程序例程调用待取代的程序例程,尤其是作为子程序例程调用,如这在之前已经描述的那样。
另一方面,本发明还致力于一种用于改变电子控制单元的存储器中的软件的计算机系统,其中,所述存储器包括至少一个只读存储器,所述只读存储器具有存储在其中的并且形成所述软件的至少一部分的多个原始的程序例程,所述原始的程序例程通过所述控制单元的至少一个处理器执行;所述存储器具有用于存储易失性数据的至少一个工作存储器;并且所述存储器还具有覆盖存储器,其中,所述电子控制单元还具有覆盖功能,并且所述覆盖功能构造为使得所述覆盖存储器中的每个存储地址能够借助于关联关系信息与所述只读存储器中的存储地址相关联,以至于所述处理器在覆盖功能被激活时代替执行在所述只读存储器中的地址处的程序例程指令而是执行在所述覆盖存储器的相关联的地址处的指令,其中,该计算机系统设置为,经由所述电子控制单元的第一接口将程序例程指令写入所述存储器中并且经由所述电子控制单元的第二接口使所述处理器具有关联关系信息并激活和去激活所述覆盖功能,其特征在于,该计算机系统设置为,在所述覆盖存储器中的地址区域中写入旁路例程的至少一个功能性部分,或者在所述存储器的地址区域中或所述处理器能访问的另一存储器的地址区域中写入旁路例程的至少一个功能性部分并且在所述覆盖存储器的地址中写入跳转指令,该跳转指令指向所述旁路例程的功能性部分,并且该计算机系统还设置为,为所述处理器配设关联关系信息,所述关联关系信息将所述覆盖存储器的地址和/或地址区域与待取代的程序例程的地址或地址区域相关联,所述处理器在覆盖功能被激活时代替执行所述原始的程序例程而是执行所述旁路例程。
优选地,该计算机系统设置为,在所述电子控制单元的运行时间期间,执行所述旁路例程的写入、为所述处理器配以关联关系信息的配设以及所述覆盖功能的激活和去激活。
优选地,该计算机系统构造为实施上述方法。
优选地,该计算机系统构造为影响设备,其中,该影响设备还能够与计算机这样连接,使得能够借助于存储在所述计算机上的软件控制所述旁路例程的写入以及所述覆盖功能的激活和去激活。
附图说明
下面借助于附图描述实施例。
图1简示出旁路方案的技术结构;
图2示出在应用根据本发明的方法之前的开发控制单元;
图3示出在应用根据本发明的方法之后的开发控制单元,其中旁路函数小于原始函数;
图4示出在应用根据本发明的方法之后的开发控制单元,其中旁路函数大于原始函数;
图5示出根据本发明的方法的实施方案,该实施方案仅需要小的覆盖存储器资源;
图6示出根据本发明的方法的实施方案,其中旁路代码不代表完整的函数;
图7示出利用根据本发明的方法将服务函数示例性地集成到控制单元代码中;
图8示出利用根据本发明的方法将函数调用补充地集成到控制单元代码中。
具体实施方式
图1简示出根据现有技术的典型的旁路方案。被测试的是电子控制单元ECU。所述电子控制单元至少具有:只读存储器SP,其通常为闪存存储器;非易失性工作存储器RAM;以及处理器C,该处理器能够经由数据线访问这两个存储器。在只读存储器SP上存在以机器语言编码的计算机程序,所述计算机程序确定该控制单元的功能。如果该控制单元例如用于安装在汽车中,那么其能够是用于调控马达的程序。该控制单元还具有接口,经由所述接口能够接收传感器或其它控制单元的数据并且将这些数据借助于存储在只读存储器SP上的、通过处理器C执行的计算机程序来评估,以及将由所述程序产生的数据转送给其它控制单元和执行器。
优选地,ECU为开发控制单元,该开发控制单元不用于构造在已制成的产品中的系列。与此相应地,其具有一定数量的另外的接口,这些接口能够实现使软件开发者和测试者经由已提及的基本功能对控制单元进行访问。其中例如包括:用于对只读存储器SP和工作存储器RAM进行直接访问的接口;用于配置处理器C的接口;用于读取程序计数器的接口,所述程序计数器输出当前由处理器C处理的存储地址;或者用于设定和配置断点和观察点的接口。
在典型的方案中,控制单元ECU经由接口连接到总线BUS上。当控制单元ECU例如装在测试车辆中时,总线BUS能够是另外的控制单元的网络。但是总线BUS也能够是虚拟的控制单元的网络,所述虚拟的控制单元在硬件在环(HIL)仿真器上进行模拟。与总线的通信能够经由不同的总线系统发生。大多数情况下,总线为在汽车工业中建立的CAN总线。但是其它标准也是可行的,如LIN、以太网或FlexRay。
控制单元ECU还与影响设备GSI连接。影响设备GSI(例如dSPACE DCI-GSI1)是硬件接口,其允许用户对已提及的开发接口进行访问。控制单元ECU经由影响设备GSI与计算机PC连接。在该计算机上运行软件,所述软件构造用于实现旁路代码和用于配置控制单元ECU并且例如为用户提供相应的图形用户界面。
影响设备GSI用于操控和监控控制单元ECU,尤其用于配置处理器寄存器和读取程序计数器。所连接的计算机PC不对控制单元ECU进行直接访问。计算机将由用户发起的改变愿望(如激活或去激活覆盖功能)通知给影响设备GSI,该影响设备然后自动地相应重新配置控制单元ECU。
在图1中示出的结构是示例性的并且对于根据本发明的方法是非限制性的。因此影响设备GSI的功能例如能够以服务函数的形式部分地或完全地分派给控制单元的处理器C。尤其当控制单元ECU具有多于一个的处理器(即多核)时,第一处理器处理所有程序例程,这些程序例程是控制单元的在制造商方面设置的功能的一部分,而第二处理器并行处理后续安装的、属于旁路环境的服务函数,在此并不停止第一处理器。
一旦所有旁路例程被加载并且根据本发明制备控制单元ECU,那么所连接的PC也能够根据应用情况可能被弃用。如果例如影响设备GSI或主管的服务函数构造为,使得在激活或去激活覆盖功能的愿望借助于控制单元的或影响设备GSI的I/O引脚的电压状态来通知,那么也能够借助于所连接的电开关进行在原始代码和旁路例程之间的切换。
根据本发明,“旁路环境”表示图1中的组件的全部,其超出控制单元ECU的基本功能(执行控制单元代码、与总线BUS通信),即影响设备GSI、计算机PC、配置和旁路软件以及接口(已提及的软件经由所述接口与控制单元通信)。
图2示意地示出一种开发控制单元ECU,该开发控制单元具有:处理器C;只读存储器SP,通常为闪存存储器;和工作存储器RAM。在处理器C中集成有覆盖存储器OV和一组寄存器R。处理器C包括逻辑门阵列,其构成为使得借助于寄存器R能够限定在只读存储器SP和工作存储器RAM中的存储地址区域,该存储地址区域的内容由处理器C在执行程序时忽略并且被覆盖存储器OV的内容取代。
在每次存储器访问时,处理器检查:当前读取的机器指令的地址是否位于由寄存器R检测到的存储区域中。如果是这种情况,那么存在那里的内容被忽略,并且代替于此读取并且执行位于覆盖存储器OV的相关联的地址上的内容。以这种方式,各个内容/指令或者还有较长的序列能够暂时去激活并且被其它内容/指令序列取代,而不必覆盖只读存储器SP中的原始序列。
在该图中示出的配置是示例性的并且不对本发明进行限制。其它设计方案是可行的。例如,覆盖存储器OV也可能是工作存储器RAM的为了该目的预订的地址区域或者是处理器C的其它可寻址的存储区域。工作存储器RAM和只读存储器SP也都能够集成到处理器C中。哪些存储区域恰好能够被覆盖存储器OV覆盖也能够根据控制单元或所应用的处理器而变化。在一个单元中其也许是所有通过处理器可寻址的存储区域,包括只读存储器、RAM和外部的存储介质;在另一单元中其也许是可寻址的存储器的仅一部分。
在只读存储器SP上存在以机器语言编码的程序,其包括三个程序函数:f1、engine_idle_rev和f3。(数字三用于绘图的可示出性。实际的控制单元程序通常由几百个函数构成。)
在实际的示例场景中,控制单元ECU是马达控制单元,并且函数engine_idle_rev是用于调控空转转速的函数。为了减少燃料消耗而有意义的是,将马达的空转转速保持为尽可能低,即接近恰好还足以维持马达运行的转速。但是所述值不是用于每个马达型号的常数,而是变量,即由多个可改变的因素确定的值。对此除了马达型号还包括例如电池的充电水平、经过耗电器的瞬时电池载荷或马达温度。相应于多个难以量化的影响因素存在大的优化潜力。用于调控空转转速的函数的程序员不能排除具有安全性的更好的解决方案的存在。在一个场景中,从供应商获得已完成编程的开发马达控制单元的汽车制造商可能具有下述愿望:使在所述控制单元上实现的用于调控空转转速的函数部分地被另一函数取代。
在另一场景中,汽车制造商可能会想要扩展控制单元的功能。例如他可能希望将他的汽车型号构成为具有在停车时的切断自动装置。因为存在于控制单元上的现有的用于调控空转转速的函数不具有这样的功能,因此汽车制造商会想要将该函数通过独有的函数取代并且为了这个目的而尝试其独有的函数的多个变型方案。
用户通常不具备源代码。根据现有技术,用户必须从存储器SP读取十六进制代码、设置旁路服务、添加旁路代码和重写闪存。将旁路函数通过函数的第三变型方案取代又将会引起重新写入闪存等。对此的耗时是高的。
根据本发明的方法允许函数engine_idle_rev在没有特殊制备控制单元ECU并且不修改存储在闪存SP上的代码的情况下被另一函数取代。图3示出在应用本方法之后的控制单元。寄存器R配置为,使得覆盖存储器OV的地址区域覆盖待取代的函数engine_idle_rev。在该地址区域中存在由用户存储的旁路函数eir_byp,该旁路函数现在代替原始函数由处理器调用。
在覆盖函数被激活时,只读存储器(或工作存储器)中的各个地址分别与覆盖存储器中的地址相关联。被覆盖的存储器和被指派的覆盖存储器因此始终是相同大小的。只要被指派的覆盖存储器中的旁路代码通过并且由完整的函数构成,那么从中不产生任何问题。旁路函数以return指令结束,该指令将处理器向回引导到所调用的母函数,并且程序正常继续运行。而如果旁路函数大于原始函数,那么所述旁路函数不完全集成到覆盖存储器中。
图4示出在该情况下的可行方法。所指派的覆盖存储器在这种情况下对于完全接收旁路函数而言过小。其至少一部分因此分拆到工作存储器中。跳转指令确保一致的程序运行。也可行的是,将功能性的旁路代码完全分拆到不设置作为覆盖存储器的存储区域中,例如分拆到工作存储器RAM中,并且在激活的覆盖存储器中仅写入一个指向功能性的旁路代码的跳转指令。
在一些开发控制单元中,覆盖存储器也许仅设计为用于覆盖小数量的个别指令,并且对于存储较长的代码序列而言过小。或者函数eir_byp的分配在技术上例如由于对用于编译函数的编译器的限制而是不可行的。图5示出用于这种情况的方法。不覆盖完整的原始函数,而是仅覆盖短的序列,优选在其开始处或在另一适宜的位置处。覆盖存储器中所指派的存储区域包含仅一个到分拆到工作存储器RAM中的旁路函数的跳转指令。
在实践中,覆盖存储器的分配并不总是可自由选择的,如在所示出的示例中隐含假定的那样。在此,多个开发控制单元受到限制,例如:连续的覆盖存储区域的字节大小必须是二的乘方,或者可分配的存储区域被分为多个字节的不可分区间。在根据本发明的方法的应用中这意味着:所分配的覆盖存储器通常必须可选地大于或小于实际的期望。对于本发明的可应用性,该情况不是限制性的。在所分配的覆盖存储器过小时能够应用在图4或图5中示出的方法。在所分配的覆盖存储器过大时,所分配的覆盖存储器的所有存储地址(其覆盖根据本发明设置用于覆盖的存储区域之外的存储地址)分别用被覆盖的存储地址的内容的精确副本填充,以至于对于处理器C在该位置上是执行原始代码还是执行存于所分配的覆盖存储器中的代码而言不存在差别,因为这两者是一致的。在本发明的意义下无关紧要的是:覆盖存储器在开始时是否被合适地分配,或者覆盖存储器的一部分是否首先被不期望地分配并且然后以所描述的方式被有效地再次去激活。
在所有迄今为止观察的示例中假定,旁路代码由完整的函数构成。因为控制单元代码由软件组件构建,这在实践中通常也是这种情况。软件组件是已编译的函数或是具有已记录的功能和已记录的接口的少量函数的束,其通常根据图形编程的原理(例如借助dSPACE SystemDesk)而组合成程序。只要组件的接口和重要功能是已知的(相应的文件附在每个组件中),就不需要了解组件的代码。这种工作方式建立在控制单元编程中。因此,通常假定旁路代码也由组件(即至少一个完整的函数)构成。但是原则上没有异议的是,借助于在该通知中描述的方法不设有整个函数或软件组件,而是仅设有具有旁路的较短的代码序列。
图6示出这样的旁路的实施方案。寄存器R配置为使得覆盖存储器OV覆盖在函数engine_idle_rev之内的机器指令的序列,例如以便取代函数engine_idle_rev的部分功能,如计算特定的值或写入专用变量。因为与此相应地,旁路代码也没有写入完整的函数,所以缺少结束的return指令。旁路代码必须因此补充结束的跳转语句,该跳转语句使处理器C再次返回到常规的程序例程中。在附图中,旁路代码小于被覆盖的原始代码。但是因为预订的覆盖存储器始终与被覆盖的存储器一样大,所以所预订的覆盖存储器的一部分保持不被写入。一旦处理器C到达未写入的第一地址,那么没有跳转语句会导致未定义的行为。
可选地可行的是,预订的、但是未被使用的覆盖存储器用空指令(NOP=NoOPeration)或者其它对于函数流程不重要的指令填充。因为其执行但是通常比执行原始代码(包含if语句的程序代码,因此被选择性地执行)持续时间更长,所以在图5中示出的方法具有跳转语句通常是优选的。
如果旁路代码序列大于原始代码序列,那么如在图4中所示出的那样,代码的一部分被分拆到工作存储器RAM或者其它可用的存储器中。但是在这种情况下旁路代码也必须以结束的跳转语句扩展。
在所有已提出的方法中确保,在激活或去激活覆盖存储器的时间点,不执行与通过覆盖存储器进行覆盖相关的并且与被覆盖的或进行覆盖的代码不同的代码。对于在图3中简示出的示例,这意味着,覆盖存储器仅在恰好不执行函数engine_idle_rev中的代码时才允许被激活。反之,仅在不执行函数eir_byp中的代码时才允许其去激活。
否则处理器在执行函数代码中间从一个函数跳转到其它函数,因此有效地执行新的、高概率的、不重要的函数,其组成两个函数的代码中的各一部分。或者其在已经离开由函数eir_byp覆盖的存储区域时将会跳转到所预订的覆盖存储器的未写入的区域中。甚至可能的是,在指令中间发生变换,同样由原始代码和旁路代码组成的指令部分组合成新的、同样高概率的、不重要的指令。结果是在几乎每种情况下控制单元的不可估量的故障函数可能会造成严重后果。
旁路环境为了该目的构成为,使得旁路环境的用户根据愿望通知激活或去激活旁路例程。
其在下述时间点被执行,在该时间点处理器处理被认为安全的存储地址。这例如能够通过监控程序计数器和评估另外的信息单元(例如专用的寄存器或Call Stack)来确保,所述程序计数器转送由处理器当前处理的存储地址,所述另外的信息单元包含借助于interrupt来中断的程序例程的向回跳转地址。所述信息例如能够经由Debug接口(例如JTAG-Debug接口)主动地读取或者经由程序跟踪接口被动地被监控,处理器经由所述程序跟踪接口发送当前执行的指令的存储地址。
除了读取程序计数器,另一可能性是将覆盖存储器的(去)激活耦联到触发事件上,由所述触发事件已知其仅在被认为安全的存储地址处发生。所述触发事件例如能够是对特定变量的访问或者对特定I/O引脚的操控。重新配置用于(去)激活覆盖存储器的寄存器的持续时间明显短于控制单元的典型程序周期。在旁路代码和原始代码之间的切换因此在不停止控制单元的情况下是可行的。但是为此处理器必须恰好处理下述地址,该地址确保与通过覆盖相关的函数的充分的时间间隔。
因此,从开始激活或去激活覆盖功能直至下一次调用函数必须经过这样长的时间段,即激活或去激活通过重新配置寄存器R到那时安全地结束。所述方法因此需要预先分析二进制代码,以便找到相关函数的所有调用并且指定允许安全地激活或去激活覆盖功能的存储地址。替选地,一旦处理器处理与(去)激活覆盖存储器不相关的代码,那么控制单元能够直至结束切换被停机。但是处理器的停机通常是不期望的,因为为此大多数情况下也必须将整个系统(仿真器、检测台或测试车辆)停机。例如马达控制单元通常不允许在马达仍运行期间被停机。
特别安全的进而优选的方法是通过服务函数激活或去激活覆盖功能,所述服务函数优选就其自身而言通过利用覆盖存储器而集成到程序代码中,在此不改变原始代码。
图7示出这样的服务集成如何运行。在工作存储器RAM或其它可用的存储器中除了本来的旁路函数eir_byp还存在服务函数Z,该服务函数能够利用覆盖存储器OV集成到程序代码的任意位置处,尤其是集成到待通过覆盖取代的例程之外。该图示出到函数f1中的集成。短的代码序列借助于覆盖由跳转语句取代,该跳转语句在工作存储器RAM中的地址上显示。在那里首先重构被覆盖的代码并且将其以调用服务Z补充。接着是另一跳转语句,该跳转语句将处理器C再次引回到常规的程序流程中。服务函数包含用于重新配置处理器寄存器R的指令,该处理器寄存器联系到下述条件上,例如联系到可经由接口写入的控制变量或控制单元ECU的输入引脚的信号电平上。在本发明的该实施方案中,用户不需要考虑在哪个时间点重新配置寄存器R。这安全地在所集成的、不属于本来的程序代码的服务函数之内发生。反过来,在该时间点,安全地不执行属于程序的函数并且不执行旁路函数。为了防止通过处理器中的Interrupt处理来中断服务函数或中断对于重新配置覆盖区域关键的服务函数序列,服务代码能够确保这样的中断不能在该关键的序列中进行。
激活用于集成服务函数Z的覆盖功能在通过处理器C借助于控制单元ECU的为此设置的接口开始执行待改变的程序代码之前进行,例如直接在接入控制单元ECU之后或者在控制单元程序的初始化阶段期间进行。在另一实施方案中,在图7中示出的服务函数Z也能够是传统的服务函数,该服务函数调用优选存于工作存储器RAM中的旁路函数。所述旁路函数在一个实施方案中会将其值首先写入缓冲存储器中。之后原始函数完全正常地运行,并且在其运行之后将会借助第二服务调用来调用覆盖函数,该覆盖函数将由原始函数写入的值用缓冲存储器的值覆盖。
如果控制单元ECU具有多于一个的处理器核,那么能够有利的是,原始函数engine_idle_rev和旁路函数eir_byp在两个处理器核上并行计算。也就是,第一处理器核执行存储在闪存存储器SP上的控制单元程序包括原始函数engine_idle_rev,而第二处理器核在调用旁路函数eir_byp之后并行执行该旁路函数eir_byp。以这种方式能够通过集成附加的函数最小化所发生的运行时间延长,所述运行时间延长能够不利地影响控制单元ECU的可实时性。尤其在时间关键的任务如控制马达时,该设计方案被视为是有利的。
图8示出根据本发明的方法的另一优选的实施例。根据图7中提出的方法,由函数f1进行的原始程序函数engine_idle_rev的调用以调用旁路函数eir_byp补充。以这种方式,两个函数(首先原始函数,然后旁路函数)通过处理器C执行,其中,对于控制单元程序的另外的执行仅应用两个函数之一的输出值。以这种方式可行的是,将两个函数(即最初安装在控制单元ECU上的函数engine_idle_rev和为了取代该函数而设置的旁路函数eir_byp)直接相互比较,或者将engine_idle_rev的输出值提供给旁路函数eir_byp,以用于处理或验证。其可以是eir_byp的函数范围的一部分,以便决定是否应用独有的输出值或者应用在程序执行的进一步过程中的原始程序函数的输出值。例如,eir_byp能够根据可通过用户操纵的参数的值来存储其独有的输出值以用于稍后的分析,而不将其提供给后续的程序例程,或者覆盖由engine_idle_rev写入的输出值。其也能够是eir_byp的函数范围的一部分,eir_byp存储由engine_idle_rev写入的输出值以用于稍后的分析。
本发明的一个变型方案也能够提出,首先将原始函数的一比一副本写入到覆盖存储器OV中。在覆盖存储器中存储的函数的第一指令然后通过return取代并且随后激活覆盖存储器。这去激活待取代的函数。一旦确保没有程序代码在覆盖存储器中被执行,例如通过监控程序计数器或者也简单地通过短暂等待而执行,就将存储在覆盖存储器中的函数通过旁路代码取代,其中仅在最后才写入return指令。该变型方案仅在待取代的函数能够被简单地去激活时才可实施,而不会危险地影响控制单元的函数。常常就是这种情况。
另一变型方案能够提出,将原始函数的一比一副本写入到覆盖存储器OV中。旁路函数首先被写入到可用的、不设置作为覆盖存储器的存储区域中,优选在工作存储器RAM中。在第二步骤中,将覆盖存储器中的代码的第一指令用跳转语句覆盖到旁路函数上。现在能够在没有其它安全措施的情况下在原始代码和旁路代码之间切换,因为两个代码除了跳转语句都是相同的。
该变型方案只有在能够将跳转语句表达为原子指令时并且在待覆盖的位置上在原始程序代码中同样存在原子指令时才能够安全地实施,以至于“在指令中间”的切换是不可行的。常常就是这种情况。
在本发明的实施方式中能够提出,通过对存储器管理单元(MMU)重新编程构成覆盖存储器,多种开发控制单元具有所述存储器管理单元。借助于MMU能够将逻辑存储地址与物理存储地址相关联。根据本发明因此可行的是,能够以旁路代码写入空出的物理存储区域并且然后将MMU重新编程为使得与待取代的代码相关联的逻辑存储地址在对MMU重新编程之后在旁路代码上显示。
因此借助MMU能够覆盖存储区域,尤其例如借助覆盖单元,即通过应用逻辑存储地址的两个不同的关联关系,使得同一组逻辑存储地址在待取代的代码上或者在旁路代码上显示。
所有在文本中列出的方法与覆盖存储器是本地可用的还是通过对MMU进行编程而形成无关地适用。只要MMU提供足够的功能,那么是用处理器的覆盖函数写入寄存器还是用关联关系信息写入MMU以便激活覆盖功能对于本发明而言就是无关紧要的。足够的功能尤其理解为,MMU的配置在控制单元的正在进行的操作中是可改变的。
Claims (32)
1.一种用于改变电子控制单元(ECU)的存储器中的软件的方法,其中,所述存储器包括至少一个只读存储器(SP),所述只读存储器具有存储在其中的并且形成所述软件的至少一部分的多个原始的程序例程,所述原始的程序例程通过所述控制单元(ECU)的至少一个处理器(C)执行;所述存储器具有用于存储易失性数据的至少一个工作存储器(RAM);并且所述存储器还具有覆盖存储器(OV),其中,所述覆盖存储器(OV)中的每个存储地址能够借助于关联关系信息与所述只读存储器(SP)中的存储地址相关联,以至于所述处理器(C)在覆盖功能被激活时代替执行在所述只读存储器(SP)中的地址处的程序例程指令而是执行在所述覆盖存储器(OV)的相关联的地址处的指令,
其特征在于,在所述覆盖存储器(OV)中的地址区域中存储旁路例程的至少一个功能性部分,借助所述旁路例程应至少部分地取代所述原始的程序例程;或者在所述覆盖存储器(OV)中存储作为旁路例程的第一部分的跳转指令,所述跳转指令直接或间接地指向旁路例程的第二部分,该第二部分存储在所述处理器能访问的地址区域内,并且
为了激活覆盖功能而创建关联关系信息,所述关联关系信息将所述覆盖存储器的地址和/或地址区域与待取代的程序例程的或待取代的一部分程序例程的地址或地址区域相关联,并且所述关联关系信息能够经由所述控制单元的接口激活或去激活,并且
所述覆盖功能的激活在下述时间点进行,即在该时间点通过激活所述覆盖功能待取代的机器代码不通过所述控制单元的处理器来执行。
2.根据权利要求1所述的方法,其特征在于,在所述控制单元(ECU)的运行时间期间,在所述覆盖存储器(OV)中的地址区域中存储旁路例程的至少一个功能性部分,借助所述旁路例程应至少部分地取代所述原始的程序例程;或者在所述覆盖存储器(OV)中存储作为旁路例程的第一部分的跳转指令,所述跳转指令直接或间接地指向旁路例程的第二部分,该第二部分存储在所述处理器能访问的地址区域内。
3.根据权利要求1所述的方法,其特征在于,所述只读存储器中的被待取代的程序例程或者待取代的一部分程序例程占用的整个地址区域通过所述覆盖存储器以等长的地址区域覆盖,在所述等长的地址区域中至少部分地存储进行取代的旁路例程。
4.根据权利要求1所述的方法,其特征在于,在旁路例程的程序代码长度大于待取代的程序例程的程序代码长度或大于待取代的一部分程序例程的程序代码长度的情况下,所述只读存储器中的被待取代的程序例程或待取代的一部分程序例程占用的整个地址区域在覆盖存储器中通过等长的地址区域来覆盖,在所述等长的地址区域中存储旁路例程的第一部分,该第一部分以如下跳转指令结束,即该跳转指令引起处理器在程序执行时在由所述跳转指令指定的地址处继续运行,自该指定的地址起存储所述旁路例程的至少一个另外的部分。
5.根据权利要求3或4所述的方法,其特征在于,在取代整个程序例程时,所述旁路例程以如下向回跳转指令结束,即该向回跳转指令引起所述处理器在执行程序时返回下述程序例程,即该程序例程调用待取代的程序例程;或者在取代仅一部分程序例程时,所述旁路例程以如下跳转指令结束,即该跳转指令引起所述处理器在所述原始的程序例程的下述指令的情况下继续执行程序,即所述指令跟随待取代的所述一部分程序例程。
6.根据权利要求5所述的方法,其特征在于,在取代整个程序例程时,所述向回跳转指令引起所述处理器在执行程序时返回下述程序例程,即该程序例程调用待取代的程序例程作为子程序例程。
7.根据权利要求1所述的方法,其特征在于,旁路例程的整个功能性代码存储在激活的覆盖存储器之外的存储区域中,并且在待取代的程序例程的地址处的指令或日期借助于覆盖存储器用如下跳转指令覆盖,即该跳转指令引起所述处理器在执行时在下述地址处继续运行,即该地址通过所述跳转指令指定并且自该地址起存储所述旁路例程的功能性代码,该功能性代码以向回跳转指令结束,该向回跳转指令引起所述处理器返回到下述程序例程,即该程序例程调用待取代的程序例程。
8.根据权利要求7所述的方法,其特征在于,所述向回跳转指令引起所述处理器返回到下述程序例程,即该程序例程调用待取代的程序例程作为子程序例程。
9.根据权利要求1所述的方法,其特征在于,所述旁路例程的功能性代码存储在激活的覆盖存储器之外的存储区域中,并且在待取代的程序例程的地址处的指令在覆盖存储器中用如下跳转指令覆盖,即该跳转指令引起所述处理器在执行时在下述地址处继续运行,即该地址通过所述跳转指令指定,其中,所述跳转指令指向下述地址,即自该地址起程序代码还执行所述旁路例程的功能性代码的调用。
10.根据权利要求9所述的方法,其特征在于,所述旁路例程的功能性代码的调用在于所述程序代码之内被调用的子程序例程之内进行。
11.根据权利要求1所述的方法,其特征在于,通过执行所述激活的逻辑,所述控制单元的处理器的程序处理位置被监控,并且所述激活在下述时间点进行,即在该时间点所述程序处理位置指向待取代的程序例程之外的地址。
12.根据权利要求11所述的方法,其特征在于,所述控制单元的处理器的程序处理位置借助程序计数器监控。
13.根据权利要求1所述的方法,其特征在于,通过执行所述激活的逻辑,触发/断开得以监控,所述触发/断开通过设置在待取代的程序例程之外的程序代码设定,并且所述激活在确定所述触发/断开发生变化时进行。
14.根据权利要求11至13中任一项所述的方法,其特征在于,执行所述激活的逻辑在经由接口连接的影响设备上运行。
15.根据权利要求13所述的方法,其特征在于,所述触发通过变量访问或者I/O引脚的状态变化构成。
16.根据权利要求1所述的方法,其特征在于,所述激活通过由所述控制单元的处理器调用的子程序例程来实施。
17.根据权利要求1所述的方法,其特征在于,在待取代的程序例程或待取代的一部分程序例程之外的程序例程中的指令通过所述覆盖存储器中的跳转指令覆盖,其中,所述覆盖存储器中的跳转指令指向下述地址,即自该地址起对程序代码编程,该程序代码重构被覆盖的指令,该程序代码还执行用于待取代的程序例程的覆盖功能的去激活/激活,并且该程序代码以下述跳转指令结束,即该跳转指令指向在待取代的程序例程之外的程序例程中的下述指令,即该指令跟随被覆盖的指令。
18.根据权利要求17所述的方法,其特征在于,所述激活通过调用在所述程序代码之内的子程序例程来实现。
19.根据权利要求1所述的方法,其特征在于,存储在激活的覆盖存储器中的代码中的一部分精确重构存储在只读存储器的各相关联的存储地址中的代码。
20.根据权利要求1所述的方法,其特征在于,所述关联关系信息的创建和所述覆盖功能的激活借助于连接到所述控制单元的接口上的影响设备或连接到所述控制单元的接口上的计算机实现。
21.根据权利要求1所述的方法,其特征在于,所述关联关系信息的创建和/或所述覆盖功能的激活借助于通过所述控制单元的处理器执行的程序例程实现。
22.根据权利要求21所述的方法,其特征在于,所述控制单元具有至少两个处理器核,其中,用于创建所述关联关系信息和/或激活所述覆盖功能的程序例程由第一处理器核执行,并且所述原始的程序例程由第二处理器核或者由多个另外的处理器核执行。
23.根据权利要求1所述的方法,其特征在于,所述旁路例程包含至少一个完整的、以向回跳转指令结束的函数。
24.根据权利要求1所述的方法,其特征在于,所述旁路例程或所述一部分旁路例程经由所述控制单元的接口存储在通过所述处理器可寻址的存储区域中。
25.根据权利要求24所述的方法,其特征在于,在所述控制单元的运行时间期间,所述旁路例程或所述一部分旁路例程经由所述控制单元的接口存储在通过所述处理器可寻址的存储区域中。
26.根据权利要求1所述的方法,其特征在于,在程序例程中的至少一个指令通过在所述覆盖存储器中的跳转指令覆盖,其中,所述跳转指令指向下述地址,即自该地址起对程序代码进行编程,该程序代码重构被覆盖的指令,该程序代码还调用功能性的旁路例程,并且该程序代码以如下跳转指令结束,即该跳转指令指向所述程序例程中的下述指令,即该指令跟随被覆盖的指令。
27.根据权利要求26所述的方法,其特征在于,所述控制单元具有至少两个处理器核,并且至少所述旁路例程的功能性代码由一个或多个第一处理器核执行,并且所述原始的程序例程由一个或多个第二处理器核执行。
28.根据权利要求1至4、6至13、15至27中任一项所述的方法,其特征在于,通过对控制单元的存储器管理单元进行编程而在该控制单元上构成覆盖存储器,使得在去激活覆盖功能时与待取代的程序例程或待取代的一部分程序例程相关联的逻辑存储地址在激活覆盖功能时与物理存储地址相关联,所述物理存储地址在其整体中包含所述旁路例程的至少一部分。
29.一种用于改变电子控制单元(ECU)的存储器中的软件的计算机系统,其中,所述存储器包括至少一个只读存储器(SP),所述只读存储器具有存储在其中的并且形成所述软件的至少一部分的多个原始的程序例程,所述原始的程序例程通过所述控制单元(ECU)的至少一个处理器(C)执行;所述存储器具有用于存储易失性数据的至少一个工作存储器(RAM);并且所述存储器还具有覆盖存储器(OV),其中,所述电子控制单元(ECU)还具有覆盖功能,并且所述覆盖功能构造为使得所述覆盖存储器(OV)中的每个存储地址能够借助于关联关系信息与所述只读存储器(SP)中的存储地址相关联,以至于所述处理器在覆盖功能被激活时代替执行在所述只读存储器(SP)中的地址处的程序例程指令而是执行在所述覆盖存储器(OV)的相关联的地址处的指令,其中,该计算机系统设置为,经由所述电子控制单元(ECU)的第一接口将程序例程指令写入所述存储器中并且经由所述电子控制单元的第二接口使所述处理器(C)具有关联关系信息并激活和去激活所述覆盖功能,
其特征在于,该计算机系统设置为,在所述覆盖存储器(OV)中的地址区域中写入旁路例程的至少一个功能性部分,或者在所述存储器的地址区域中或所述处理器(C)能访问的另一存储器的地址区域中写入旁路例程的至少一个功能性部分并且在所述覆盖存储器的地址中写入跳转指令,该跳转指令指向所述旁路例程的功能性部分,并且
该计算机系统还设置为,为所述处理器配设关联关系信息,所述关联关系信息将所述覆盖存储器的地址和/或地址区域与待取代的程序例程的地址或地址区域相关联,从而所述处理器(C)在覆盖功能被激活时代替执行所述原始的程序例程而是执行所述旁路例程,并且所述覆盖功能的激活在下述时间点进行,即在该时间点通过激活所述覆盖功能待取代的机器代码不通过所述控制单元的处理器来执行。
30.根据权利要求29所述的计算机系统,其特征在于,该计算机系统设置为,在所述电子控制单元(ECU)的运行时间期间,执行所述旁路例程的写入、为所述处理器(C)配以关联关系信息的配设以及所述覆盖功能的激活和去激活。
31.根据权利要求29或30所述的计算机系统,其特征在于,该计算机系统构造为实施根据权利要求3至28中任一项所述的方法。
32.根据权利要求29或30所述的计算机系统,其特征在于,该计算机系统构造为影响设备(GSI),其中,该影响设备(GSI)还能够与计算机(PC)这样连接,使得能够借助于存储在所述计算机(PC)上的软件控制所述旁路例程的写入以及所述覆盖功能的激活和去激活。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP13005730.0 | 2013-12-09 | ||
EP13005730.0A EP2881857B8 (de) | 2013-12-09 | 2013-12-09 | Verfahren zur Änderung der Software im Speicher eines elektronischen Steuergerätes |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104699478A CN104699478A (zh) | 2015-06-10 |
CN104699478B true CN104699478B (zh) | 2018-02-27 |
Family
ID=49765260
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410698598.6A Expired - Fee Related CN104699478B (zh) | 2013-12-09 | 2014-11-27 | 改变电子控制单元的存储器中的软件的方法和计算机系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9678867B2 (zh) |
EP (1) | EP2881857B8 (zh) |
JP (1) | JP6335771B2 (zh) |
CN (1) | CN104699478B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6675271B2 (ja) * | 2015-09-14 | 2020-04-01 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America | ゲートウェイ装置、車載ネットワークシステム及びファームウェア更新方法 |
DE102016114914A1 (de) * | 2015-11-19 | 2017-05-24 | Dspace Digital Signal Processing And Control Engineering Gmbh | Verfahren zum Betreiben eines Steuergeräts sowie zum externen Bypassing eingerichtetes Steuergerät |
FR3047585B1 (fr) * | 2016-02-09 | 2018-03-09 | Stmicroelectronics (Rousset) Sas | Procede et dispositif de surveillance de l'execution d'un code programme |
DE102016204598A1 (de) * | 2016-03-21 | 2017-09-21 | Robert Bosch Gmbh | Verfahren und Vorrichtung zum Betreiben eines Steuergeräts |
US10936289B2 (en) * | 2016-06-03 | 2021-03-02 | Ab Initio Technology Llc | Format-specific data processing operations |
DE102016211386A1 (de) * | 2016-06-14 | 2017-12-14 | Robert Bosch Gmbh | Verfahren zum Betreiben einer Recheneinheit |
US10496469B2 (en) | 2017-07-25 | 2019-12-03 | Aurora Labs Ltd. | Orchestrator reporting of probability of downtime from machine learning process |
JP2022527266A (ja) | 2019-03-25 | 2022-06-01 | オーロラ ラブズ リミテッド | コード行挙動および関係モデルの発生ならびに署名 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6816377B2 (en) * | 2002-03-28 | 2004-11-09 | Denso Corporation | Electronic control unit |
US7075794B2 (en) * | 2003-09-11 | 2006-07-11 | Motorola, Inc. | Electronic control unit |
CN101286066A (zh) * | 2007-12-28 | 2008-10-15 | 奇瑞汽车股份有限公司 | 一种汽车控制器软件刷新的方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01169629A (ja) * | 1987-12-25 | 1989-07-04 | Fujitsu Ltd | Romパッチ方式 |
US7464248B2 (en) * | 2005-04-25 | 2008-12-09 | Mediatek Incorporation | Microprocessor systems and bus address translation methods |
DE102009018761A1 (de) * | 2009-04-27 | 2010-10-28 | Bayerische Motoren Werke Aktiengesellschaft | Verfahren zur Aktualisierung von Softwarekomponenten |
US9292272B2 (en) * | 2010-12-17 | 2016-03-22 | Telefonaktiebolaget L M Ericsson (Publ) | Differential flash archive installation |
US8949823B2 (en) * | 2011-11-16 | 2015-02-03 | Flextronics Ap, Llc | On board vehicle installation supervisor |
CN105593897A (zh) * | 2013-09-30 | 2016-05-18 | 慧与发展有限责任合伙企业 | 用于修改源数据的数据对象的覆盖 |
-
2013
- 2013-12-09 EP EP13005730.0A patent/EP2881857B8/de active Active
-
2014
- 2014-11-27 CN CN201410698598.6A patent/CN104699478B/zh not_active Expired - Fee Related
- 2014-12-09 US US14/564,958 patent/US9678867B2/en not_active Expired - Fee Related
- 2014-12-09 JP JP2014249264A patent/JP6335771B2/ja not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6816377B2 (en) * | 2002-03-28 | 2004-11-09 | Denso Corporation | Electronic control unit |
US7075794B2 (en) * | 2003-09-11 | 2006-07-11 | Motorola, Inc. | Electronic control unit |
CN101286066A (zh) * | 2007-12-28 | 2008-10-15 | 奇瑞汽车股份有限公司 | 一种汽车控制器软件刷新的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104699478A (zh) | 2015-06-10 |
EP2881857A1 (de) | 2015-06-10 |
JP2015115074A (ja) | 2015-06-22 |
US20150161046A1 (en) | 2015-06-11 |
JP6335771B2 (ja) | 2018-05-30 |
US9678867B2 (en) | 2017-06-13 |
EP2881857B1 (de) | 2018-07-04 |
EP2881857B8 (de) | 2018-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104699478B (zh) | 改变电子控制单元的存储器中的软件的方法和计算机系统 | |
Paiva et al. | A model-to-implementation mapping tool for automated model-based GUI testing | |
CN102707705B (zh) | 用于测试批量配置的方法和装置 | |
US8290755B2 (en) | System for testing at least one electronic control unit and method | |
US20080307264A1 (en) | Parameterized test driven development | |
FR2921170A1 (fr) | Procede de generation automatique de programmes de test d'un logiciel de fonctionnement d'un systeme embarque a bord d'un aeronef, et dispositif de mise en oeuvre | |
CN107710166A (zh) | 利用符号快速错误检测的硅后验证和调试 | |
JP2014203314A (ja) | Ecuシミュレーション装置 | |
JP2021501953A (ja) | エンジンデバッグ、テスト、較正、及び調節を制御するためのソフトウェア環境 | |
JP6257506B2 (ja) | 電子制御装置のメモリ内のソフトウェアを変更する方法 | |
KR20200007133A (ko) | 차량 ecu 소프트웨어 검증을 위한 동적 결함 주입 방법 및 장치 | |
Jaffuel et al. | LEIRIOS test generator: Automated test generation from B models | |
Du et al. | About the functional test of the GPGPU scheduler | |
US8510708B2 (en) | Method for optimizing a control program for actuators | |
CN103049374A (zh) | 一种自动化测试的方法及装置 | |
CN103026339B (zh) | 对微控制器中的软件参数重新配置的方法以及微控制器和控制设备 | |
Martorell et al. | Improving adaptiveness of autosar embedded applications | |
CN100359485C (zh) | 嵌入式系统的测试装置及测试方法 | |
US7058864B1 (en) | Test for processor memory cache | |
CN109144849A (zh) | 一种嵌入式软件调测方法 | |
US7546589B2 (en) | Semi-automated desk checking system and method | |
Bernardi et al. | A new architecture to cross-fertilize on-line and manufacturing testing | |
CN108139723A (zh) | 用于运行控制器的方法以及设置用于外部旁路的控制器 | |
Sun et al. | A model-based testing process for enhancing structural coverage in functional testing | |
Roquette et al. | On the Applicability of Behavior Driven Development for Automotive Software Testing at the Functional Model Level |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180227 Termination date: 20201127 |
|
CF01 | Termination of patent right due to non-payment of annual fee |