CN105302475A - 高效的闪存编程 - Google Patents

高效的闪存编程 Download PDF

Info

Publication number
CN105302475A
CN105302475A CN201510432886.1A CN201510432886A CN105302475A CN 105302475 A CN105302475 A CN 105302475A CN 201510432886 A CN201510432886 A CN 201510432886A CN 105302475 A CN105302475 A CN 105302475A
Authority
CN
China
Prior art keywords
group
sector
software module
delta
programming
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
Application number
CN201510432886.1A
Other languages
English (en)
Other versions
CN105302475B (zh
Inventor
A.D.韦斯特
A.I.阿尔拉巴迪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
GM Global Technology Operations LLC
Original Assignee
GM Global Technology Operations LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by GM Global Technology Operations LLC filed Critical GM Global Technology Operations LLC
Publication of CN105302475A publication Critical patent/CN105302475A/zh
Application granted granted Critical
Publication of CN105302475B publication Critical patent/CN105302475B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

公开了高效的闪存编程。在此呈现一种重新编程计算设备的闪速存储器的方法。具有多个软件模块的软件内容可以通过从软件模块识别有待通过德尔塔编程来编程的第一组软件模块和有待通过非德尔塔编程来编程的第二组软件模块来重新编程。将闪速存储器的第一组扇区分配用于编程第一组软件模块,并且将第二组扇区分配用于编程第二组软件模块。将第二组扇区中的至少一些指定为临时备份存储空间。使用德尔塔编程和指定的临时备份存储空间来用第一组软件模块编程第一组扇区。在编程第一组扇区之后,使用非德尔塔编程用第二组软件模块来编程第二组扇区。

Description

高效的闪存编程
技术领域
本文描述的主题的实施例一般涉及用于车辆中的类型的电子控制系统和电子控制单元(ECU)。更具体来说,主题的实施例涉及重新编程ECU的闪速存储器的编程技术。
背景技术
现代机动车辆提供许多软件控制的特征或功能来适应驾驶者和乘客的需要和需求,并且遵守政府机构的管理。这些特征通常由编程到位于车辆内的不同位置处的各个模块或电子控制单元(ECU)中的软件来控制。ECU以及来往于ECU和它们控制的硬件设备的信号路径可以被认为是形成包括在车辆内的高速计算机网络。每个ECU包括用于其特定车辆系统的软件,诸如执行各种控制功能的应用软件以及配置应用软件的相关校准软件。有时,ECU软件被更新以反映软件改进、启用或禁用用户偏好和/或修补或校正现有软件。更新ECU软件通常涉及刷新存储在闪速存储器中的程序码以便用新的软件模块替代现有的软件模块。
鉴于各种原因,对于ECU供应商来说预编程ECU以适应车辆制造商的需要和规范可能是有负担的。因此,一些ECU供应商现在为车辆制造商提供一般编程的ECU,所述ECU以后可以由车辆制造商用车辆特有的ECU软件来重新编程。此重新编程可能需要刷新由ECU供应商提供的先存的程序码。
ECU的越来越多的使用和ECU所使用的软件程序的数量已经促使ECU出售商和车辆制造商研究高效且经济的闪存编程技术的使用。尽管如此,存在对具有用于重新编程车辆中的ECU的改进的方法的需要和需求。此外,其他所需特征和特性将从结合附图和以上技术领域和背景技术进行的随后详细描述和随附权利要求变得显而易见。
发明内容
本文披露一种用软件内容来重新编程计算设备的闪速存储器的方法。软件内容包括多个软件模块,并且方法的示例性实施例通过从软件模块识别有待通过德尔塔编程来编程的第一组软件模块和有待通过非德尔塔编程来编程的第二组软件模块开始。方法通过将闪速存储器的第一组扇区分配用于编程第一组软件模块并且将闪速存储器的第二组扇区分配用于编程第二组软件模块来继续。方法通过将第二组扇区中的至少一些指定为临时备份存储空间并且通过使用德尔塔编程和指定的临时备份存储空间来用第一组软件模块编程第一组扇区来继续。在编程第一组扇区之后,使用非德尔塔编程用第二组软件模块来编程第二组扇区。
本文还披露一种有形且永久的计算机可读介质,所述计算机可读介质具有存储在其上并且在由处理器执行时能够执行方法的计算机可执行指令。由指令执行的方法从多个软件模块识别有待通过德尔塔编程来编程到闪速存储器中的第一组软件模块和有待通过非德尔塔编程来编程到闪速存储器中的第二组软件模块。闪速存储器的第一组扇区被分配用于编程第一组软件模块,并且闪速存储器的第二组扇区被分配用于编程第二组软件模块。第二组扇区中的至少一些被指定为临时备份存储空间。使用德尔塔编程和指定的临时备份存储空间来用第一组软件模块编程第一组扇区。在编程第一组扇区之后,使用非德尔塔编程用第二组软件模块来编程第二组扇区。
还披露一种用于车辆的电子控制单元。电子控制单元的示例性实施例包括具有至少一个处理器设备的处理器架构、存储代表多个软件模块的程序码的闪速存储器以及计算机可读介质,所述计算机可读介质具有存储在其上的计算机可执行指令。在由处理器架构执行时,指令使得电子控制单元:用第一软件模块和第二软件模块来开始闪速存储器的重新编程;获得与第一软件模块相关的德尔塔程序文件;使用德尔塔程序文件并且使用分配给第二软件模块作为临时备份存储空间的第二组扇区用第一软件模块来德尔塔编程闪速存储器的第一组扇区;以及在德尔塔编程第一组扇区之后,使用非德尔塔编程用第二组软件模块来编程第二组扇区。
本发明包括以下方案:
1.一种用软件内容来重新编程计算设备的闪速存储器的方法,所述软件内容包括多个软件模块,所述方法包括:
从所述多个软件模块识别有待通过德尔塔编程来编程的第一组软件模块和有待通过非德尔塔编程来编程的第二组软件模块;
将闪速存储器的第一组扇区分配用于编程第一组软件模块,并且将闪速存储器的第二组扇区分配用于编程第二组软件模块;
将第二组扇区中的至少一些指定为临时备份存储空间;
使用德尔塔编程和指定的临时备份存储空间以用第一组软件模块编程第一组扇区;以及
在编程第一组扇区之后,使用非德尔塔编程用第二组软件模块来编程第二组扇区。
2.如方案1所述的方法,其进一步包括:
获得德尔塔程序文件,德尔塔程序文件代表第一组扇区中的现有组的软件模块与第一组软件模块之间的差异,其中编程第一组扇区使用德尔塔程序文件。
3.如方案1所述的方法,其中编程第一组扇区包括:
将第一组扇区中的现有组的软件模块的至少一些程序码保存到指定的临时备份存储空间。
4.如方案1所述的方法,其中:
计算设备是车辆的电子控制单元;以及
多个软件模块包括应用软件模块和与应用软件模块相关的程序校准模块。
5.如方案1所述的方法,其中指定步骤包括:
确定第一组扇区的最大扇区尺寸;以及
将至少最大扇区尺寸分配给指定的临时备份存储空间。
6.如方案1所述的方法,其中编程第二组扇区包括:
用代表第二组软件模块的新程序码来替代第二组扇区中的现有程序码。
7.一种有形且永久的计算机可读介质,所述计算机可读介质具有存储在其上并且在由处理器执行时能够执行方法的计算机可执行指令,所述方法包括:
从多个软件模块识别有待通过德尔塔编程来编程到闪速存储器中的第一组软件模块和有待通过非德尔塔编程来编程到闪速存储器中的第二组软件模块;
将闪速存储器的第一组扇区分配用于编程第一组软件模块,并且将闪速存储器的第二组扇区分配用于编程第二组软件模块;
将第二组扇区中的至少一些指定为临时备份存储空间;
使用德尔塔编程和指定的临时备份存储空间以用第一组软件模块编程第一组扇区;以及
在编程第一组扇区之后,使用非德尔塔编程用第二组软件模块来编程第二组扇区。
8.如方案7所述的计算机可读介质,其中由计算机可执行指令执行的方法进一步包括:
获得德尔塔程序文件,德尔塔程序文件代表第一组扇区中的现有组的软件模块与第一组软件模块之间的差异,其中编程第一组扇区使用德尔塔程序文件。
9.如方案7所述的计算机可读介质,其中编程第一组扇区包括:
将第一组扇区中的现有组的软件模块的至少一些程序码保存到指定的临时备份存储空间。
10.如方案7所述的计算机可读介质,其中多个软件模块包括应用软件模块和与应用软件模块相关的程序校准模块。
11.如方案7所述的计算机可读介质,其中指定步骤包括:
确定第一组扇区的最大扇区尺寸;以及
将至少最大扇区尺寸分配给指定的临时备份存储空间。
12.如方案7所述的计算机可读介质,其中编程第二组扇区包括:
用代表第二组软件模块的新程序码来替代第二组扇区中的现有程序码。
13.一种用于车辆的电子控制单元,所述电子控制单元包括:
具有至少一个处理器设备的处理器架构;
存储代表多个软件模块的程序码的闪速存储器;以及
计算机可读介质,计算机可读介质具有存储在其上的计算机可执行指令,在由处理器架构执行时,指令使得电子控制单元:
用第一软件模块和第二软件模块来开始闪速存储器的重新编程;
获得与第一软件模块相关的德尔塔程序文件;
使用德尔塔程序文件并且使用分配给第二软件模块作为临时备份存储空间的第二组扇区用第一软件模块来德尔塔编程闪速存储器的第一组扇区;以及
在德尔塔编程第一组扇区之后,使用非德尔塔编程用第二组软件模块来编程第二组扇区。
14.如方案13所述的电子控制单元,其中:
第一软件模块包括应用软件模块;以及
第二软件模块包括与应用软件模块相关的校准模块。
15.如方案13所述的电子控制模块,其中德尔塔程序文件是从外部源获得以更新闪速存储器的现有软件图像。
16.如方案15所述的电子控制模块,其中德尔塔程序文件代表现有软件图像与第一软件模块之间的差异。
17.如方案13所述的电子控制模块,其中德尔塔编程第一组扇区包括:
将闪速存储器的现有软件图像的至少一些程序码复制到临时备份存储空间。
18.如方案13所述的电子控制模块,其中计算机可执行指令使得电子控制单元:
确定第一组扇区的最大扇区尺寸;以及
将至少最大扇区尺寸分配给临时备份存储空间。
19.如方案13所述的电子控制模块,其中计算机可执行指令使得电子控制单元:
获得以其整体代表第二软件模块的程序码,其中在非德尔塔编程期间使用程序码。
20.如方案19所述的电子控制模块,其中获得的程序码包括压缩图像。
提供此概述来用简化的形式介绍以下在详细描述中进一步描述的概念的选择。此概述既不意欲识别所要求的主题的关键特征或必要特征,也不意欲用作帮助确定所要求的主题的范围。
附图说明
主题的更完整理解可以通过参照结合以下附图考虑时的详细描述和权利要求来获得,其中相同参考数字在所有图中指代类似元件:
图1是适用于车辆中的ECU的简化示意性表示;
图2是用现有软件模块编程的闪速存储器元件的图;
图3是在刷新操作期间的状态下描绘的图2中所示的闪速存储器元件的图;
图4是在刷新操作接近结束的状态下描绘的图2中所示的闪速存储器元件的图;
图5是在完成刷新操作之后的图2中所示的闪速存储器元件的图;
图6是示出与闪存重新编程操作相关的开始过程的示例性实施例的流程图;以及
图7是示出闪存重新编程过程的示例性实施例的流程图。
具体实施方式
以下详细描述实质上仅是说明性的,而并不意欲限制主题的实施例或这些实施例的应用和使用。如本文所使用,词语“示例性”意味着“用作实例、示例或说明”。本文描述为示例性的任何实施方式不必解释为比其他实施方式优选或有利。此外,并不意欲由前面的技术领域、背景技术、简要概述或以下详细描述中呈现的明确或暗示的理论限制。
本文根据功能和/或逻辑方框部件并且参照可以由各种计算部件或设备执行的操作、处理任务和功能的符号表示来描述技术和工艺。这些操作、任务和功能有时称为计算机执行的、计算机化的、处理器执行的、软件实施的或计算机实施的。应了解,图中所示的各种方框部件可以通过配置成执行指定功能的任何数量的硬件、软件和/或固件部件来实现。例如,系统或部件的实施例可以使用各种集成电路部件,例如存储器元件、数字信号处理元件、逻辑元件、查找表等,所述部件可以在一个或多个微处理器或其他控制设备的控制下执行多种功能。
当实施在软件或固件中时,本文描述的系统的各个元件基本上是代码段或可执行指令,其在由一个或处理器设备执行时导致主机计算系统执行各种任务。在某些实施例中,程序或代码段存储在有形的处理器可读介质中,所述处理器可读介质可以包括可以存储或传递信息的任何介质。适合的形式的永久的且处理器可读的介质的实例包括电子电路、半导体存储器设备、ROM、闪速存储器、可擦ROM(EROM)、软盘、CD-ROM、光盘、硬盘等。
本文描述的技术和工艺可以用于任何车辆,包括而不限于:道路车辆、诸如汽车、公共汽车、卡车和摩托车;飞机;船只;航天器;火车;地铁;特种设备(例如,建筑设备、工厂设备等);有轨电车;等等。以下描述的具体实施例涉及车辆应用;然而,主题并不受限或受约束于这些车辆应用。
在此描述的主题涉及高效且节省成本的闪存编程技术,所述技术利用德尔塔编程来将程序码存储在车辆的ECU的闪速存储器元件中。德尔塔编程可以在不会显著地增加ECU成本或复杂性的情况下以故障安全的方式来执行。如熟悉软件编程和闪速存储器架构的人所很好理解,德尔塔编程是更新、改变或修订现有软件内容的有效方式,所述软件内容可以代表程序码、校准数据等。就此而言,德尔塔编程集中于现有(预编程的)软件内容与打算安装的新软件内容之间的差异。根据德尔塔编程技术,可以产生代表两个软件版本之间的差异的德尔塔程序文件。因此,不需要将全部新软件内容发送到目标ECU。因此,如果仅需要小改变,则德尔塔编程可以产生较少费用,并且可以快速安装。
德尔塔编程可以用故障安全方式来执行以确保编程中断不会产生不可恢复的状态。为此目的,常规德尔塔编程技术可以利用额外的非易失性存储器(例如,闪速存储器),所述存储器仅在编程期间使用(即,在刷新之后的ECU的正常操作期间不使用额外的存储器)。取决于更新策略,可以将额外的存储器用作存储软件内容的先前版本中的一些的备份区域、作为存储当前重建的闪存扇区的暂存器或者作为在将新版本写入到闪速存储器时存储更新和状态信息的临时区域。因此,如果需要,则可以恢复软件内容的先前版本。尽管此方法有效,但是其增加ECU的成本和复杂性。
在此呈现的技术利用在不会显著增加ECU成本或复杂性的情况下以故障安全方式的德尔塔编程。如以下更详细描述,将所需的软件内容划分成可识别的软件模块。使用德尔塔编程来重新编程软件模块中的一些。随后,使用传统或非德尔塔方法来重新编程一个或多个剩余软件模块。在德尔塔编程阶段期间,在构建用于在此阶段期间更新的模块的最终图像时,预订用于非德尔塔编程模块的闪速存储器的一部分被用作临时缓存。在非德尔塔编程阶段期间,使用传统技术(例如,原始的二进制、压缩图像等)用剩余的软件模块来写入预订的闪存扇区。
图1是适用于车辆中的ECU100的简化示意性表示。现代车辆可以包括多个ECU100,每个ECU被适当地配置成执行车载的某些指定功能和操作。ECU100的所示实施例通常包括而不限于:具有至少一个处理器设备(诸如微处理器102)的处理器架构;只读存储器104;随机访问存储器106;闪速存储器108;输入/输出模块110;以及通信模块112。实际上,ECU100可以包括合作以实现所需功能性的额外的元件、设备和功能模块。
ECU100的处理器架构能够执行程序码指令,所述指令使得ECU100执行多种技术、操作和功能,包括以下更详细描述的那些。尽管图1描绘微处理器102(其是优选的实施方式),但是ECU100可以使用任何数量的离散处理器设备、内容可定址存储器、数字信号处理器、特定应用集成电路、场可编程门阵列、任何适合的可编程逻辑设备、离散门或晶体管逻辑、离散硬件部件或者设计成执行在此描述的功能的任何组合。此外,ECU100所使用的处理器设备可以被实施为设备的组合,例如数字信号处理器与微处理器的组合、多个微处理器、一个或多个微处理器结合数字信号处理器磁芯或者任何其他此类配置。
可以使用ROM104和闪速存储器108来存储代表或定义用于ECU100的各种软件模块的计算机可执行程序码。ROM104可以用于不需要更新或修订存储在其中的软件模块的一些实施例中。例如,可以使用ROM104来存储定义用于ECU100的操作系统、引导装载程序或BIOS的程序码。相比之下,存储在闪速存储器108中的软件模块根据需要经受重新编程(刷新)。事实上,可以执行以下描述的重新编程方法来将新软件模块写入到闪速存储器108。RAM106用作用于微处理器102的临时数据存储器。就此而言,微处理器102可以根据需要写入RAM106和从其读取以支持ECU100的操作。
输入/输出模块110可以通过软件、固件、硬件、处理逻辑或其任何组合来实现。输入/输出模块110可以负责收集传感器数据、发出控制命令或指令等。通信模块112也可以使用软件、固件、硬件、处理逻辑或其任何组合来实现。在某些示例性实施例中,通信模块112被适当地配置成支持ECU100与其他模块、ECU或主车辆的车载设备之间的数据通信。通信模块112还可以被设计成支持与外部设备或源的数据通信。例如,通信模块112可以包括端口或接口或者与其合作,所述端口或接口适应与外部计算设备(诸如膝上型电脑或车辆诊断系统)的有线或无线连接。作为另一个实例,通信模块112可以支持蜂窝数据通信、卫星数据通信等。
如以上所提及,可以使用高效且快速重新编程方法来刷新ECU的闪速存储器元件。就此而言,图2是已经用现有的软件模块编程的闪速存储器元件200的图。对于此特定实例而言,将闪速存储器元件200划分成九个闪存扇区(描绘为水平布置的矩形),然而闪速存储器元件200的实施例在适用于特定应用、平台和ECU功能性的情况下可以包括任何数量的闪存扇区。图2中的浓阴影指示所有九个闪存扇区已经用程序码写入。如本文所使用,“闪存扇区”代表存储器的可擦部分。根据常规的闪速存储器技术,基于逐个扇区擦除数据;必须一起擦除闪存扇区中的所有存储器单元。在某些实施例中,将闪速存储器元件200划分成相同尺寸的闪存扇区(例如,每扇区8kB、64kB或256kB)。在其他实施例中,可以将闪速存储器元件200划分成多于一个尺寸的闪存扇区。
取决于闪速存储器元件200的总容量、软件模块的个别尺寸以及可能的其他因素,可以用任何数量的软件模块(即,多段计算机可执行程序码)来编程闪速存储器元件200。在此描述的非限制性且简单的实例假定使用闪速存储器元件200来存储应用软件模块202、与应用软件模块202相关的第一程序校准模块204以及也与应用软件模块202相关的第二程序校准模块206。如图2中所描绘,应用软件模块202占据九个闪存扇区中的四个,第一程序校准模块204占据九个闪存扇区中的三个,并且第二程序校准模块206占据九个闪存扇区中的剩余两个。图2中所示的闪存扇区的特定布置和分配仅意欲用作一个简单实例。实际上,分配给每个软件模块的闪存扇区的数量可以根据需要改变,以适应模块的实际尺寸。因此,可以使用一个或多个闪存扇区来存储用于ECU的每个软件模块的程序码。
图3是在刷新操作期间的闪速存储器元件200的图,图4是在刷新操作接近结束时的闪速存储器元件200的图,并且图5是在刷新操作完成之后的闪速存储器元件200的图。以下将参照图7来更详细解释图2至5中所描绘的进程。
图6是示出与闪存重新编程操作相关的开始过程600的示例性实施例的流程图。结合过程600执行的各种任务可以由软件、硬件、固件或其任何组合来执行。过程600(或其部分)可以由ECU(例如,由引导装载程序)和/或由主车辆车载的另一个子系统或设备来执行。替代地,过程600中的一些或全部可以由主车辆外部的子系统或服务来执行,诸如外部计算设备、诊断设备或基于云的软件更新服务。应了解,过程600可以包括任何数量的额外或替代的任务,图6中所示的任务无需以所示次序执行,并且过程600可以被并入到具有本文未详细描述的额外功能性的更综合的程序或过程中。此外,可以从过程600的实施例省略图6中所示的任务中的一个或多个,只要预期的总功能性保持完整。
过程600假定闪速存储器已经被编程且因此具有存在于其闪存扇区的至少一些中的现有软件模块。根据此实例,过程600获得用于ECU的软件更新包(任务602)。更新包可以从任何授权的源获得,并且可以将其以任何实用的格式传递到ECU。例如,可以用无线电从外部源获得更新包以更新闪速存储器的现有软件图像。软件更新包含有以本文指定的方式重新编程闪速存储器所需的信息和数据。就此而言,软件更新包可以包括而不限于:目标ECU的标识符或地址;有待在一个或多个软件模块的德尔塔编程期间使用的至少一个德尔塔程序文件;以及有待在一个或多个软件模块的非德尔塔编程期间使用的新程序码。德尔塔程序文件(或多个德尔塔程序文件)代表当前存在虽闪速存储器中的现有组的软件模块(即,一个或多个模块)与那个组的软件模块的“更新的”或“新”版本之间的差异。特别地,(多个)德尔塔程序文件仅指代有待使用德尔塔编程技术来重新编程的那些软件模块。相比之下,额外的新程序码代表有待使用传统(非德尔塔)编程方法来重新编程的一组软件模块的“更新的”或“新”版本。因此,新程序码可以以其整体代表更新的软件模块,如压缩或非压缩图像。
应了解,为了更新应用软件和/或校准数据的目的,可以提供多个德尔塔程序文件。此外,可以使用传统的非德尔塔编程技术来编程任何数量的软件模块。例如,参照图2,可以使用单个德尔塔程序文件来更新应用软件模块202,并且可以使用多个德尔塔程序文件来更新(用于程序校准模块204的)闪存扇区220、222、224。类似地,可以使用一个或多个德尔塔程序文件来更新(用于校准模块206的)闪存扇区210、212。这些实例并非意欲限制或者以其他方式约束在此描述的技术。相反,可以灵活地设计过程600以便与传递机构无关地处理更新的软件内容。
过程600识别有待由德尔塔编程来编程的软件模块组(任务604)并且识别有待由非德尔塔编程来编程的软件模块组(任务606)。再次参照图2,在此描述的实例假定应用软件模块202和第一程序校准模块204将由德尔塔编程技术来刷新,并且第二程序校准模块206将由非德尔塔(传统)编程技术来刷新。过程600将闪速存储器的第一组扇区(即,一个或多个)分配用于德尔塔编程的目的,并且将闪速存储器的第二组扇区(即,一个或多个)分配用于非德尔塔编程(任务606)的目的。对于图2中所示的实例,将上面四个闪存扇区分配用于应用软件模块202的德尔塔编程;将第五、第六和第七个闪存扇区分配用于第一程序校准模块204的德尔塔编程;以及将下面两个闪存扇区分配用于第二程序校准模块206的非德尔塔编程。
结合扇区的分配(任务608),过程600还可以确定有待使用德尔塔编程技术来编程的最大扇区尺寸(任务610)。此确定对于使得过程600能够分配等于至少最大扇区尺寸的闪速存储器的量来用作临时备份存储空间而言是重要的。如果在闪速存储器中使用不同的扇区尺寸,则可能需要指定多于一个扇区来用作临时备份存储空间。此实际要求确保可以将最大扇区的现有(旧)内容保存在临时备份存储空间中作为德尔塔编程期间的故障安全措施。
以此方式,过程600分配并指定有待在非德尔塔编程期间使用的扇区中的至少一些作为临时备份存储空间(任务612)。对于图2中描绘的闪速存储器元件200而言,此实例将下面两个闪存扇区预订用作临时备份存储空间。换言之,将用于第二程序校准模块206的现有版本的扇区指定用作应用软件模块202和第一程序校准模块204的德尔塔编程期间的缓冲存储器。应理解,以上针对开始过程600所描述的任务中的一些或全部可以“自动地”或者以其他方式结合闪速存储器的重新编程来执行。在此为了便于理解和解释分配和利用闪存扇区的方式来描述过程600。
图7是示出闪存重新编程过程700的示例性实施例的流程图。结合过程700执行的各种任务可以由软件、硬件、固件或其任何组合来执行。过程700(或其部分)可以由ECU(例如,由引导装载程序)来执行以便用更新的或新的程序码替代现有程序码。应了解,过程700可以包括任何数量的额外或替代的任务,图7中所示的任务无需以所示次序执行,并且过程700可以被并入到具有本文未详细描述的额外功能性的更综合的程序或过程中。此外,可以从过程700的实施例省略图7中所示的任务中的一个或多个,只要预期的总功能性保持完整。
此实例假定需要用至少两个软件模块来刷新闪速存储器元件,从而使得可以使用德尔塔编程技术来刷新第一模块并且可以用传统的“完整程序码”方式来刷新第二模块。因此,过程700可以通过获得实现德尔塔编程阶段所需的德尔塔程序文件来开始(任务702)。如以上所提及,德尔塔程序文件可以用无线电下载、从外部计算设备获得等等。过程700可以通过开始第一软件模块的德尔塔编程来继续(任务704)。尽管用于编程第一软件模块的闪存扇区的特定位置在各实施例之间可以不同,但是图2至5中所示的实例为此目的使用上面四个闪存扇区。
为了支持故障安全编程操作,过程700将第一软件模块的现有版本的程序码中的至少一些保存或复制到已经被指定用作临时备份存储空间的闪存扇区(任务706)。此外,使用德尔塔程序文件来重新编程分配给第一软件模块的扇区(任务708)。参照图3,在德尔塔编程阶段期间将两个闪存扇区210、212用作临时备份存储空间。因此,从闪存扇区210、212擦除第二程序校准模块206的原始版本。根据在此描述的示例性实施例,德尔塔编程是以逐扇区为基础执行。因此,一个闪存扇区中的现有内容(用于被刷新的软件模块的程序码)在那个闪存扇区被擦除并用新程序码重新编程之前,被复制到临时备份存储空间。此故障安全技术确保以可恢复形式保存用于每个闪存扇区的旧程序码。在成功地刷新扇区之后,可以根据需要擦除临时备份存储空间的内容。
图3是在已经将应用软件模块202成功地重新编程为应用软件模块202'(撇符号指示刷新后的版本)的新版本之后的闪速存储器元件200的图。如以上所提及,根据需要使用德尔塔程序文件和临时备份存储空间将应用软件模块202每次重新编程一个扇区。图3描绘当第一程序校准模块204的现有版本仍存在于三个闪存扇区220、222、224中时的时间瞬间。
返回参照图7,如果完成德尔塔编程阶段(即,询问任务710的“是”分支),则过程700继续到非德尔塔编程阶段。然而,如果更多软件模块有待使用德尔塔编程技术来刷新(即,询问任务710的“否”分支),则过程700可以返回到任务704以便用以上描述的方式来开始和执行对下一个软件模块的德尔塔编程。此实例假定根据需要重复德尔塔编程直到已经刷新指定用于德尔塔编程的所有软件模块。就此而言,图4示出在第一程序校准模块204已经被成功地重新编程为第一程序校准模块204'的新版本之后的闪速存储器元件200。在图4中描绘的时间点,两个闪存扇区210、212可以没有内容(即,被擦除)或者它们可以含有在上一次德尔塔编程迭代期间保存的备份程序码。换言之,闪存扇区210、212尚未由所需的新程序码来重新编程。
在完成德尔塔编程阶段之后,过程700获得用于刷新一个或多个最终软件模块的新程序码(例如,压缩文件或非压缩文件)(任务712)。此实例假定仅一个软件模块保持用于非德尔塔编程,即,第二程序校准模块206(参见图2)。与用于德尔塔编程的德尔塔程序文件相比,所获得的程序码文件是完整地定义(多个)最终软件模块所需的软件的全版本。过程700可以通过开始上一个软件模块的非德尔塔编程来继续(任务714)。尽管用于编程上一个软件模块的闪存扇区的特定位置在各实施例之间可以不同,但是图2至5中所示的实例为此目的使用最下面的闪存扇区。
根据非德尔塔刷新技术,用实施上一个软件模块的新的程序码来编程已经用作临时备份存储空间的闪存扇区(任务716)。不需要为了故障安全目的复制新的程序码,因为使用传统的非德尔塔方法来将新的程序码写入到闪速存储器中。对于在此呈现的实例而言,现有或旧的程序码(先前存储在闪存扇区210、212中)由用于第二程序校准模块的程序码替代。图5示出在第二程序校准模块206已经被成功地重新编程为第二程序校准模块206'的新版本之后的闪速存储器元件200。图5描绘在成功刷新之后的闪速存储器元件200。特别地,下面两个闪存扇区不再需要或用作临时备份存储器,因为已经执行了德尔塔编程阶段。因此,下面两个闪存扇区现在含有与第二程序校准模块相关的程序码。
以上呈现的实例假定在非德尔塔编程阶段之前执行和完成德尔塔编程阶段。然而,在某些实施例中,可以用不同的方式来重新编程闪速存储器元件。例如,在一些情况下可能需要在开始德尔塔编程阶段之前用传统方式刷新一个或多个模块。作为另一个实例,可能需要在多个德尔塔和非德尔塔编程阶段之间进行交替,以非德尔塔编程阶段结束。本公开预期这些和其他变体。
虽然在以上详细描述中呈现至少一个示例性实施例,但是应了解,存在大量变体。还应了解,本文描述的示例性实施例或多个示例性实施例并不意欲以任何方式限制所要求的主题的范围、适用性或配置。相反,以上详细描述将为本领域技术人员提供用于实施所描述的实施例或多个实施例的方便的指导说明。应理解,在不脱离由权利要求定义的范围的情况下,可以对元件的功能和布置进行各种改变,权利要求定义的范围包括在提交此专利申请时已知的等效物和可预见的等效物。

Claims (10)

1.一种用软件内容来重新编程计算设备的闪速存储器的方法,所述软件内容包括多个软件模块,所述方法包括:
从所述多个软件模块识别有待通过德尔塔编程来编程的第一组软件模块和有待通过非德尔塔编程来编程的第二组软件模块;
将闪速存储器的第一组扇区分配用于编程第一组软件模块,并且将闪速存储器的第二组扇区分配用于编程第二组软件模块;
将第二组扇区中的至少一些指定为临时备份存储空间;
使用德尔塔编程和指定的临时备份存储空间以用第一组软件模块编程第一组扇区;以及
在编程第一组扇区之后,使用非德尔塔编程用第二组软件模块来编程第二组扇区。
2.如权利要求1所述的方法,其进一步包括:
获得德尔塔程序文件,德尔塔程序文件代表第一组扇区中的现有组的软件模块与第一组软件模块之间的差异,其中编程第一组扇区使用德尔塔程序文件。
3.如权利要求1所述的方法,其中编程第一组扇区包括:
将第一组扇区中的现有组的软件模块的至少一些程序码保存到指定的临时备份存储空间。
4.如权利要求1所述的方法,其中:
计算设备是车辆的电子控制单元;以及
多个软件模块包括应用软件模块和与应用软件模块相关的程序校准模块。
5.如权利要求1所述的方法,其中指定步骤包括:
确定第一组扇区的最大扇区尺寸;以及
将至少最大扇区尺寸分配给指定的临时备份存储空间。
6.如权利要求1所述的方法,其中编程第二组扇区包括:
用代表第二组软件模块的新程序码来替代第二组扇区中的现有程序码。
7.一种有形且永久的计算机可读介质,所述计算机可读介质具有存储在其上并且在由处理器执行时能够执行方法的计算机可执行指令,所述方法包括:
从多个软件模块识别有待通过德尔塔编程来编程到闪速存储器中的第一组软件模块和有待通过非德尔塔编程来编程到闪速存储器中的第二组软件模块;
将闪速存储器的第一组扇区分配用于编程第一组软件模块,并且将闪速存储器的第二组扇区分配用于编程第二组软件模块;
将第二组扇区中的至少一些指定为临时备份存储空间;
使用德尔塔编程和指定的临时备份存储空间以用第一组软件模块编程第一组扇区;以及
在编程第一组扇区之后,使用非德尔塔编程用第二组软件模块来编程第二组扇区。
8.如权利要求7所述的计算机可读介质,其中由计算机可执行指令执行的方法进一步包括:
获得德尔塔程序文件,德尔塔程序文件代表第一组扇区中的现有组的软件模块与第一组软件模块之间的差异,其中编程第一组扇区使用德尔塔程序文件。
9.如权利要求7所述的计算机可读介质,其中编程第一组扇区包括:
将第一组扇区中的现有组的软件模块的至少一些程序码保存到指定的临时备份存储空间。
10.一种用于车辆的电子控制单元,所述电子控制单元包括:
具有至少一个处理器设备的处理器架构;
存储代表多个软件模块的程序码的闪速存储器;以及
计算机可读介质,计算机可读介质具有存储在其上的计算机可执行指令,在由处理器架构执行时,指令使得电子控制单元:
用第一软件模块和第二软件模块来开始闪速存储器的重新编程;
获得与第一软件模块相关的德尔塔程序文件;
使用德尔塔程序文件并且使用分配给第二软件模块作为临时备份存储空间的第二组扇区用第一软件模块来德尔塔编程闪速存储器的第一组扇区;以及
在德尔塔编程第一组扇区之后,使用非德尔塔编程用第二组软件模块来编程第二组扇区。
CN201510432886.1A 2014-07-22 2015-07-22 高效的闪存编程 Active CN105302475B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/338,193 US9430220B2 (en) 2014-07-22 2014-07-22 Method, medium, and apparatus for re-programming flash memory of a computing device
US14/338193 2014-07-22

Publications (2)

Publication Number Publication Date
CN105302475A true CN105302475A (zh) 2016-02-03
CN105302475B CN105302475B (zh) 2018-11-09

Family

ID=55065646

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510432886.1A Active CN105302475B (zh) 2014-07-22 2015-07-22 高效的闪存编程

Country Status (3)

Country Link
US (1) US9430220B2 (zh)
CN (1) CN105302475B (zh)
DE (1) DE102015110710A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113867210A (zh) * 2021-09-29 2021-12-31 中国科学院长春光学精密机械与物理研究所 多路星载嵌入式系统软件在轨重构控制系统及控制方法

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170286082A1 (en) * 2016-03-31 2017-10-05 Microsoft Technology Licensing, Llc De-duplication during flashing of mobile devices
JP2017204227A (ja) * 2016-05-13 2017-11-16 住友電気工業株式会社 車載制御装置、制御方法及びコンピュータプログラム
DE102016115792A1 (de) 2016-08-25 2018-03-01 Visteon Global Technologies, Inc. Verfahren zur Übertragung einer Differenz-Datei
KR20180086907A (ko) * 2017-01-24 2018-08-01 삼성전기주식회사 차량용 블랙박스의 펌웨어 업데이트 시스템 및 방법
EP3611614A4 (en) * 2017-03-24 2020-12-23 Hitachi Automotive Systems, Ltd. IN-CAR CONTROLLER AND PROGRAM UPDATE SOFTWARE
US10353696B2 (en) * 2017-04-13 2019-07-16 Blackberry Limited Program release packages including program updates
DE102017209104A1 (de) * 2017-05-31 2018-12-06 Robert Bosch Gmbh Verfahren zum Verwalten einer Steuerungssoftware eines Bremssystems eines Fahrzeugs, Hydrauliksystem für ein Bremssystem eines Fahrzeugs und Verfahren zum Herstellen desselben
CN111133412A (zh) 2017-07-25 2020-05-08 奥罗拉实验室有限公司 基于工具链构建车辆ecu软件的软件增量更新和异常检测
WO2019042546A1 (en) * 2017-08-30 2019-03-07 Huawei Technologies Co., Ltd. METHOD FOR IMPROVING THE ROBUSTNESS OF A MICROPROGRAM UPDATE IN PLACE
WO2019168907A1 (en) * 2018-02-27 2019-09-06 Excelfore Corporation Broker-based bus protocol and multi-client architecture
US11269762B2 (en) 2019-03-25 2022-03-08 Aurora Labs Ltd. Using line-of-code behavior and relation models to anticipate impact of hardware changes
KR20220028879A (ko) * 2020-08-31 2022-03-08 현대자동차주식회사 차량의 ecu 업데이트 관리 장치 및 그 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1878366A (zh) * 2005-06-09 2006-12-13 乐金电子(中国)研究开发中心有限公司 移动电话的固件升级方法
US7877562B2 (en) * 2005-06-13 2011-01-25 Tdk Corporation Memory controller, flash memory system, and control method of flash memory
US8296535B2 (en) * 2005-12-20 2012-10-23 Telefonaktiebolaget L M Ericsson (Publ) Generating incremental program updates
WO2014062869A1 (en) * 2012-10-17 2014-04-24 Movimento Group Module updating device

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4956777A (en) * 1988-06-09 1990-09-11 R. J. Reynolds Tobacco Company Automatic vehicle control system
US5901330A (en) * 1997-03-13 1999-05-04 Macronix International Co., Ltd. In-circuit programming architecture with ROM and flash memory
JP3932654B2 (ja) * 1998-03-10 2007-06-20 株式会社デンソー 車両用制御装置及び車両制御システム
TW368626B (en) * 1998-04-17 1999-09-01 Winbond Electronics Corp Microprocessor with self-programmed embedded flash memory and programming method
SE0000533D0 (sv) * 2000-02-18 2000-02-18 Ericsson Telefon Ab L M Static cache
US6775423B2 (en) * 2000-05-03 2004-08-10 Microsoft Corporation Systems and methods for incrementally updating an image in flash memory
US6505105B2 (en) * 2001-01-05 2003-01-07 Delphi Technologies, Inc. Electronic control unit calibration
US7058788B2 (en) * 2001-02-23 2006-06-06 Falconstor Software, Inc. Dynamic allocation of computer memory
US6772276B2 (en) * 2002-01-04 2004-08-03 Intel Corporation Flash memory command abstraction
US7096311B2 (en) * 2002-09-30 2006-08-22 Innopath Software, Inc. Updating electronic files using byte-level file differencing and updating algorithms
US7210010B2 (en) * 2002-09-30 2007-04-24 Insignia Solutions Plc Efficient system and method for updating a memory device
US7047128B2 (en) 2002-12-12 2006-05-16 Rtk Technologies Limited Chipped engine control unit system having copy protected and selectable multiple control programs
US7155324B2 (en) 2003-06-10 2006-12-26 General Motors Corporation Apparatus and method for programming motor vehicle electronic control units
US7536536B1 (en) * 2003-12-15 2009-05-19 American Megatrends, Inc. Method, system, and computer readable medium for updating and utilizing the contents of a non-essential region of a memory device
US7366589B2 (en) 2004-05-13 2008-04-29 General Motors Corporation Method and system for remote reflash
US7979404B2 (en) * 2004-09-17 2011-07-12 Quest Software, Inc. Extracting data changes and storing data history to allow for instantaneous access to and reconstruction of any point-in-time data
DE102005001430A1 (de) * 2004-09-30 2006-04-13 Robert Bosch Gmbh Verfahren zur Beschreibung von Speicherinhalten und zur Beschreibung des Transfers von Speicherinhalten
DE102004050882A1 (de) * 2004-10-19 2006-05-04 Siemens Ag Adapter zum Nachflashen von Steuergerätesoftware
EP1679573B1 (en) * 2005-01-07 2007-06-27 Telefonaktiebolaget LM Ericsson (publ) Updating memory contents of a processing device
EP1755034B1 (en) * 2005-08-18 2017-01-18 Telefonaktiebolaget LM Ericsson (publ) Object code generation for increasing the performance of delta files
WO2007026393A1 (ja) * 2005-08-30 2007-03-08 Spansion Llc 半導体装置およびその制御方法
JP4240496B2 (ja) * 2005-10-04 2009-03-18 インターナショナル・ビジネス・マシーンズ・コーポレーション アクセス制御のための装置および方法
US7631162B2 (en) * 2005-10-27 2009-12-08 Sandisck Corporation Non-volatile memory with adaptive handling of data writes
US20070185624A1 (en) * 2006-02-07 2007-08-09 General Motors Corporation Method for remote reprogramming of vehicle flash memory
US8001385B2 (en) * 2006-06-21 2011-08-16 Intel Corporation Method and apparatus for flash updates with secure flash
US8341513B1 (en) * 2007-05-21 2012-12-25 Amazon.Com Inc. Incremental updates of items
US7818403B2 (en) 2007-09-17 2010-10-19 Gm Global Technology Operations, Inc. System for using non-standard transfer protocol from software received at client device for exchanging data with in-vehicle communications gateway
US7886141B2 (en) * 2007-10-27 2011-02-08 Asix Electronics Corporation Method and systems for advanced reprogrammable boot codes and in-application programming of embedded microprocessor systems
US20090113166A1 (en) * 2007-10-31 2009-04-30 Agere Systems Inc. Hashing method for nand flash memory
US8339865B2 (en) * 2007-11-01 2012-12-25 Spansion Israel Ltd Non binary flash array architecture and method of operation
JP2009230407A (ja) * 2008-03-21 2009-10-08 Toshiba Corp データの更新方法、メモリシステムおよびメモリデバイス
US8688313B2 (en) * 2010-12-23 2014-04-01 Aes Technologies, Llc. Remote vehicle programming system and method
US8683206B2 (en) 2011-09-19 2014-03-25 GM Global Technology Operations LLC System and method of authenticating multiple files using a detached digital signature
KR101360705B1 (ko) * 2011-09-22 2014-02-07 기아자동차주식회사 차량 업그레이드 시스템 및 그 방법
US8930710B2 (en) * 2011-10-28 2015-01-06 GM Global Technology Operations LLC Using a manifest to record presence of valid software and calibration
US20130111212A1 (en) 2011-10-28 2013-05-02 GM Global Technology Operations LLC Methods to provide digital signature to secure flash programming function
US8856538B2 (en) 2012-07-27 2014-10-07 GM Global Technology Operations LLC Secured flash programming of secondary processor
US8978160B2 (en) 2012-09-12 2015-03-10 GM Global Technology Operations LLC Method for selective software rollback
US20140075517A1 (en) 2012-09-12 2014-03-13 GM Global Technology Operations LLC Authorization scheme to enable special privilege mode in a secure electronic control unit
US20140075094A1 (en) 2012-09-12 2014-03-13 GM Global Technology Operations LLC Method to implement a binary flag in flash memory
US9727453B2 (en) * 2013-03-14 2017-08-08 Sandisk Technologies Llc Multi-level table deltas
US9371792B2 (en) * 2013-06-27 2016-06-21 Hondata, Inc. Active tuning system for engine control unit
US9274900B2 (en) * 2013-12-03 2016-03-01 Samsung Electronics Co., Ltd. Method and apparatus for updating firmware

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1878366A (zh) * 2005-06-09 2006-12-13 乐金电子(中国)研究开发中心有限公司 移动电话的固件升级方法
US7877562B2 (en) * 2005-06-13 2011-01-25 Tdk Corporation Memory controller, flash memory system, and control method of flash memory
US8296535B2 (en) * 2005-12-20 2012-10-23 Telefonaktiebolaget L M Ericsson (Publ) Generating incremental program updates
WO2014062869A1 (en) * 2012-10-17 2014-04-24 Movimento Group Module updating device

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113867210A (zh) * 2021-09-29 2021-12-31 中国科学院长春光学精密机械与物理研究所 多路星载嵌入式系统软件在轨重构控制系统及控制方法
CN113867210B (zh) * 2021-09-29 2024-04-05 中国科学院长春光学精密机械与物理研究所 多路星载嵌入式系统软件在轨重构控制方法

Also Published As

Publication number Publication date
DE102015110710A1 (de) 2016-01-28
US20160026458A1 (en) 2016-01-28
US9430220B2 (en) 2016-08-30
CN105302475B (zh) 2018-11-09

Similar Documents

Publication Publication Date Title
CN105302475A (zh) 高效的闪存编程
US20180341476A1 (en) Software updating device, software updating system, and software updating method
CN110244958B (zh) 用于更新车辆的标定数据的方法和装置
CN103136134A (zh) 用于车辆的数据重写系统、车载设备和重写设备
WO2019123747A1 (ja) 自動車用電子制御装置及びその制御方法
JP6547904B2 (ja) 制御装置、プログラム更新方法、およびコンピュータプログラム
JP7044859B2 (ja) 車両制御装置およびプログラム更新システム
US11263001B2 (en) Car onboard control device and program updating software
CN112052032A (zh) 电子控制单元的刷写方法及装置
CN113613954A (zh) 电子控制装置以及控制数据的设定方法
US20220391192A1 (en) Ota master, center, system, method, non-transitory storage medium, and vehicle
JP7396216B2 (ja) サーバ、更新管理方法、更新管理プログラム及びソフトウェア更新装置
CN109983442B (zh) 用于紧急维护车辆计算机的系统及方法
CN107015822B (zh) 用于对控制设备进行更新的方法和设备
WO2023175752A1 (ja) 車載プログラム更新システム、車載プログラム更新方法
JP7363853B2 (ja) Otaマスタ、センタ、システム、更新方法、更新プログラム、及び車両
US11847439B2 (en) Center, management method, and non-transitory storage medium
US11947824B2 (en) Electronic control unit, method, and program
WO2020241473A1 (ja) 演算処理装置、車両制御装置及び更新方法
US11954480B2 (en) Center, OTA master, system, method, non-transitory storage medium, and vehicle
KR102669611B1 (ko) Ota 마스터, 갱신 제어 방법, 비일시적인 기억 매체, 및 차량
EP4047477A1 (en) Ota master, center, system, update method, non-transitory storage medium, and vehicle
US20220222054A1 (en) Center, update management method, and non-transitory storage medium
US20220405080A1 (en) Ota master, system, method, non-transitory storage medium, and vehicle
KR20110053056A (ko) Av 시스템의 자가-업데이트 방법

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