CN114567628B - 一种ota升级方法和装置 - Google Patents

一种ota升级方法和装置 Download PDF

Info

Publication number
CN114567628B
CN114567628B CN202210185482.7A CN202210185482A CN114567628B CN 114567628 B CN114567628 B CN 114567628B CN 202210185482 A CN202210185482 A CN 202210185482A CN 114567628 B CN114567628 B CN 114567628B
Authority
CN
China
Prior art keywords
data
upgrade
block area
old
old version
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.)
Active
Application number
CN202210185482.7A
Other languages
English (en)
Other versions
CN114567628A (zh
Inventor
孔庆宇
徐康
崔振宇
孙建东
唐洁
谈文韬
黄歆
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.)
China Automotive Innovation Co Ltd
Original Assignee
China Automotive Innovation Co Ltd
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 China Automotive Innovation Co Ltd filed Critical China Automotive Innovation Co Ltd
Priority to CN202210185482.7A priority Critical patent/CN114567628B/zh
Publication of CN114567628A publication Critical patent/CN114567628A/zh
Application granted granted Critical
Publication of CN114567628B publication Critical patent/CN114567628B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1074Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
    • H04L67/1078Resource delivery mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks

Abstract

本发明涉及了一种OTA升级方法和装置,所述方法包括:当检测到目标程序的OTA升级包加载至闪存空间时,将OTA升级包包括的升级数据映射于内存中;将升级数据和预先映射在内存中的、目标程序的旧版本安装包数据,按照块区为单位依次进行比对,并将存在数据差异的块区确定为已变更块区,将不存在数据差异的块区确定为未变更块区;对已变更块区对应的闪存空间进行旧数据擦除、新数据写入、读取和校验操作,并对未变更块区对应的闪存空间的旧数据进行读取和校验操作。上述方法对未变更块区免去了耗时的擦除和写入操作,大大减少了OTA升级所需的时间,并且本方案对OTA升级包进行全量升级,免去了版本管理压力。

Description

