掌桥专利:专业的专利平台
掌桥专利
首页

一种基于Autosar的自适应应用升级方法及装置

文献发布时间:2024-04-18 19:58:21


一种基于Autosar的自适应应用升级方法及装置

技术领域

本申请实施例涉及应用升级技术领域,尤其涉及一种基于Autosar的自适应应用升级方法及装置。

背景技术

汽车开放系统架构(Automotive Open System Architecture,Autosar)是由主流汽车OEM、供应商以及工具开发商制定的开放标准。Autosar软件架构具有模块化、接口标准化,软件分层控制等特点。

虽然,Autosar规范了位于自适应平台上的持久化模块对应的升级接口,但是,现有的持久化模块的升级接口仅能够基于SOTA方式对自适应应用的持久化数据进行升级,而不能支持FOTA方法对自适应应用的持久化数据进行升级。

发明内容

本申请提供一种基于Autosar的自适应应用升级方法及装置,以使持久化模块不但能够支持SOTA方式对自适应应用进行升级,还能够使持久化模块支持FOTA方式升级对自适应应用升级。

第一方面,提供一种基于Autosar的自适应应用升级方法,包括:

创建第一只读分区、第二只读分区和数据分区;第一只读分区为存储自适应应用的安装文件的当前系统分区;其中,安装文件包括自适应应用的可执行文件以及与持久化模块对应的升级清单;升级清单携带有自适应应用的最新版本信息;第二只读分区为在自适应应用升级时将第一只读分区中的当前系统刷写为升级后的新系统的备份分区;数据分区用于存储自适应应用的数据文件;其中,数据文件包括持久化模块访问的持久化数据以及已存储清单,已存储清单是将自适应应用在升级前的当前执行清单拷贝到数据分区后形成的;

根据第一只读分区中升级清单中记载的自适应应用的最新版本信息与数据分区中已存储清单中记载的自适应应用的已存储版本信息,判断是否对自适应应用升级;

在确定对自适应应用升级后,利用持久化模块在数据分区中创建持久化数据的备份,并更新持久化数据。

第二方面,提供一种基于Autosar的自适应应用升级装置,包括:

分区模块,用于创建第一只读分区、第二只读分区和数据分区;第一只读分区为存储自适应应用的安装文件的当前系统分区;其中,安装文件包括自适应应用的可执行文件以及与持久化模块对应的升级清单;升级清单携带有自适应应用的最新版本信息;第二只读分区为在自适应应用升级时将第一只读分区中的当前系统刷写为升级后的新系统的备份分区;数据分区用于存储自适应应用的数据文件;其中,数据文件包括持久化模块访问的持久化数据以及已存储清单,已存储清单是将自适应应用在升级前的当前执行清单拷贝到数据分区后形成的;

判断模块,用于根据第一只读分区中升级清单中记载的自适应应用的最新版本信息与数据分区中已存储清单中记载的自适应应用的已存储版本信息,判断是否对自适应应用升级;

更新备份模块,用于在确定对自适应应用升级后,利用持久化模块在数据分区中创建持久化数据的备份,并更新持久化数据。

第三方面,提供一种电子设备,包括:处理器和存储器,该存储器用于存储计算机程序,该处理器用于调用并运行该存储器中存储的计算机程序,执行如第一方面或其各实现方式中的方法。

第四方面,提供一种计算机可读存储介质,用于存储计算机程序,计算机程序使得计算机执行如第一方面或其各实现方式中的方法。

通过本申请提供的技术方案,通过创建第一只读分区、第二只读分区和数据分区,并将第一只读分区作为存储自适应应用的安装文件的当前系统分区,以及将第二只读分区作为在自适应应用升级时将第一只读分区中的当前系统刷写为升级后的新系统的备份分区,以实现通过FOTA方式对自适应应用升级;并通过将数据分区用于存储自适应应用的数据文件,可在确定对自适应应用升级后,利用持久化模块在数据分区中创建持久化数据的备份,并更新持久化数据,实现在数据分区对与自适应应用对应的持久化数据的改写。由此可见,本申请通过创建第一只读分区、第二只读分区和数据分区,并将第一只读分区作为存储自适应应用的安装文件的当前系统分区、将第二只读分区作为第一只读分区中的当前系统刷写为升级后的新系统的备份分区、以及将数据分区存储自适应应用的数据文件,并在确定对自适应应用升级后,通过利用持久化模块在数据分区中创建持久化数据的备份,并更新持久化数据,完成在数据分区对持久化数据的改写,以实现对安装文件的读取和对数据文件的改写的分离,以使持久化模块支持对自适应应用以SOTA方式升级,还能够使持久化模块支持FOTA方式对自适应应用升级,实现自适应平台能够为具有连网功能的设备提供固件升级服务。

本申请附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的一种基于Autosar的自适应应用升级方法的流程图;

图2为本申请实施例提供的另一种基于Autosar的自适应应用升级方法的流程图;

图3为本申请实施例提供的再一种基于Autosar的自适应应用升级方法的流程图;

图4为本申请实施例提供的一种基于Autosar的自适应应用升级装置的模块示意图;

图5是本申请实施例提供的电子设备800的示意性框图;

