背景技术
以已知方式,机动车辆计算机采用除了一个或者多个微处理器之外还包括电子存储器(闪存、EEPROM、RAM等)、接口外设等的微控制器的形式。
在计算机的非易失性存储器中存储由程序代码中的指令集组成的计算机程序产品或者“软件”,微处理器将执行该指令集以便执行所述计算机的各种任务。作为一般规则,在计算机的非易失性存储器中存储三个主要类型的软件如下:
- 在英语文献中称为“引导软件”的软件,将特别在启动计算机时执行用于初始化计算机,
- 在文献中称为“应用软件”的软件,将执行以便执行计算机的具体任务,
- 在英语文献中也称为“加载器软件”的重新编程软件,用于加载新软件,该新软件旨在于替换计算机的可重写非易失性存储器中存储的软件中的一些或所有软件。
也可以在这一情况下称为“引导加载器”的同一款软件中组合引导软件和重新编程软件。
当前,一般在相同的可重写非易失性电子存储器、例如闪存中存储引导软件、重新编程软件和应用软件。
清楚地,如果微处理器从所述闪存直接执行重新编程软件以便修改应用软件和/或引导软件,则这将施加针对闪存的约束,因为所述处理器将需要对所述闪存的内容的同时读取和写入访问。
然而,当前闪存具有用于同时读取和写入访问的有限容量。存在以有限数量的不同分段组织的已知闪存,在这些分段中有可能具有对一个分段的读取访问而具有对另一分段的写入访问。然而写入和读取两者所需的对闪存的相同分段的同时访问并不少见。
为了克服当前闪存的有限同时读取和写入访问容量,存在一种在执行重新编程软件之前从闪存向易失性电子存储器、诸如RAM存储器复制它的已知方式。
然后以微处理器具有对RAM存储器的内容的读取访问和对闪存的内容的写入访问这样的方式从RAM存储器执行重新编程软件。这使得不必具有对闪存的内容的同时写入和读取访问。
然而难以在机动车辆计算机中实施这一方式,因为一般仅提供有限量的RAM存储器以便保持计算机的成本尽可能低。
发明内容
本发明的目的特别是提供一种实现减少RAM存储器要求的技术方案。
在第一方面中,本发明涉及一种通过修改机动车辆计算机的非易失性可重写存储器的内容来对所述计算机重新编程的方法,借助非易失性可重写存储器中存储的重新编程软件执行所述重新编程,将重新编程软件组织成向为了对计算机重新编程而将执行的任务分配的多个软件部件,这些任务的执行由任务定序器(sequencer)启动。根据本发明,将重新编程软件的软件部件预先划分成至少两个集合、即:
- 第一集合,包括将与对非易失性可重写存储器的内容进行修改的操作同时执行的每个软件部件,
- 第二集合,包括重新编程软件的其他软件部件中的一些或者所有软件部件。
此外,在计算机的重新编程期间:
- 计算机的微处理器从非易失性可重写存储器执行第二集合的软件部件,
- 向计算机的易失性存储器中预先复制并且微处理器从所述易失性存储器执行任务定序器和待执行的第一集合的软件部件。
优选地,在两个不同操作模式中执行任务定序器、两个不同操作模式即:称为“标准模式”的第一操作模式,在第一操作模式中执行第一和第二集合的软件部件;以及在对非易失性可重写存储器的内容进行修改的操作中使用的称为“重新编程模式”的第二操作模式,在第二操作模式中仅执行第一集合的软件部件。
优选地,该方法包括:
- 向计算机的易失性存储器中复制任务定序器和待执行的第一集合的软件部件的步骤,
- 从易失性存储器以标准模式执行任务定序器的步骤,
- 确定是否已经接收用于修改非易失性可重写存储器的内容的请求的步骤,
- 如果已经接收用于修改非易失性可重写存储器的内容的请求,则以重新编程模式执行任务定序器的步骤,在该步骤期间执行在请求中标识的修改操作,
- 确定是否有用于修改非易失性可重写存储器的内容的任何未尽(outstanding)操作的步骤,
- 如果无待执行的用于修改非易失性可重写存储器的内容的更多操作,则该方法返回到以标准模式执行任务定序器的步骤。
优选地,如果已经接收用于对非易失性可重写存储器的内容进行修改的请求,则:
- 在标准模式中运行的任务定序器执行用于虚拟修改的软件部件,用于虚拟修改的软件部件向易失性缓冲存储器中复制请求并且将任务定序器切换到重新编程模式,
- 在重新编程模式中运行的任务定序器执行用于实际修改的软件部件,用于实际修改的软件部件的从易失性缓冲存储器读取请求并且执行在请求中标识的修改操作。
优选地,将第一集合的软件部件组织成多个组,每个都与不同的重新编程上下文关联,所述方法包括检测待执行的重新编程的上下文的步骤,向易失性存储器仅复制与检测到的上下文关联的组的第一集合的软件部件。
优选地,用于任务定序器的配置的具体数据与每个重新编程上下文关联,向易失性存储器复制与检测到的上下文关联的所述配置数据,所述方法包括根据所述配置数据配置任务定序器的标准和重新编程模式的步骤。
优选地,重新编程上下文对应于在重新编程期间将在计算机与外部重新编程设备之间使用的不同通信协议。
在第二方面中,本发明涉及一种非易失性可重写电子存储器类型的数据存储介质,该数据存储介质包括重新编程软件指令,重新编程软件指令在由机动车辆计算机的微处理器执行时按照根据本发明的方法执行所述计算机的重新编程。
在第三方面中,本发明涉及一种包括根据本发明的数据存储介质的机动车辆计算机。
具体实施方式
图1以高度地示意的方式示出机动车辆计算机10。
以已知方式,机动车辆计算机10包括通过数据总线108连接到电子存储器104、106的微处理器102。计算机10包括至少一个非易失性可重写存储器104,在该至少一个非易失性可重写存储器中存储将出于执行向所述计算机分配的各种任务的目的而执行的程序代码指令或者软件。计算机10也包括称为“RAM存储器”的至少一个易失性存储器106,在计算机10的操作期间向该RAM存储器中临时地复制数据。应当注意,在某些实施例中向称为微控制器的单个集成电路中集成微处理器102以及闪存104和RAM存储器106。
在本发明的上下文中,借助非易失性可重写存储器104中存储的重新编程软件修改所述非易失性可重写存储器的内容来对计算机10重新编程。术语“修改非易失性可重写存储器的内容”表示向所述非易失性可重写存储器中写入待执行的新软件和/或擦除所述非易失性可重写存储器的部分。
可以在具有用于同时读取和写入(或者擦除)访问的有限容量的非易失性可重写存储器104的情况中看到本发明的特别有利但非限制性应用,非易失性可重写存储器104诸如闪存。在说明书的剩余部分中,将假设讨论的非易失性可重写存储器104是闪存,但是这一假设并非限制。
重新编程软件特别包括任务定序器和软件部件,所述软件部件的执行由所述任务定序器启动。
任务定序器类似于操作***。然而在实践中,机动车辆计算机10的重新编程软件的任务定序器可以是简单程序,该简单程序仅以依序和递归执行向为了重新编程计算机10而将执行的任务分配的某一数量的软件部件。
在原理上,根据本发明的重新编程方法50基于将软件部件初步划分成至少两个子集:
- 第一集合,包括将与对闪存104的内容进行修改的操作同时执行的每个软件部件,以及
- 第二集合,包括重新编程软件的其他软件部件中的一些或者所有软件部件。
在计算机10的重新编程期间,重新编程软件由计算机10的微处理器102执行。
从闪存104执行第二集合的软件部件。向计算机10的RAM存储器106中预先进入并且从所述RAM存储器执行任务定序器和待执行的第一集合的软件部件。
应当注意,第一集合的软件部件未必是在对闪存104的内容进行修改的操作期间唯一执行的软件部件。必须在第一集合中放置并且必须从RAM存储器106执行将与对闪存104的内容进行修改的操作同时执行的每个软件部件。
这样将软件部件划分成两个集合——从RAM存储器106仅执行这些集合中的第一集合——使得有可能减少为了执行计算机10的重新编程而将向RAM存储器106中复制的数据量。这是因为向RAM存储器106中复制重新编程软件的软件部件中的仅一些软件部件而不是所有软件部件。
应当注意,在重新编程方法50的某些实施例中,对于从未与向将从RAM存储器106执行的软件部件的第三集合分配的对闪存104的内容进行修改的操作同时执行的某些软件部件而言是理想地可行的。换而言之,即使某些软件部件从未与对闪存104的内容进行修改的操作同时执行,仍然有可能从RAM存储器106执行它们。
优选地,所有软件部件属于第一和第二集合两者。换而言之,第二集合包括未被标识为需要与对闪存104的内容进行修改的操作同时执行的所有软件部件。因此显然最小化向RAM存储器106中暂时复制的数据量并且将该数据量将减少至仅第一集合的软件部件。
在说明书的剩余部分中,将假设所有软件部件属于第一和第二集合两者,但是这一假设并非限制。
优选地,任务定序器包括两个不同操作模式,如下:
- 称为“标准模式”的第一操作模式,在该模式中执行第一和第二集合的软件部件,以及
- 在对闪存104的内容进行修改的操作中使用的称为“重新编程模式”的第二操作模式,在该模式中仅执行第一集合的软件部件。
由于这两个不同操作模式,并且由于从RAM存储器106执行任务定序器本身,所以保证没有对闪存104的用于读取和写入(或者擦除)的同时访问将是必需的。这清楚地是因为如果在对闪存104的内容进行修改的操作在进行中之时以重新编程模式执行任务定序器,则将无需对闪存104的读取访问,因为将从RAM存储器106仅执行第一集合的软件部件。
图2示出重新编程方法50的一个优选实施例的主要步骤,这些步骤使用任务定序器的标准和重新编程模式。
如图2中所示,方法50包括向计算机10的RAM存储器106中复制任务定序器和待执行的第一集合的软件部件的初步步骤52。
随后,方法50包括:
- 从RAM存储器106以标准模式执行任务定序器的步骤54,
- 确定是否已经接收用于修改闪存104的内容的请求的步骤55;如果尚未检测到修改请求(标号550),则方法50继续以标准模式执行任务定序器的步骤54,
- 如果已经检测到修改闪存104的内容的请求(标号552),则执行以重新编程模式执行任务定序器的步骤56,在该步骤期间执行在请求中标识的修改操作,
- 确定是否已经执行对闪存104的内容进行修改的所有操作的步骤57;如果有未尽操作(标号570),则方法50继续以重新编程模式执行任务定序器的步骤56,
- 如果无用于对闪存104的内容进行修改的未尽操作(标号572),则方法50返回到以标准模式执行任务定序器的步骤54。
优选地,重新编程软件包括闪存104中的向软件部件的第二集合中并入的虚拟修改软件部件。
在检测到用于修改闪存104的内容的请求时,任务定序器以标准模式执行虚拟修改软件部件。虚拟修改软件部件未根据在请求中指定的内容修改闪存104的内容(定序任务器在标准模式中,并且所述虚拟修改软件部件属于软件部件的第二集合)。取而代之,虚拟修改软件部件向易失性缓冲存储器、例如RAM存储器106复制请求。
如果已经向易失性缓冲存储器中复制请求,则虚拟修改软件部件向重新编程模式切换任务定序器。
在重新编程模式中,任务定序器特别执行将根据在易失性缓冲存储器(虚拟修改软件部件已经向该易失性缓冲存储器复制所述请求)中存储的请求中指定的内容修改闪存104的内容的实际修改软件部件。如果已经执行在请求中指定的所有修改操作,则实际修改软件部件向标准模式切换任务定序器。
基于一个实际并且另一个虚拟的用于修改闪存104的内容的两个软件部件的使用,这一类型的技术方案具有在防止对闪存104的用于读取和写入(或者擦除)的同时访问方面特别鲁棒的优点。
在方法50的与以上描述的实施例中的任何实施例兼容的变化中,将第一集合的软件部件预先组织成每个都与不同重新编程上下文关联的多个组。
图3示出这一变化的使用的示例,在该示例中,方法500包括与参照图2描述的实施例相同的步骤并且也包括检测待执行的重新编程的上下文的初步步骤51。
在复制待执行的软件部件的步骤52期间,向RAM存储器106仅复制与检测到的上下文关联的组的软件部件。
例如重新编程上下文对应于在重新编程期间将在计算机10与外部设备(在附图中未示出)之间使用的不同通信协议。这是因为一般通过将外部设备连接到计算机10来执行对所述计算机的重新编程。为了交换数据,例如为了向闪存104传送待写入的新软件,外部设备和计算机10必须支持相同通信协议。在实践中,一般需要机动车辆计算机10支持多个不同通信协议(CAN、FlexRay、以太网等),并且因此将软件部件组织成与这些不同通信协议关联的组是有利的。通过防止计算机10使用两个不同通信协议来与两个外部设备同时通信,有可能保证将向RAM存储器106仅复制与待使用的通信协议关联的软件部件的组。因此减少将在RAM存储器106中暂时存储的数据量并且也减少RAM存储器106的必需大小。
在实践中,根据重新编程上下文配置任务定序器可以证实是必要的,因为待执行的任务可以从一个重新编程上下文到另一重新编程上下文变化。
在方法50的与以上描述的实施例中的任何实施例兼容的变化中,用于任务定序器的具体配置数据与每个重新编程上下文关联。与重新变成上下文关联的配置数据可以用来配置任务定序器,使得它执行针对这一上下文而指定的任务。
也从闪存104向RAM存储器106复制与检测到的上下文关联的所述配置数据。在这一情况下,重新编程方法50包括根据RAM存储器106中存储的所述配置数据配置任务定序器的标准和重新编程模式的步骤53。
由于向存储器106仅复制检测到的重新编程上下文的配置数据,所以仍然可以向存储器106的涉及任务定序器的相同地址复制这些数据。因此可以预配置所述任务定序器以从预定义的地址读取控制数据。在另一方面,将理解如果任务定序器将从闪存104读取控制数据,则控制数据在闪存104中的地址将依赖于重新编程上下文并且可以未被预定义。
图4a以高度地示意方式示出闪存104的内容的组织。在这一图中,仅示出一个重新编程软件LR。
如以上提到的那样,将重新编程软件LR组织成任务定序器ST以及软件部件的第一集合E1和第二集合E2。
如以上描述的那样,第一集合E1包括与对闪存104的内容进行修改的操作同时执行的软件部件。
第二集合E2包括软件部件COMP_E2_1和COMP_E2_2。
也将第一集合E1组织成与不同重新编程上下文关联的软件部件的组。在图4a的非限制示例中,考虑两个重新编程上下文,并且这些重新编程上下文与G1和G2分别指示的软件部件的两个组关联。
组G1包括软件部件COMP_G1_1和COMP_G1_2。组G2包括软件部件COMP_G2_1和COMP_G2_2。
也在闪存104中存储重新编程软件LR的其他数据,具体为IC1和IC2分别指示的与两个重新编程上下文关联的配置数据。
图4b示意性地示出RAM存储器106的内容在已经检测到重新编程上下文(在图4b所示示例中,这是与组G1并且与配置数据IC1关联的重新编程上下文)之后并且在已经向RAM存储器106复制任务定序器ST、软件部件的组G1和配置数据IC1之后的组织。
下一步骤然后是用于用RAM存储器106中存储的配置数据IC1配置任务定序器ST的步骤53。
本发明也涉及在其中存储重新编程软件指令的闪存104,这些重新编程软件指令在由机动车辆计算机10的微处理器102执行时通过按照根据本发明的实施例中的任何实施例的重新编程方法50来执行所述计算机的重新编程。本发明也涉及包括这一类型的闪存104的机动车辆计算机10。
以上说明书清楚地示出本发明由于它的不同特征及其优点而实现它的声明的目的。
具体而言,将理解由于向RAM存储器106暂时复制软件部件中的仅一些软件部件(第一集合的软件部件,这些软件部件被标识为将与对闪存104的内容进行修改的操作同时执行的那些软件部件),所以RAM存储器106的必需大小比现有技术技术方案的必需大小小得多。另外,通过使用具有两个操作模式的任务定序器,这些操作模式之一在对闪存104的内容进行修改的操作中使用仅使用RAM存储器106中存储的第一集合的软件部件,所以有可能保证无对闪存104的读取访问将与对闪存104的写入(或者擦除)访问同时发生。