一种OTA升级方法和装置
技术领域
本发明涉及自动驾驶领域,尤其涉及一种OTA升级方法和装置。
背景技术
随着自动驾驶的兴起,OTA(Over-the-AirTechnology,空间下载技术)升级已成为智能汽车的必备功能。OTA升级一般通过通信网络,将升级包下发至车载控制器当中,由控制器主控CPU(centralprocessingunit,中央处理器)执行升级动作。
由于OTA升级包一般都较为巨大,升级过程缓慢,为了提高车辆安全,部分厂家选择在车辆静止、充电或其他适合的时间、场景下进行升级。然而,OTA升级包写入时间过长给这个合适时间的时间窗口带来不利影响。
为了减少升级的时间,部分方案采用差分升级包的方式,降低需要升级的程序包总量。这样,车辆在升级时仅升级特定文件,但即便此种方法,仍然需要对该文件所覆盖所有区域执行全量的擦写动作,且仅升级部分文件的方法,对于后台的版本管理带来较大的管理压力。由于本车版本若不能及时与云端协同,有线下升级版本或非正式版本的情形下,采用这种升级部分文件的方法将给程序间协同带来灾难性后果。
因此,现有的OTA升级方法存在升级时间过长、版本管理压力较大的问题。
发明内容
本发明旨在至少解决现有技术中存在的技术问题之一。为此,本发明第一方面提出一种OTA升级方法,应用于车辆控制器,所述方法包括:
当检测到目标程序的OTA升级包加载至闪存空间时,将所述OTA升级包包括的升级数据映射于内存中;
将所述升级数据和预先映射在所述内存中的、所述目标程序的旧版本安装包数据,按照块区为单位依次进行比对,并根据比对结果将存在数据差异的块区确定为已变更块区,将不存在数据差异的块区确定为未变更块区;
对所述已变更块区对应的闪存空间进行旧数据擦除、新数据写入、读取和校验操作,并对所述未变更块区对应的闪存空间的旧数据进行读取和校验操作;所述新数据为所述已变更块区对应的所述升级数据,所述旧数据为所述未变更块区对应的所述旧版本安装包数据。
可选的,所述将所述OTA升级包包括的升级数据映射于内存中之后,还包括:
确定当前正在使用的所述目标程序的旧版本安装包数据在所述闪存空间中的存储区域;
在所述存储区域对应的备用存储区域中,获取所述目标程序的旧版本安装包数据;
将所述旧版本安装包数据映射于所述内存中。
可选的,所述将所述OTA升级包包括的升级数据映射于内存中,包括:
将所述升级数据通过表单映射于内存中,得到第一表单,所述第一表单包括所述升级数据所占用的块区的第一数量、各个所述块区中包括的所述升级数据的第二数量和所述升级数据的内容。
可选的,所述将所述旧版本安装包数据映射于所述内存中,包括:
将所述旧版本安装包数据通过表单映射于内存中,得到第二表单,所述第二表单包括所述旧版本安装包数据占用的块区的第三数量、各个所述块区中包括的所述旧版本安装包数据的第四数量和所述旧版本安装包数据的内容。
可选的,所述将所述升级数据和预先映射在所述内存中的、所述目标程序的旧版本安装包数据,按照块区为单位依次进行比对,包括:
按照块区为单位依次对所述第一表单和所述第二表单进行比对。
可选的,所述对所述已变更块区对应的闪存空间进行旧数据擦除、新数据写入、读取和校验操作,包括:
对所述已变更块区对应的闪存空间的旧数据执行擦除操作,并在所述擦除操作执行成功后,将新数据写入所述闪存空间;
读取所述新数据,并利用所述OTA升级包中对应的升级数据对所述新数据进行校验。
可选的,所述对所述未变更块区对应的闪存空间的旧数据进行读取和校验操作,包括:
读取所述未变更块区对应的闪存空间存储的旧数据;
利用所述OTA升级包中对应的升级数据对所述旧数据进行校验。
可选的,所述OTA升级包和旧版本安装包均包括多个地址空间,且每个所述地址空间各对应一个缓冲地址空间,所述OTA升级包对应于所述旧版本安装包的变更数据存储在所述缓冲地址空间,所述将所述升级数据和预先映射在所述内存中的、所述目标程序的旧版本安装包数据,按照块区为单位依次进行比对,包括:
按照块区依次对所述OTA升级包的缓冲地址空间和所述旧版本安装包的缓冲地址空间中的数据进行比对。
本发明第二方面提出一种OTA升级装置,应用于车辆控制器,所述装置包括:
第一映射模块,用于当检测到目标程序的OTA升级包加载至闪存空间时,将所述OTA升级包包括的升级数据映射于内存中;
比对模块,用于将所述升级数据和预先映射在所述内存中的、所述目标程序的旧版本安装包数据,按照块区为单位依次进行比对,并根据比对结果将存在数据差异的块区确定为已变更块区,将不存在数据差异的块区确定为未变更块区;
操作模块,用于对所述已变更块区对应的闪存空间进行旧数据擦除、新数据写入、读取和校验操作,并对所述未变更块区对应的闪存空间的旧数据进行读取和校验操作;所述新数据为所述已变更块区对应的所述升级数据,所述旧数据为所述未变更块区对应的所述旧版本安装包数据。
可选的,所述装置还包括:
存储区域确定模块,用于确定当前正在使用的所述目标程序的旧版本安装包数据在所述闪存空间中的存储区域;
旧版本安装包数据获取模块,用于在所述存储区域对应的备用存储区域中,获取所述目标程序的旧版本安装包数据;
第二映射模块,用于将所述旧版本安装包数据映射于所述内存中。
可选的,所述第一映射模块具体用于:
将所述升级数据通过表单映射于内存中,得到第一表单,所述第一表单包括所述升级数据所占用的块区的第一数量、各个所述块区中包括的所述升级数据的第二数量和所述升级数据的内容。
可选的,所述第二映射模块具体用于:
将所述旧版本安装包数据通过表单映射于内存中,得到第二表单,所述第二表单包括所述旧版本安装包数据占用的块区的第三数量、各个所述块区中包括的所述旧版本安装包数据的第四数量和所述旧版本安装包数据的内容。
可选的,所述比对模块进一步用于:
按照块区为单位依次对所述第一表单和所述第二表单进行比对。
可选的,所述操作模块进一步用于:
对所述已变更块区对应的闪存空间的旧数据执行擦除操作,并在所述擦除操作执行成功后,将新数据写入所述闪存空间;
读取所述新数据,并利用所述OTA升级包中对应的升级数据对所述新数据进行校验。
可选的,所述操作模块进一步用于:
读取所述未变更块区对应的闪存空间存储的旧数据;
利用所述OTA升级包中对应的升级数据对所述旧数据进行校验。
可选的,所述OTA升级包和旧版本安装包均包括多个地址空间,且每个所述地址空间各对应一个缓冲地址空间,所述OTA升级包对应于所述旧版本安装包的变更数据存储在所述缓冲地址空间,所述比对进一步用于:
按照块区依次对所述OTA升级包的缓冲地址空间和所述旧版本安装包的缓冲地址空间中的数据进行比对。
本发明第三方面提出一种电子设备,所述电子设备包括处理器和存储器,所述存储器种存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如第一方面所述的OTA升级方法。
本发明第四方面提出一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如第一方面所述的OTA升级方法。
本发明实施例具有以下有益效果:
在本发明实施例中,当检测到目标程序的OTA升级包加载至闪存空间时,将OTA升级包包括的升级数据映射于内存中;将升级数据和预先映射在内存中的、目标程序的旧版本安装包数据,按照块区为单位依次进行比对,并将存在数据差异的块区确定为已变更块区,将不存在数据差异的块区确定为未变更块区;对已变更块区对应的闪存空间进行旧数据擦除、新数据写入、读取和校验操作,并对未变更块区对应的闪存空间的旧数据进行读取和校验操作;新数据为已变更块区对应的升级数据,旧数据为未变更块区对应的旧版本安装包数据。在上述方法中,对未变更块区对应的闪存空间的旧数据只进行读取和校验操作,免去了耗时的擦除和写入操作,大大减少了OTA升级所需的时间,并且本方案对OTA升级包进行全量升级,避免了不同版本对程序间协同带来的困难,免去了版本管理压力。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
为了更清楚地说明本发明的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还能够根据这些附图获得其它附图。
图1为本发明实施例提供的第一种OTA升级方法的步骤流程图;
图2为本发明实施例提供的第二种OTA升级方法的步骤流程图;
图3为本发明实施例提供的第一表单和第二表单的比对示意图;
图4为本发明实施例提供的有针对性执行擦写操作的示意图;
图5为本发明实施例提供的缓冲地址空间示意图;
图6为本发明实施例提供的一种OTA升级装置的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或无创造性的劳动可以包括更多或者更少的操作步骤。在实际中的系统或服务器产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
图1为本发明实施例提供的第一种OTA升级方法的步骤流程图。该方法应用于车辆控制器,可以包括如下步骤:
步骤101、当检测到目标程序的OTA升级包加载至闪存空间时,将所述OTA升级包包括的升级数据映射于内存中。
OTA升级一般通过5G/4G(5th/4thGenerationMobileCommunication Technolog,第五代/第四代移动通信技术)等通信网络,将升级包下发至车载控制器当中,由控制器主控CPU执行升级动作。
升级之前,控制器将OTA升级包加载至闪存(FLASH)空间,再解压到DRAM(DynamicRAM,动态随机存取存储器)内存当中以进行运行。具体地,可以将OTA升级包的数据状态通过表单映射于内存中。
由于内存空间比较大,把OTA升级包读取出来映射在内存中,可以为后面的数据比对做一个数据缓冲。
此外,闪存空间可分为A、B2个区域,分别用于存放目标程序的主安装包和备用安装包。如果当前系统启用的旧版本安装包位于A区域,在接收到新的OTA升级包后,可以将新的OTA升级包加载入B区域。如果当前系统启用的旧版本安装包位于B区域,在接收到新的OTA升级包后,可以将新的OTA升级包放入B区域。这样,可以在不影响当前程序正常使用的情况下进行OTA升级。
步骤102、将所述升级数据和预先映射在所述内存中的、所述目标程序的旧版本安装包数据,按照块区为单位依次进行比对,并将存在数据差异的块区确定为已变更块区,将不存在数据差异的块区确定为未变更块区。
可以预先把目标程序的旧版本安装包数据映射在内存中,以方便与目标程序的升级包中的数据进行比对。在比对之后,可以发现升级数据与旧版本安装包数据相比有哪些相同,哪些不相同。相同的部分,说明这部分升级数据和原来的安装包相比没有变化,则无需将这部分升级数据擦写到闪存中。只需将不相同的部分擦写到闪存中即可。
由于闪存空间以块区(block)为单位对数据进行擦写,因此在内存中以块区为存储单位,对升级数据和旧版本安装包数据进行存储。
在制作OTA升级包时,数据的打包顺序一般是固定的,如升级包数据依次为BOOT、KERNEL、以及应用程序包等内容。新的OTA升级包仅对需要更新的部分进行了变更。
因此,在比对时,可以按照块区对升级数据和旧版本安装包数据进行比对。存在差异的块区,说明对于这个块区,升级数据与旧版本安装包数据相比已产生变更,则将该块区确定为已变更块区。不存在差异的块区,则说明这个块区中的升级数据与旧版本安装包数据相比没有发生变化,则将该块区确定为未变更块区。
步骤103、对所述已变更块区对应的闪存空间进行旧数据擦除、新数据写入、读取和校验操作,并对所述未变更块区对应的闪存空间的旧数据进行读取和校验操作;所述新数据为所述已变更块区对应的所述升级数据,所述旧数据为所述未变更块区对应的所述旧版本安装包数据。
在OTA升级包写入闪存的过程中,每个块区均需要执行擦除、写入、读取、校验几个过程。其中擦除、写入所耗费时间远高于读取的时间,因此OTA升级过程正因为需要进行大量的擦除和写入动作,整个过程较为缓慢,影响车辆升级的速度,降低客户体验。
在本发明实施例中,对于已变更块区和未变更块区,有选择的执行擦除和写入的操作。具体地,对于未变更块区的数据来说,其不需要擦除原闪存空间中的数据,直接使用原闪存空间中的旧数据即可。因此,可以免去擦除和写入的操作。而对于已变更块区,则按照正常流程进行擦写操作。
这样,可以大大减少OTA升级包写入闪存的时间,可以快速将OTA升级包从内存写入闪存空间。
软件的升级过程其实是一个新配置文件取代旧配置文件的过程,在将新数据写入闪存空间后,程序升级的主要流程结束,后续通过重新启动即可运行新的程序。
综上,在本发明实施例中,当检测到目标程序的OTA升级包加载至闪存空间时,将OTA升级包包括的升级数据映射于内存中;将升级数据和预先映射在内存中的、目标程序的旧版本安装包数据,按照块区为单位依次进行比对,并将存在数据差异的块区确定为已变更块区,将不存在数据差异的块区确定为未变更块区;对已变更块区对应的闪存空间进行旧数据擦除、新数据写入、读取和校验操作,并对未变更块区对应的闪存空间的旧数据进行读取和校验操作;新数据为已变更块区对应的升级数据,旧数据为未变更块区对应的旧版本安装包数据。在上述方法中,对未变更块区对应的闪存空间的旧数据只进行读取和校验操作,免去了耗时的擦除和写入操作,大大减少了OTA升级所需的时间,并且本方案对OTA升级包进行全量升级,避免了不同版本对程序间协同带来的困难,免去了版本管理压力。
图2为本发明实施例提供的第二种OTA升级方法的步骤流程图。该方法应用于车辆控制器,可以包括如下步骤:
步骤201、当检测到目标程序的OTA升级包加载至闪存空间时,将所述OTA升级包包括的升级数据映射于内存中。
在本发明实施例中,步骤201可以参照步骤101,此处不再赘述。
可选的,所述将所述OTA升级包包括的升级数据映射于内存中,包括:
将所述升级数据通过表单映射于内存中,得到第一表单,所述第一表单包括所述升级数据所占用的块区的第一数量、各个所述块区中包括的所述升级数据的第二数量和所述升级数据的内容。
在本发明实施例中,内存中映射的第一表单,和闪存里边的的数据是一一对应的,可以认为是通过一比一复制的形式,复制到第一表单中。具体地,可通过占用的块区的第一数量、各个块区中包括的数据的第二数量和数据内容的形式,把升级数据映射到第一表单中。
步骤202、确定当前正在使用的所述目标程序的旧版本安装包数据在所述闪存空间中的存储区域。
闪存空间可分为A、B2个存储区域,分别用于存放目标程序的主安装包和备用安装包。确定当前正在使用的旧版本安装包所在的存储区域,则可以确定另外一个存储区域为备用存储区域。
例如,若当前正在使用的旧版本安装包在A存储区域,则可以确定B存储区域为备用存储区域,若当前正在使用的旧版本安装包在B存储区域,则可以确定A存储区域为备用存储区域。
步骤203、在所述存储区域对应的备用存储区域中,获取所述目标程序的旧版本安装包数据。
备用存储区域中也存储有旧版本安装包数据,则可以从备用存储区域中获取旧版本安装包数据。
步骤204、将所述旧版本安装包数据映射于所述内存中。
将所述旧版本安装包映射于内存中,可以方便和同样映射在内存中的OTA升级包的数据进行比对。
可选的,所述将所述旧版本安装包数据映射于所述内存中,包括:
将所述旧版本安装包数据通过表单映射于内存中,得到第二表单,所述第二表单包括所述旧版本安装包数据占用的块区的第三数量、各个所述块区中包括的所述旧版本安装包数据的第四数量和所述旧版本安装包数据的内容。
在本发明实施例中,内存中映射的第二表单,和第一表单的格式是相同的,第一表单映射的是OTA升级包,第二表单映射的是旧版本安装包。具体地,可通过占用的块区的第三数量、各个块区中包括的数据的第四数量和数据内容的形式,把旧版本安装包数据映射到第二表单中。
步骤205、按照块区为单位依次对所述第一表单和所述第二表单进行比对,并根据比对结果将存在数据差异的块区标记为已变更块区,将不存在数据差异的块区标记为未变更块区。
由于闪存以块区为单位进行擦写,因此以块区为单位进行数据比对。
如果第一表单和第二表单中,对应物理空间位置的数据发生了变化,则将该块区标记为已变更块区。如果对应物理空间位置的数据未发生变化,则将该块区标记为未变更块区。同理,如果第一表单和第二表单的大小不同,则将第一表单中所增加或减少的部分标记为已变更块区。
图3为本发明实施例提供的第一表单和第二表单的比对示意图。
参照图3,原始数据对应在闪存中的空间位置为BLOCK0—BLOCKn,将原始数据映射到内存中,得到第二表单BLOCK0_s—BLOCKn_s。将OTA升级包映射到内存中,得到第一表单BLOCK0_o—BLOCKn_o。
对第一表单和第二表单中的数据按照BLOCK为单位进行比对,可以得到变更标记表单△S,在△S中,0表示未变更,1表示已变更。根据图3中的表单△S可知,BLOCK0_o和BLOCK0_s的比对结果为0,表示BLOCK0_o未变更;BLOCK1_o和BLOCK1_s的比对结果为1,表示BLOCK1_o已变更。
对于BLOCK2……BLOCKn对应的物理空间位置,可以按照上述方法进行类似的比对操作,此处不再赘述。
步骤206、对所述已变更块区对应的闪存空间的旧数据执行擦除操作,并在所述擦除操作执行成功后,将新数据写入所述闪存空间。
确定标记为已变更块区的数据对应在闪存中的物理空间位置,对该物理空间位置的数据执行擦除操作,并在擦除成功后,在该物理空间位置写入OTA升级包中该位置对应的新数据。
步骤207、读取所述新数据,并利用所述OTA升级包中对应的升级数据对所述新数据进行校验。
在擦除和写入之后,再执行读取和校验步骤。具体地,读取写入的新数据,将利用OTA升级包中该部分的数据对新数据进行校验,以防止写入错误。
步骤208、读取所述未变更块区对应的闪存空间存储的旧数据。
对于未变更块区,则无需执行耗时的擦除和写入操作,直接对旧数据执行读取和校验操作即可。
步骤209、利用所述OTA升级包中对应的升级数据对所述旧数据进行校验。
在读取旧数据之后,利用OTA升级包中该部分的数据对旧数据进行校验,以防止旧数据与新数据不一致。
图4为本发明实施例提供的有针对性执行擦写动作的示意图。
参照图4,E表示擦除操作,W表示写入操作,R表示读取操作,C表示校验操作。
变更标记表单△S为[0,1,0…,0],说明BLOCK0对应的物理空间位置为未变更块区,则直接将新数据BLOCK0_o读取(R)入BLOCK0对应的物理空间位置,并进行校验;BLOCK1对应的物理空间位置为已变更块区,则对BLOCK0对应的物理空间位置进行旧数据擦除(E),新数据写入(W)、读取(R)、校验(C)操作。
对于BLOCK2……BLOCKn对应的物理空间位置,可以根据变更标记表单△S,进行上述类似的操作,此处不再赘述。
可选的,所述OTA升级包和旧版本安装包均包括多个地址空间,且每个所述地址空间各对应一个缓冲地址空间,所述OTA升级包对应于所述旧版本安装包的变更数据存储在所述缓冲地址空间,所述将所述升级数据和预先映射在所述内存中的、所述目标程序的旧版本安装包数据,按照块区为单位依次进行比对,包括:
按照块区依次对所述OTA升级包的缓冲地址空间和所述旧版本安装包的缓冲地址空间中的数据进行比对。
在本发明实施例中,为了进一步提升OTA升级的速度,可选择在OTA升级包制作的过程中,有针对性的根据变化的数据进行合理排布,以进一步提升OTA升级的效率。
具体实施表现在,由于OTA升级包中包含BOOT、KERNEL、以及应用程序包等内容,每次程序发生变更有可能存在对不同的功能进行升级,部分升级包属于多个文件打包而成的内容,故按照如下方法对OTA升级包进行改进优化。
对OTA升级包预先设置打包空间对应的地址空间,该地址空间设为N1,N2,N3,N4,…。进一步的在上述地址空间中插入缓冲地址空间M1、M2、M3、M4,…。缓冲地址空间的作用是,为因代码变化带来的空间增、减提供物理存储空间位置的缓冲,避免因为单个文件数据的变化影响到其他文件所映射的物理地址发生偏移。
图5为本发明实施例提供的缓冲地址空间示意图。
如图5所示,N1、N2为旧版本安装包中的K1文件、K2文件设置的打包空间对应的地址空间,M1、M2是为K1、K2文件设置的缓冲地址空间。当前OTA升级包中的K1’、K2’文件实际需要的地址空间为N1’、N2’。其中,N1’比N1稍大,即K1’的数据量比K1的数据量稍多。
那么,可以通过执行擦除、写入、读取和校验操作,将K1’比K1多的那部分数据放入M1中,这样,M1中还有M1’的缓冲地址空间。这样,多的那部分数据不会影响到K2所映射的物理地址发生偏移。由图5可发现,多的那部分数据并没有影响到K2的地址空间发生偏移。
对于K2文件,N2’与N2大小相同,M2与M2’大小相同,说明K2的升级数据和原有数据占用的地址空间相同,则执行读取和校验操作即可,无需对M2’中写入数据。
若OTA升级包相比于旧版本安装包,仅有文件Kn发生了变化,且Kn所需占用的地址空间Nn发生了变化,则Mn为该文件的大小增减提供了物理空间的缓冲控制,避免使其他文件所占用的物理空间相对位置发生变化。
通过上述缓冲地址空间的设置,可以按照块区依次对OTA升级包的缓冲地址空间M1’和旧版本安装包的缓冲地址空间M1中的数据进行比对。
上述方法在OTA升级包加载过程中,通过将OTA升级包与内存映射的旧版本安装包进行对比,若仅有Nn、Mn所对应的局部存储空间发生了数据变化,则仅需要对该地址空间内的数据进一步比对,有数据变化时,方执行擦除、写入、读取、校验的操作,没有数据变化的仅执行读取、校验的操作,进一步提升了OTA升级的速度与效率。
图6为本发明实施例提供的一种OTA升级装置的结构框图。该装置300应用于车辆控制器,包括:
第一映射模块301,用于当检测到目标程序的OTA升级包加载至闪存空间时,将所述OTA升级包包括的升级数据映射于内存中;
比对模块302,用于将所述升级数据和预先映射在所述内存中的、所述目标程序的旧版本安装包数据,按照块区为单位依次进行比对,并根据比对结果将存在数据差异的块区确定为已变更块区,将不存在数据差异的块区确定为未变更块区;
操作模块303,用于对所述已变更块区对应的闪存空间进行旧数据擦除、新数据写入、读取和校验操作,并对所述未变更块区对应的闪存空间的旧数据进行读取和校验操作;所述新数据为所述已变更块区对应的所述升级数据,所述旧数据为所述未变更块区对应的所述旧版本安装包数据。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明提供的又一实施例中,还提供了一种设备,所述设备包括处理器和存储器,所述存储器种存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现本发明实施例中所述的OTA升级方法。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现本发明实施例中所述的OTA升级方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘SolidStateDisk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (16)