图6为本申请实施例提供的第一只读分区的目录结构;

图7为本申请实施例提供的数据分区的目录结构;

图8为本申请实施例提供的备份并升级后的数据分区的目录结构。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。

需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

汽车开放系统架构(Automotive Open System Architecture,Autosar)是一个开发的标准化的汽车软件架构,主要由用户应用层、系统层及硬件层组成,其中,在用户应用层和硬件层之间设有自适应平台(Adaptive Platform,AP),自适应平台动态管理资源和通信,减少用于开发和集成软件所需的努力,同时,执行应用程序的分发,并允许系统集成商慎重集成,消除故障危险以确保安全。

自适应平台由功能集群提供的应用程序接口组成,这些应用程序接口属于自适应平台基础(Adaptive Platform Foundation,APF)或自适应平台服务(Adaptive PlatformService,APS)。自适应平台基础提供自适应平台的基本功能,自适应平台服务提供自适应平台的平台标准服务,任何自适应应用也可以向其他自适应应用提供非平台服务(Non-PF)。

在自适应平台的功能集群上开发的应用程序为自适应应用。其中,Persistency持久化功能集群所组成的持久化模块是自适应平台中的一个模块,其能够提供非易失性存储的机制和标准接口。

SOTA(Software updates Over The Air),即软件在线升级,是指在不刷写固件的情况下,通过网络通讯方式,实现应用程序的更新。

FOTA(Firmware Over-The-Air)指通过云端升级技术,为具有连网功能的设备提供固件升级服务。固件升级如果失败可能导致系统无法启动。

如上所述,虽然Autosar规范了自适应平台中的持久化模块的升级接口,但是,现有的持久化模块的升级接口仅能够基于SOTA方式对自适应应用的持久化数据进行升级,而没有考虑以二进制文件(只读)和应用数据文件(可写)进行分离以支持对自适应应用以FOTA方式升级,因此,现有的持久化模块不能支持FOTA方式对自适应应用的持久化数据进行升级。

为了解决上述技术问题,本申请的发明构思是:为了持久化模块支持FOTA方式升级,则主要考虑将自适应应用的二进制文件(只读)和应用数据文件(可写)进行分离。而为了持久化模块支持FOTA方式升级,则需要从自适应应用的文件整体存储的分区进行规划,因此,本申请通过创建第一只读分区、第二只读分区和数据分区,将第一只读分区作为存储自适应应用的安装文件的当前系统分区;将第二只读分区作为在自适应应用升级时将第一只读分区中的当前系统刷写为升级后的新系统的备份分区;并将数据分区用于存储自适应应用的数据文件,以实现第一只读分区为当前系统分区、第二只读分区为以FOTA方式升级时直接刷写分区形成新系统的备份分区,并实现了数据分区对自适应应用的数据文件的存储,进而实现支持对自适应应用所涉及的文件的读写分离的同时,并从自适应应用整体上的完成分区规划的目的,使持久化模块同时支持FOTA方式和SOTA方式对自适应应用升级。

下面将对本申请技术方案进行详细阐述:

图1为本申请实施例提供的一种基于Autosar的自适应应用升级方法的流程图。如图1所示,该方法可以包括如下步骤:

S110、创建第一只读分区、第二只读分区和数据分区。

这里,第一只读分区为存储自适应应用的安装文件的当前系统分区,其中,安装文件包括自适应应用的可执行文件以及与持久化模块对应的升级清单;升级清单携带有自适应应用的最新版本信息。

需要说明的是,当前系统分区可以为当前系统运行的分区;自适应应用的安装文件可以是自适应应用对应的二进制文件、只读配置文件、当前执行清单或升级清单;其中,当前执行清单可以为自适应应用在升级前的持久化模块对应的执行清单,升级清单可以为自适应应用在升级时持久化模块对应的执行清单;在升级结束后,升级清单即作为升级后的自适应应用对应的当前执行清单。自适应应用的最新版本信息可以为自适应应用待升级的目标版本所对应的版本编号,例如:自适应应用为AsfPerProxy,AsfPerProxy可根据升级后的安装文件升级为v2.0版本的AsfPerProxy,可确定出该AsfPerProxy的最新版本信息为v2.0,由此可见,最新版本信息也可以根据升级后的安装文件对应的版本信息确定。此外,通过将自适应应用的安装文件存储在第一只读分区中,还能够保证自适应应用所对应的出厂数据的安全性。

本申请实施例中,第二只读分区为在自适应应用升级时将第一只读分区中的当前系统刷写为升级后的新系统的备份分区。其中,第二只读分区在备份之前可以为空白分区。

可以理解为,在第一只读分区中的自适应应用为v1.0版本时,,如需对v1.0版本的自适应应用进行升级,则利用FOTA方式在第二只读分区内对第一只读分区中的当前系统进行刷写以得到为升级后的新系统,也即,第二只读分区直接刷写分区为新系统即可,从而实现v1.0版本的自适应应用在第二只读分区中被刷写成v2.0版本的自适应应用,由此可见,本实施例中在对自适应应用升级时,第二只读分区是作为在自适应应用升级时将第一只读分区中的当前系统刷写为升级后的新系统的备份分区,以实现在对自适应应用在第二只读分区中进行升级时,通过本实施例可以在不影响升级前的自适应应用在第一只读分区中的运行的情况下,使该自适应应用的升级在第二只读分区中完成,进而保证该自适应应用的升级从第一只读分区无缝切换至第二只读分区。