1.一种OTA升级方法,其特征在于,应用于车辆控制器,所述方法包括:
当检测到目标程序的OTA升级包加载至闪存空间时,将所述OTA升级包包括的升级数据映射于内存中;
将所述升级数据和预先映射在所述内存中的、所述目标程序的旧版本安装包数据,按照块区为单位依次进行比对,并根据比对结果将存在数据差异的块区确定为已变更块区,将不存在数据差异的块区确定为未变更块区;
对所述已变更块区对应的闪存空间进行旧数据擦除、新数据写入、读取和校验操作,并对所述未变更块区对应的闪存空间的旧数据进行读取和校验操作;所述新数据为所述已变更块区对应的所述升级数据,所述旧数据为所述未变更块区对应的旧版本安装包数据;
所述OTA升级包和旧版本安装包均包括多个地址空间,且每个所述地址空间各对应一个缓冲地址空间,所述OTA升级包对应于所述旧版本安装包的变更数据存储在所述缓冲地址空间,所述将所述升级数据和预先映射在所述内存中的、所述目标程序的旧版本安装包数据,按照块区为单位依次进行比对,包括:
按照块区依次对所述OTA升级包的缓冲地址空间和所述旧版本安装包的缓冲地址空间中的数据进行比对;
所述对所述已变更块区对应的闪存空间进行旧数据擦除、新数据写入、读取和校验操作,包括:
若所述块区对应的OTA升级包的缓冲地址空间中的数据比所述旧版本安装包的缓冲地址空间中的数据量多,则所述块区为已变更块区,通过执行旧数据擦除、新数据写入、读取和校验操作,将多出的数据放入所述旧版本安装包的缓冲地址空间中。
2.根据权利要求1所述的方法,其特征在于,所述将所述OTA升级包包括的升级数据映射于内存中之后,还包括:
确定当前正在使用的所述目标程序的旧版本安装包数据在所述闪存空间中的存储区域;
在所述存储区域对应的备用存储区域中,获取所述目标程序的旧版本安装包数据;
将所述旧版本安装包数据映射于所述内存中。
3.根据权利要求2所述的方法,其特征在于,所述将所述OTA升级包包括的升级数据映射于内存中,包括:
将所述升级数据通过表单映射于内存中,得到第一表单,所述第一表单包括所述升级数据所占用的块区的第一数量、各个所述块区中包括的所述升级数据的第二数量和所述升级数据的内容。
4.根据权利要求3所述的方法,其特征在于,所述将所述旧版本安装包数据映射于所述内存中,包括:
将所述旧版本安装包数据通过表单映射于内存中,得到第二表单,所述第二表单包括所述旧版本安装包数据占用的块区的第三数量、各个所述块区中包括的所述旧版本安装包数据的第四数量和所述旧版本安装包数据的内容。
5.根据权利要求4所述的方法,其特征在于,所述将所述升级数据和预先映射在所述内存中的、所述目标程序的旧版本安装包数据,按照块区为单位依次进行比对,包括:
按照块区为单位依次对所述第一表单和所述第二表单进行比对。
6.根据权利要求1所述的方法,其特征在于,所述对所述已变更块区对应的闪存空间进行旧数据擦除、新数据写入、读取和校验操作,包括:
对所述已变更块区对应的闪存空间的旧数据执行擦除操作,并在所述擦除操作执行成功后,将新数据写入所述闪存空间;
读取所述新数据,并利用所述OTA升级包中对应的升级数据对所述新数据进行校验。
7.根据权利要求1所述的方法,其特征在于,所述对所述未变更块区对应的闪存空间的旧数据进行读取和校验操作,包括:
读取所述未变更块区对应的闪存空间存储的旧数据;
利用所述OTA升级包中对应的升级数据对所述旧数据进行校验。
8.一种OTA升级装置,其特征在于,应用于车辆控制器,所述装置包括:
第一映射模块,用于当检测到目标程序的OTA升级包加载至闪存空间时,将所述OTA升级包包括的升级数据映射于内存中;
比对模块,用于将所述升级数据和预先映射在所述内存中的、所述目标程序的旧版本安装包数据,按照块区为单位依次进行比对,并根据比对结果将存在数据差异的块区确定为已变更块区,将不存在数据差异的块区确定为未变更块区;
操作模块,用于对所述已变更块区对应的闪存空间进行旧数据擦除、新数据写入、读取和校验操作,并对所述未变更块区对应的闪存空间的旧数据进行读取和校验操作;所述新数据为所述已变更块区对应的所述升级数据,所述旧数据为所述未变更块区对应的旧版本安装包数据;
所述OTA升级包和旧版本安装包均包括多个地址空间,且每个所述地址空间各对应一个缓冲地址空间,所述OTA升级包对应于所述旧版本安装包的变更数据存储在所述缓冲地址空间,所述比对模块具体用于:
按照块区依次对所述OTA升级包的缓冲地址空间和所述旧版本安装包的缓冲地址空间中的数据进行比对;
所述操作模块具体用于:
若所述块区对应的OTA升级包的缓冲地址空间中的数据比所述旧版本安装包的缓冲地址空间中的数据量多,则所述块区为已变更块区,通过执行旧数据擦除、新数据写入、读取和校验操作,将多出的数据放入所述旧版本安装包的缓冲地址空间中。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
存储区域确定模块,用于确定当前正在使用的所述目标程序的旧版本安装包数据在所述闪存空间中的存储区域;
旧版本安装包数据获取模块,用于在所述存储区域对应的备用存储区域中,获取所述目标程序的旧版本安装包数据;
第二映射模块,用于将所述旧版本安装包数据映射于所述内存中。
10.根据权利要求9所述的装置,其特征在于,所述第一映射模块具体用于:
将所述升级数据通过表单映射于内存中,得到第一表单,所述第一表单包括所述升级数据所占用的块区的第一数量、各个所述块区中包括的所述升级数据的第二数量和所述升级数据的内容。
11.根据权利要求10所述的装置,其特征在于,所述第二映射模块具体用于:
将所述旧版本安装包数据通过表单映射于内存中,得到第二表单,所述第二表单包括所述旧版本安装包数据占用的块区的第三数量、各个所述块区中包括的所述旧版本安装包数据的第四数量和所述旧版本安装包数据的内容。
12.根据权利要求11所述的装置,其特征在于,所述比对模块进一步用于:
按照块区为单位依次对所述第一表单和所述第二表单进行比对。
13.根据权利要求8所述的装置,其特征在于,所述操作模块进一步用于:
对所述已变更块区对应的闪存空间的旧数据执行擦除操作,并在所述擦除操作执行成功后,将新数据写入所述闪存空间;
读取所述新数据,并利用所述OTA升级包中对应的升级数据对所述新数据进行校验。
14.根据权利要求8所述的装置,其特征在于,所述操作模块进一步用于:
读取所述未变更块区对应的闪存空间存储的旧数据;
利用所述OTA升级包中对应的升级数据对所述旧数据进行校验。
15.一种电子设备,其特征在于,所述电子设备包括处理器和存储器,所述存储器种存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1-7任一项所述的OTA升级方法。
16.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1-7任一项所述的OTA升级方法。
CN202210185482.7A 2022-02-28 2022-02-28 一种ota升级方法和装置 Active CN114567628B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210185482.7A CN114567628B (zh) 2022-02-28 2022-02-28 一种ota升级方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210185482.7A CN114567628B (zh) 2022-02-28 2022-02-28 一种ota升级方法和装置

Publications (2)

Publication Number Publication Date
CN114567628A CN114567628A (zh) 2022-05-31
CN114567628B true CN114567628B (zh) 2024-03-08

Family

ID=81716743

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210185482.7A Active CN114567628B (zh) 2022-02-28 2022-02-28 一种ota升级方法和装置

Country Status (1)

Country Link
CN (1) CN114567628B (zh)

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103605552A (zh) * 2013-11-29 2014-02-26 Tcl通力电子(惠州)有限公司 Mcu的升级方法和装置
CN109508534A (zh) * 2017-09-14 2019-03-22 厦门雅迅网络股份有限公司 防止通过软件降级进行攻击的方法、嵌入式系统
CN109542679A (zh) * 2018-11-09 2019-03-29 安徽典典科技发展有限责任公司 一种差异数据比较和同步方法
CN110716727A (zh) * 2019-09-02 2020-01-21 领翌技术(横琴)有限公司 软件升级方法及系统
CN111045708A (zh) * 2019-12-20 2020-04-21 新华三大数据技术有限公司 软件升级方法、电子设备和计算机可读存储介质
CN111104149A (zh) * 2018-10-25 2020-05-05 华为技术有限公司 一种固件升级方法、装置及终端
CN112486554A (zh) * 2020-12-01 2021-03-12 中国科学院合肥物质科学研究院 一种车载联网终端软件升级方法
CN112506547A (zh) * 2020-12-16 2021-03-16 杭州和利时自动化有限公司 组态数据下装方法、装置、设备及可读存储介质
CN113138791A (zh) * 2021-05-18 2021-07-20 拉扎斯网络科技(上海)有限公司 基于嵌入式系统的升级处理方法、装置及电子设备
CN113721967A (zh) * 2021-08-30 2021-11-30 苏州磐联集成电路科技股份有限公司 差分包生成方法,差分包生成设备,及升级方法
CN113946360A (zh) * 2021-12-21 2022-01-18 万帮数字能源股份有限公司 功率转换控制器的引导程序的升级方法和装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102017119065B4 (de) * 2017-08-21 2020-12-10 Infineon Technologies Ag Aktualisieren eines Speichers
US11650811B2 (en) * 2019-11-26 2023-05-16 Hyundai Autoever Corp. Method of updating control unit for vehicle

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103605552A (zh) * 2013-11-29 2014-02-26 Tcl通力电子(惠州)有限公司 Mcu的升级方法和装置
CN109508534A (zh) * 2017-09-14 2019-03-22 厦门雅迅网络股份有限公司 防止通过软件降级进行攻击的方法、嵌入式系统
CN111104149A (zh) * 2018-10-25 2020-05-05 华为技术有限公司 一种固件升级方法、装置及终端
CN109542679A (zh) * 2018-11-09 2019-03-29 安徽典典科技发展有限责任公司 一种差异数据比较和同步方法
CN110716727A (zh) * 2019-09-02 2020-01-21 领翌技术(横琴)有限公司 软件升级方法及系统
CN111045708A (zh) * 2019-12-20 2020-04-21 新华三大数据技术有限公司 软件升级方法、电子设备和计算机可读存储介质
CN112486554A (zh) * 2020-12-01 2021-03-12 中国科学院合肥物质科学研究院 一种车载联网终端软件升级方法
CN112506547A (zh) * 2020-12-16 2021-03-16 杭州和利时自动化有限公司 组态数据下装方法、装置、设备及可读存储介质
CN113138791A (zh) * 2021-05-18 2021-07-20 拉扎斯网络科技(上海)有限公司 基于嵌入式系统的升级处理方法、装置及电子设备
CN113721967A (zh) * 2021-08-30 2021-11-30 苏州磐联集成电路科技股份有限公司 差分包生成方法,差分包生成设备,及升级方法
CN113946360A (zh) * 2021-12-21 2022-01-18 万帮数字能源股份有限公司 功率转换控制器的引导程序的升级方法和装置