可以理解的是,在当前系统分区由第一只读分区切换至第二只读分区后,第二只读分区将作为新版本自适应应用运行的当前系统区分,而第一只读分区将作为下次升级时将当前系统刷写为升级后的新系统的备份分区,如此不断迭代,以完成自适应应用的不断升级。

需要说明的是,在第二只读分区运行新版本的自适应应用时,该第二只读分区则转变为当前系统分区,因此,此时的第二只读分区可视为运行新版本的自适应应用的新的第一只读分区。若对新的第一只读分区中的自适应应用再次升级,则将原来的第一只读分区作为新的第二只读分区,使该新的第二只读分区作为运行最新版本信息对应的自适应应用的备份分区,由此可见,通过上述升级方式,可以实现对不同版本的自适应应用在第一只读分区和第二只读分区之间的依次迭代升级,这里,若某一当前版本的自适应应用在当前的第二只读分区中升级的过程中无法完成升级,则该版本对应的前一版本的自适应应用还能够在当前的第一只读分区中运行,以保证前一版本的自适应应用在当前的第一只读分区中回退。

本申请实施例中,数据分区用于存储自适应应用的数据文件;其中,数据文件为可读写的数据,数据文件可以包括持久化模块访问的持久化数据以及已存储清单,已存储清单是将自适应应用在升级前的当前执行清单拷贝到数据分区后形成的。

这里,持久化数据可以包括持久化模块访问的在数据分区中文件存储位置和键值对存储位置分别对应的数据;自适应应用在升级前的当前执行清单可以为自适应应用升级前在第一只读分区中当前运行对应的执行清单,因此,已存储清单可以通过将自适应应用升级前在第一只读分区中运行时对应的当前执行清单拷贝到数据分区后所形成。或者,在升级结束后,升级清单即作为升级后的自适应应用对应的当前执行清单,将该当前执行清单拷贝到数据分区后即形成已存储清单。

例如:自适应应用在升级前在第一只读分区中当前运行时对应的执行清单为per_manifest.json,则已存储清单可以通过将per_manifest.json拷贝到数据分区后所形成,即形成的已存储清单可以表示为per_manifest_stored.json。

S120、根据第一只读分区中升级清单中记载的自适应应用的最新版本信息与数据分区中已存储清单中记载的自适应应用的已存储版本信息,判断是否对自适应应用升级。

需要说明的是,这里的自适应应用的最新版本信息为第一只读分区中的自适应应用对应的更新后的待确定执行的版本信息,这里的已存储版本信息可以为自适应应用在升级前的当前执行清单所对应的当前版本信息,由此可见,本步骤是通过根据第一只读分区中升级清单中记载的自适应应用的最新版本信息与已存储清单中的已存储版本信息进行对比,判断是否对自适应应用升级。

示例性的,若自适应应用在升级前的已存储清单所对应的已存储版本信息为v1.0版本,第一只读分区中升级清单中记载的自适应应用的最新版本信息为v2.0版本,通过对上述两版本信息的对比结果,则能够判断出应当对该自适应应用升级;若自适应应用在升级前的已存储清单所对应的已存储版本信息为v3.0版本,第一只读分区中升级清单中记载的自适应应用的最新版本信息为v2.0版本,通过对上述两版本信息的对比结果,则能够判断出不应当对该自适应应用升级,由此可见,通过上述两版本信息的对比结果,能够直观的判断出是否对自适应应用升级,以实现自适应平台能够为具有连网功能的设备提供固件升级服务。

可以理解的是,当前执行清单中携带有自适应应用对应的应用程序的当前版本信息,升级清单中携带有自适应应用对应的应用程序的升级版本信息,版本信息包括版本标识,版本标识可以为v1.0,或v1.0.0.0,其中,使用“.”可用于区分应用程序的主要版本、次要版本、补丁版本和Build版本,当持久化功能集群升级或者自适应应用数据相关功能升级时,版本标识可以递增。

S130、在确定对自适应应用升级后,利用持久化模块在数据分区中创建持久化数据的备份,并更新持久化数据。

例如,持久化数据可以为storage_fs_aa(v1.0)和storage_fs_aa(v1.0),在确定对自适应应用升级后,利用持久化模块在数据分区中对storage_fs_aa(v1.0)和storage_fs_aa(v1.0)分别进行备份,得到的持久化数据的备份可以标记为storage_fs_aa-backup(v1.0)、storage_fs_aa-backup(v1.0),再利用持久化模块在数据分区对storage_fs_aa(v1.0)和storage_fs_aa(v1.0)进行升级,得到新的持久化数据为storage_fs_aa(v2.0)和storage_fs_aa(v2.0),以完成对持久化数据的更新。由此可见,本实施例通过在数据分区对持久化数据进行备份和升级,以完成在数据分区对持久化数据的改写。

采用上述方法,通过创建第一只读分区、第二只读分区和数据分区,并将第一只读分区作为存储自适应应用的安装文件的当前系统分区,以及将第二只读分区作为在自适应应用升级时将第一只读分区中的当前系统刷写为升级后的新系统的备份分区,以实现通过FOTA方式升级自适应应用,以使对该自适应应用的升级在第二只读分区中完成;同时,还通过将数据分区用于存储自适应应用的数据文件,可在确定对自适应应用升级后,利用持久化模块在数据分区中创建持久化数据的备份,并更新持久化数据,以实现在数据分区对与自适应应用对应的持久化数据的改写。由此可见,本申请通过创建第一只读分区、第二只读分区和数据分区,并将第一只读分区作为存储自适应应用的安装文件的当前系统分区、将第二只读分区作为第一只读分区中的当前系统刷写为升级后的新系统的备份分区、以及将数据分区存储自适应应用的数据文件,并在确定对自适应应用升级后,通过利用持久化模块在数据分区中创建持久化数据的备份,并更新持久化数据,完成在数据分区对持久化数据的改写,实现对安装文件的读取和对数据文件的改写的分离,以使本申请提供的持久化模块支持对自适应应用以SOTA方式升级,还能够使持久化模块支持FOTA方式对自适应应用升级。

进一步地,本实施例在根据第一只读分区中升级清单中记载的自适应应用的最新版本信息与数据分区中已存储清单中记载的自适应应用的已存储版本信息,判断是否对自适应应用升级之前,还可以包括:

S210、在第一只读分区创建自适应应用对应的第一根目录。

在本步骤中,第一根目录包括用于存储自适应应用的可执行文件的第一子目录、用于存储持久化模块对应的升级清单或当前执行清单的第二子目录以及用于链接到自适应应用在数据分区中的持久化数据存储地址的共享目录。

在一些可实现方式中,在第一只读分区中的每个自适应应用都有固定对应的第一根目录,第一根目录可以包括bin子目录和etc子目录,这里以自适应应用为AsfPerProxy(v1.0)为例进行举例说明,第一根目录可以命名为:AsfPerProxy(v1.0),bin子目录即第一子目录用于存放AsfPerProxy(v1.0)对应的二进制文件,etc子目录即第二子目录用于存放AsfPerProxy(v1.0)对应的只读配置文件。只读配置文件可以包括持久化模块对应的升级清单或当前执行清单。

需要说明的是,第二子目录存储有持久化模块对应的升级清单,也可以存储持久化模块对应的当前执行清单或在自适应应用升级后的升级清单,例如,当前执行清单为per_manifest.json,则根据第二子目录中的路径将该per_manifest.json在第一只读分区中存储。

在本步骤中,在第一根目录的目录结构中设置用于链接到自适应应用在数据分区中的持久化数据存储地址的共享目录,共享目录可命名为shared,可通过该共享目录直接跳转至自适应应用在数据分区中的持久化数据的存储地址,这里,共享目录可以包括用于存储自适应应用在数据分区中的持久化数据的存储路径,例如,AsfPerProxy,存储路径为/data/AsfPerProxy/Per,则通过该共享目录的存储路径可跳转至数据分区中的AsfPerProxy应用对应的可持续数据存储位置,进而可以快速找到数据分区中的自适应应用对应的可持续数据;由此可见,通过共享目录在第一根目录中的设置,可以便于在数据分区中对该自适应应用的可持续数据进行改写,以使得通过在持久化模块上对自适应应用的改写和开发不必关系到自适应应用的安装文件在第一可读分区中的实际存储位置,以实现持久化模块与数据分区解耦。

示例性地,第一只读分区的目录结构如图6所示。

S220、在数据分区创建自适应应用对应的第二根目录。

在本步骤中,第二根目录包括用于存储自适应应用对应的持久化数据的第三子目录,示例性地,第二根目录可以命名为:AsfPerProxy,第三子目录可以命名为:Per,也即是说,/data/AsfPerProxy/Per目录表示AsfPerProxy应用的Persi stency的数据中心目录,第三子目录用于存储已存储清单和备份清单,备份清单是自适应应用在备份完成后将当前执行清单拷贝到第三子目录后形成的;第三子目录还用于存储持久化数据的备份以及更新后的持久化数据。

在一些可实现方式中,在数据分区中的每个自适应应用都有固定对应的第三子目录,可在第三子目录预先设置已存储清单对应的清单标识、以及备份清单对应的清单标识,例如:per_manifest_stored.json用于表征已存储清单;又例如per_manifest_backup.json用于表征备份清单。这里,在自适应应用在第二根目录中备份完成后,通过将当前执行清单拷贝到第三子目录后形成备份清单,可以实现通过查看第三子目录即可获取与当前执行清单对应的备份清单,以便于在后续步骤中的对备份清单的加载。

在本步骤中,第三子目录还可以存储持久化数据,持久化数据包括键值存储库以及文件存储库;键值存储库存储有多个健值对(即KeyValue),文件存储库存储有多个文件(即File),可在第三子目录预先设置键值存储库以及文件存储库对应的库标识,示例性地,storage_fs_aa(v1.0)和storage_kvs_bb(v1.0)分别表示持久化数据File Storage aa在数据分区中的存储位置、和持久化数据Key Value Storage bb在数据分区中的存储位置。

示例性地,数据分区的目录结构如图7所示。

进一步地,本实施例在在确定对自适应应用升级后,利用持久化模块在数据分区中创建持久化数据的备份,并更新持久化数据,可以包括:将键值存储库以及文件存储库备份并基于预设升级策略调用持久化模块的升级函数将键值存储库以及文件存储库升级。

示例性地,可先将storage_fs_aa(v1.0)和storage_kvs_bb(v1.0)的数据进行备份并修改库标识为storage_fs_aa-backup(v1.0)和storage_kvs_bb-backup(v1.0),以完成持久化数据的备份;在将File Storage aa(v1.0)和Key Value Storage bb(v1.0)的数据升级后,可将storage_fs_aa(v1.0)和storage_kvs_bb(v1.0)的库标识修改为storage_fs_aa(v2.0)和storage_kvs_bb(v2.0)以完成持久化数据的升级。

示例性地,备份并升级后的数据分区的目录结构如图8所示。

采用上述方法,通过在第一只读分区创建上述第一根目录,在数据分区创建上述第二根目录,能够便于自适应应用的可执行文件和持久化模块对应的升级清单在第一只读分区上的存储、以及自适应应用对应的持久化数据在第二根目录上的存储,并通过在第一根目录上设置共享目录、以及通过第三子目录存储已存储清单和备份清单,能够通过该共享目录可跳转至数据分区中的可持续数据存储位置后,在数据分区中根据已存储清单和备份清单完成对该自适应应用的持久化数据的备份和更新,以实现在据分区中对该自适应应用对应的可持续数据的改写。

更进一步地,本实施例在确定对自适应应用升级后,利用持久化模块在数据分区中创建持久化数据的备份,并更新持久化数据,可以包括:

S310、若最新版本信息高于已存储版本信息,则在第二只读分区内对第一只读分区中的当前系统进行刷写以得到升级后的新系统,并将第二只读分区切换为升级后的当前系统分区以对自适应应用升级。

可以理解的是,步骤S310中升级后的新系统即为切换后的当前系统。

示例性的,若最新版本信息的版本编号为v 2.0,已存储版本信息的版本编号为v1.0,则表示与最新版本信息对应的自适应应用的版本高于已存储版本信息对应的当前执行的自适应应用的版本,并确定应该运行该最新版本信息对应的自适应应用。

在本步骤中,在确定最新版本信息高于已存储版本信息后,即可确定对自适应应用升级。由于,第二只读分区为在自适应应用升级时将第一只读分区中的当前系统刷写为升级后的新系统的备份分区,因此,在第二只读分区内对第一只读分区中的当前系统进行刷写以得到升级后的新系统,以使第二只读分区中存储有与最新版本信息对应的安装文件,故在关机重启后,将存储有与最新版本信息对应的安装文件的第二只读分区切换为升级后的当前系统分区,即可实现对自适应应用从第一只读分区到第二只读分区的无缝升级。

示例性的,若自适应应用为AsfPerProxy(v1.0),在第二只读分区内对第一只读分区中的当前系统刷写为升级后的新系统的过程可以为:将AsfPerProxy(v1.0)对应的当前系统在第二只读分区中直接刷写分区为新系统新系统即可实现AsfPerProxy(v2.0)在第二只读分区中运行,即可完成对自适应应用的升级。

S320、若最新版本信息等于已存储版本信息,则确定不对自适应应用进行升级。

例如,若最新版本信息的版本编号为v1.0,已存储版本信息的版本编号为v1.0,则表示与最新版本信息对应的自适应应用的版本与在第一只读分区中的当前运行的自适应应用的版本相同,因此,在此情形下,不需要对该自适应应用进行升级。

S330、若最新版本信息小于已存储版本信息,则确定对自适应应用进行回滚或降级。

例如,若最新版本信息的版本编号为v1.0,已存储版本信息的版本编号为v2.0,则表示与最新版本信息对应的自适应应用的版本小于在第一只读分区中的当前运行的自适应应用的版本,因此,在此情形下,不需要对该自适应应用进行升级的同时,则确定在第一只读分区中对自适应应用进行回滚或降级。

采用上述方法,通过最新版本信息与已存储版本信息之间的比较,判断与最新版本信息对应的自适应应用的版本是否高于已存储版本信息对应的当前执行的自适应应用的版本,即最新版本信息对应的自适应应用的版本是否高于在第一只读分区中运行的当前运行的自适应应用的版本,进而确定是否将第二只读分区切换为升级后的当前系统分区,以完成对自适应应用的升级,同时在最新版本信息小于或等于已存储版本信息时,即为自适应应用升级发生故障时,通过在第一只读分区中的当前自适应应用的继续运行、回滚或降级,以保证该自适应应用在第一只读分区的持续运行。

图2为本发明提供的另一个实施例的基于Autosar的自适应应用升级方法的流程图。如图2所示,在上述S310之后还包括:

S410、加载第三子目录存储的备份清单以得到备份清单对应的已备份版本信息。

在本步骤中,通过加载第三子目录存储的备份清单,得到该备份清单对应的已备份版本信息,即可确定在数据分区中的已备份的持久化数据的版本信息。

S420、比较已存储版本信息和已备份版本信息。

在本步骤中,由于已存储版本信息可以为数据分区中的自适应应用在升级前的当前执行清单所对应的当前版本信息,因此,通过比较已存储版本信息和已备份版本信息是否相同,即可确定是否完成对当前运行的自适应应用的可持久数据在数据分区中的备份。

S430、若已存储版本信息和已备份版本信息不同,则删除数据分区中与已备份版本信息对应的备份文件;备份文件包括备份清单以及与备份清单对应的持久化数据。

可以理解的是,当已存储版本信息和已备份版本信息不同时,可确定未完成对当前运行的自适应应用的可持久数据在数据分区中的备份,因此,通过删除数据分区中与已备份版本信息对应的备份文件,即可完成对在数据分区中的当前运行的自适应应用的备份文件的清理。

示例性地,若已存储版本信息为v2.0,已备份版本信息为v1.0,则表明当前已备份v1.0版本并非最新版本,即未完成对v2.0版本的可持久数据的备份,此时,需删除数据分区中与v1.0版本信息对应的备份文件。

此外,若已存储版本信息和已备份版本信息相同,则表明完成了当前运行的自适应应用的可持久数据在数据分区中的备份,但是可能因为在升级时发生断电的原因,未来得及对数据分区中的已存储清单所对应的可持久数据进行升级,因此,此时删除第二根目录中的所有文件,再通过备份清单和已存储清单对第二根目录进行恢复,并通过对已存储清单对持久化数据的备份并升级,即可在完成对当前执行的自适应应用在升级前的在数据分区中的备份的同时,也实现了对持久化数据在数据分区中的升级。

S440、将已存储清单作为新的备份清单并基于已存储清单对应的持久化数据完成对自适应应用的备份。

在本步骤中,在确定已存储版本信息和已备份版本信息不同后,并在删除数据分区中与已备份版本信息对应的备份文件后,通过将已存储清单作为新的备份清单,并基于已存储清单对应的持久化数据完成对自适应应用的备份,即完成对当前运行的自适应应用的可持久数据在数据分区中的备份。

采用上述方法,通过比较备份清单对应的已备份版本信息和已存储版本信息,判断是否完成对当前运行的自适应应用的可持久数据在数据分区中的备份,并在已存储版本信息和已备份版本信息不同时,即为未完成对当前运行的自适应应用的可持久数据在数据分区中的备份时,删除数据分区中与已备份版本信息对应的备份文件,最后将已存储清单作为新的备份清单并基于已存储清单对应的持久化数据完成对自适应应用的备份,进而保证完成对当前执行的自适应应用的可持久数据在升级前的在数据分区中的备份。

图3为本发明提供的另一个实施例的基于Autosar的自适应应用升级方法的流程图。如图3所示,在上述S330包括:

S510、加载第三子目录存储的备份清单以得到备份清单对应的已备份版本信息;

S520、比较最新版本信息和已备份版本信息。

在本步骤中,由于最新版本信息为升级清单携带的待升级版本对应的自适应应用的版本信息,因此,通过比较最新版本信息和已备份版本信息是否相同,即可确定是否完成对最新版本信息的自适应应用的可持久数据在数据分区中的存储。

S530、若最新版本信息和已备份版本信息相同,则删除数据分区中与已存储版本信息对应的已存储文件;已存储文件包括已存储清单以及与已存储清单对应的持久化数据。

可以理解的是,若最新版本信息为v1.0,已存储版本信息为v2.0,已备份版本信息也为v1.0,则表明在数据分区中已对最新版本信息对应的自适应应用的可持久数据进行存储,因此,需要对数据分区中与已存储版本信息v2.0对应的已存储文件进行删除,即可完成对在数据分区中的与当前运行的自适应应用对应的已存储文件的清理。

S540、将升级清单作为新的已存储清单并基于备份清单对应的持久化数据完成对自适应应用的回滚或降级。

在本步骤中,在最新版本信息和已备份版本信息相同后,并在删除数据分区中与已存储版本信息对应的已存储文件后,通过将升级清单作为新的已存储清单,即完成对最新版本信息对应的自适应应用的可持久数据在数据分区中的存储,并基于备份清单对应的持久化数据,即可完成对自适应应用的回滚或降级。

需要说明的是,在基于备份清单对应的持久化数据完成对自适应应用的回滚或降级时,若持久化数据的备份为storage_fs_aa-backup(v1.0)和storage_kvs_bb-backup(v1.0),则根据该备份数据对持久化数据进行恢复,即将storage_fs_aa-backup(v1.0)和storage_kvs_bb-backup(v1.0)的库标识修改为storage_fs_aa(v1.0)和storage_kvs_bb(v1.0),同时删除storage_fs_aa(v2.0)和storage_fs_aa(v2.0),完成对自适应应用的回滚或降级。

采用上述方法,通过比较备份清单对应的已备份版本信息和最新版本信息,判断是否完成对最新版本信息的自适应应用的可持久数据在数据分区中的存储,并在最新版本信息和已备份版本信息相同时,即为完成对最新版本信息的自适应应用的可持久数据在数据分区中的存储时,删除数据分区中与已存储版本信息对应的已存储文件,最后将升级清单作为新的已存储清单并基于备份清单对应的持久化数据完成对自适应应用的回滚或降级,进而保证完成对最新版本信息的自适应应用的可持久数据在数据分区中的存储。

在示例性实施例中,持久化数据包括键值存储库文件以及文件存储库文件;相应地;本实施例在在确定对自适应应用升级后,利用持久化模块在数据分区中创建持久化数据的备份,并更新持久化数据,可以包括:将键值存储库文件以及文件存储库文件备份并基于预设升级策略调用持久化模块的升级函数将键值存储库文件以及文件存储库文件升级。

可以理解的是,在确定对自适应应用升级后,将键值存储库以及文件存储库文件在数据分区中备份,以完成通过利用持久化模块在数据分区中创建持久化数据的备份。

在本步骤中,预设升级策略可以为在基于Autosar机制通过EM模块拉起所有在第一只读分区中的自适应应用后,根据执行的具有可持续功能的自适应应用的代码,调用持久化模块提供的升级函数,升级函数可以包括UpdatePersistency、OpenKeyValueStorage、OpenFileStorage分别对应的函数中的至少一个,这三个函数均可实现对持久化数据的升级。

采用上述方法,通过将键值存储库以及文件存储库文件备份,并基于预设升级策略调用持久化模块的升级函数将键值存储库、以及文件存储库文件升级,以实现通过利用持久化模块在数据分区中能够快速创建持久化数据的备份、以及快速完成对持久化数据的更新。

进一步地,本实施例在根据第一只读分区中升级清单中记载的自适应应用的最新版本信息与数据分区中已存储清单中记载的自适应应用的已存储版本信息,判断是否对自适应应用升级之前,还可以包括:

S610、判断数据分区中的已存储清单是否存在;

S620、若已存储清单不存在,则基于升级清单在第一只读分区对自适应应用进行安装。

由于在对自适应应用的升级时,需基于完成对升级前的自适应应用的安装的基础上,才能实现对该自适应应用的升级,因此,对自适应应用升级之前,需要判断升级前的自适应应用是否完成在第一只读分区中的安装;又由于,在对自适应应用完成安装或升级后,会将自适应应用的当前执行清单拷贝到在数据分区中,因此,在升级前的自适应应用在完成安装后,数据分区中会存储有已存储清单。介于此,本实施例通过判断数据分区中的已存储清单是否存在,确定在第一只读分区中是否完成对自适应应用的安装,若数据分区中没有已存储清单,则可确定该自适应应用没有在第一只读分区中安装,再基于升级清单在第一只读分区对自适应应用完成安装,以保证自适应应用能够顺利升级。

图4是本发明提供的一个实施例的一种基于Autosar的自适应应用升级装置700的示意图。如图4所示,装置700包括:

分区模块701,用于创建第一只读分区、第二只读分区和数据分区;第一只读分区为存储自适应应用的安装文件的当前系统分区;其中,安装文件包括自适应应用的可执行文件以及与持久化模块对应的升级清单;升级清单携带有自适应应用的最新版本信息;第二只读分区为在自适应应用升级时将第一只读分区中的当前系统刷写为升级后的新系统的备份分区;数据分区用于存储自适应应用的数据文件;其中,数据文件包括持久化模块访问的持久化数据以及已存储清单,已存储清单是将自适应应用在升级前的当前执行清单拷贝到数据分区后形成的;

判断模块702,用于根据第一只读分区中升级清单中记载的自适应应用的最新版本信息与数据分区中已存储清单中记载的自适应应用的已存储版本信息,判断是否对自适应应用升级;

更新备份模块703,用于在确定对自适应应用升级后,利用持久化模块在数据分区中创建持久化数据的备份,并更新持久化数据。

在一些可实现方式中,该装置还包括:

第一根目录创建模块,用于在第一只读分区创建自适应应用对应的第一根目录;第一根目录包括:用于存储自适应应用的可执行文件的第一子目录、用于存储持久化模块对应的升级清单的第二子目录以及用于链接到自适应应用在数据分区中的持久化数据存储地址的共享目录;

第二根目录创建模块,用于在数据分区创建自适应应用对应的第二根目录;第二根目录包括:用于存储自适应应用对应的持久化数据的第三子目录,第三子目录用于存储已存储清单和备份清单,备份清单是自适应应用在备份完成后将当前执行清单拷贝到第三子目录后形成的;第三子目录还用于存储持久化数据的备份以及更新后的持久化数据。

在一些可实现方式中,判断模块702包括:

确定升级单元,用于若最新版本信息高于已存储版本信息,则在第二只读分区内对第一只读分区中的当前系统刷写为升级后的新系统,并将第二只读分区切换为升级后的当前系统分区以对自适应应用升级;或者

确定不升级单元,用于若最新版本信息等于已存储版本信息,则确定不对自适应应用进行升级;或者

回滚降级单元,用于若最新版本信息小于已存储版本信息,则确定对自适应应用进行回滚或降级。

在一些可实现方式中,更新备份模块703包括:

已备份版本信息获取单元,用于加载第三子目录存储的备份清单以得到备份清单对应的已备份版本信息;

对比单元,用于比较已存储版本信息和已备份版本信息;

备份文件删除文件,用于若已存储版本信息和已备份版本信息不同,则删除数据分区中与已备份版本信息对应的备份文件;备份文件包括备份清单以及与备份清单对应的持久化数据;

备份单元,用于将已存储清单作为新的备份清单并基于已存储清单对应的持久化数据完成对自适应应用的备份。

在一些可实现方式中,回滚降级单元包括:

已备份版本信息获取子单元,用于加载第三子目录存储的备份清单以得到备份清单对应的已备份版本信息;

对比子单元,用于比较最新版本信息和已备份版本信息;

已存储文件删除子单元,用于若最新版本信息和已备份版本信息相同,则删除数据分区中与已存储版本信息对应的已存储文件;已存储文件包括已存储清单以及与已存储清单对应的持久化数据;

回滚降级子单元,用于将升级清单作为新的已存储清单并基于备份清单对应的持久化数据完成对自适应应用的回滚或降级。

在一些可实现方式中,持久化数据包括键值存储库文件以及文件存储库文件;相应地;更新备份模块703包括:

升级单元,用于将键值存储库文件以及文件存储库文件备份并基于预设升级策略调用持久化模块的升级函数将键值存储库文件以及文件存储库文件升级。

在一些可实现方式中,该装置还包括:

已存储清单判断模块,用于判断数据分区中的已存储清单是否存在;

自适应应用安装模块,用于若已存储清单不存在,则基于升级清单在第一只读分区对自适应应用进行安装。

应理解的是,装置实施例与基于Autosar的自适应应用升级方法实施例可以相互对应,类似的描述可以参照基于Autosar的自适应应用升级方法实施例。为避免重复,此处不再赘述。具体地,图4所示的装置700可以执行上述基于Autosar的自适应应用升级方法实施例,并且装置700中的各个模块的前述和其它操作和/或功能分别为了实现上述基于Autosar的自适应应用升级方法中的相应流程,为了简洁,在此不再赘述。

上文中结合附图从功能模块的角度描述了本发明实施例的装置700。应理解,该功能模块可以通过硬件形式实现,也可以通过软件形式的指令实现,还可以通过硬件和软件模块组合实现。具体地,本发明实施例中的基于Autosar的自适应应用升级方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路和/或软件形式的指令完成,结合本发明实施例公开的基于Autosar的自适应应用升级方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。可选地,软件模块可以位于随机存储器,闪存、只读存储器、可编程只读存储器、电可擦写可编程存储器、寄存器等本领域的成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述基于Autosar的自适应应用升级方法实施例中的步骤。

图5是本发明提供的一个实施例的电子设备800的示意性框图。

如图5所示,该电子设备800可包括:

存储器801和处理器802,该存储器801用于存储计算机程序,并将该程序代码传输给该处理器802。换言之,该处理器802可以从存储器801中调用并运行计算机程序,以实现本发明实施例中的方法。

例如,该处理器802可用于根据该计算机程序中的指令执行上述方法实施例。

在本发明的一些实施例中,该电子设备800可以包括但不限于:

通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等等。

在本发明的一些实施例中,该存储器801包括但不限于:

易失性存储器和/或非易失性存储器。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double DataRate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synch link DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DR RAM)。

在本发明的一些实施例中,该计算机程序可以被分割成一个或多个模块,该一个或者多个模块被存储在该存储器801中,并由该处理器802执行,以完成本发明提供的方法。该一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述该计算机程序在该控制器中的执行过程。

如图5所示,该电子设备800还可包括:

收发器803,该收发器803可连接至该处理器802或存储器801。

其中,处理器802可以控制该收发器803与其他设备进行通信,具体地,可以向其他设备发送信息或数据,或接收其他设备发送的信息或数据。收发器803可以包括发射机和接收机。收发器803还可以进一步包括天线,天线的数量可以为一个或多个。

应当理解,该电子设备中的各个组件通过总线系统相连,其中,总线系统除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。

本发明还提供了一种计算机存储介质,其上存储有计算机程序,该计算机程序被计算机执行时使得该计算机能够执行上述方法实施例的方法。或者说,本发明提供的一个实施例还提供一种包含指令的计算机程序产品,该指令被计算机执行时使得计算机执行上述方法实施例的方法。

当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本发明实施例该的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(Digital Subscriber Line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(Digital Video Disc,DVD))、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

在本发明所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。

作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。例如,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。

以上仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以该权利要求的保护范围为准。

相关技术
  • 一种基于CAN通讯的火灾探测器远程升级方法及装置
  • 一种RAID卡的升级方法、升级系统及相关装置
  • 一种机箱管理系统的升级方法、升级系统及相关装置
  • 一种Adaptive AutoSAR平台的应用升级方法及装置
  • 一种可见光遥感图像舰船目标检测方法
技术分类

06120116481648