Also Published As

Publication number Publication date
CN114567628A (zh) 2022-05-31

Similar Documents

Publication Publication Date Title
CN111309364B (zh) 芯片程序的升级方法、装置及存储介质
US20090265403A1 (en) File system
US6272587B1 (en) Method and apparatus for transfer of data between cache and flash memory in an internal combustion engine control system
US20070226400A1 (en) Information processing apparatus and method of using otp memory
US7287117B2 (en) Flash memory and mapping control apparatus and method for flash memory
CN109086078B (zh) 安卓系统升级方法、装置、服务器及移动终端
CN111562934B (zh) 一种基于热补丁的软件系统升级方法、终端及存储介质
CN102163155A (zh) 存储设备的升级方法及升级控制装置
US20100174850A1 (en) Data moving method and system utilizing the same
US20230153012A1 (en) Memory system and control method
CN112596668A (zh) 一种存储器的坏块处理方法及系统
CN110688141B (zh) 固件更新方法
US20140281125A1 (en) Systems and methods for in-place reorganization of device storage
CN114567628B (zh) 一种ota升级方法和装置
JP4740553B2 (ja) データ・アクセス要求再マッピング・システム
US6314024B1 (en) Data processing apparatus
CN110928570A (zh) 一种固件升级的方法及装置、可读存储介质
CN111580840A (zh) 一种基于分布式内存管理实现ecu更新的方法
CN110825714A (zh) 文件存储控制方法及其装置、文件存储装置、电子装置
CN115640269B (zh) 一种基于按需复制的安卓应用安装加速方法
CN112000358B (zh) 充电桩的升级方法与智能充电桩
CN112732309A (zh) Flash存储器的更新方法、装置和电子设备
KR102118161B1 (ko) 장치 저장의 제자리 재조직을 위한 시스템들 및 방법들
JP2023070929A (ja) 電子制御システム、ソフトウェアパッケージのデータ構造及びコンピュータプログラム
CN116560687A (zh) 基于usb msc传输协议的固件升级方法及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant