CN106802813B - 用于空中固件升级的方法、装置及车辆 - Google Patents
用于空中固件升级的方法、装置及车辆 Download PDFInfo
- Publication number
- CN106802813B CN106802813B CN201611111994.XA CN201611111994A CN106802813B CN 106802813 B CN106802813 B CN 106802813B CN 201611111994 A CN201611111994 A CN 201611111994A CN 106802813 B CN106802813 B CN 106802813B
- Authority
- CN
- China
- Prior art keywords
- firmware
- partition
- system partition
- backup system
- 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
Links
Images
Classifications
-
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/658—Incremental 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
本发明公开了用于空中固件升级的方法、装置及车辆,其中的方法包括:下载用于升级终端设备当前使用的固件版本的固件升级包;根据固件升级包在终端设备的备份***分区中执行固件升级操作;在终端设备的***分区配置信息中将所述备份***分区配置为主***分区,以使终端设备在下一次启动过程中,根据所述***分区配置信息确定出基于所述固件升级后的***分区执行固件启动操作。本发明提供的技术方案可以在用户无感知的情况下,使终端设备静默的实现空中固件升级,避免了利用Recovery模式实现空中固件升级过程中由于需要多次重启终端设备而影响用户对终端设备的正常使用的现象,从而本发明提供的技术方案有利于提高用户使用终端设备的体验。
Description
技术领域
本发明涉及网络通讯技术,具体涉及一种用于空中固件升级的方法、用于空中固件升级的装置以及设置有用于空中固件升级的装置的车辆。
背景技术
FOTA(Firmware Over-The-Air,空中固件升级)是一种通过云端对具有连网功能的终端设备(尤其是移动终端设备)提供固件升级服务的技术。
目前,FOTA的具体实现过程通常包括:首先,服务器获取终端设备的制造商以及固件版本信息等轮廓信息;其次,服务器根据终端设备的轮廓信息向终端设备提供固件升级包,如服务器向终端设备提供固件升级包的URL(Uniform Resoure Locator,统一资源***),终端设备根据该URL下载固件升级包,并将下载的固件升级包存储在Cache(高速缓存)分区或者Data(数据)分区中;在固件升级包下载完成后,终端设备中的更新代理执行该固件升级包的安装操作,并在安装完毕后,向服务器返回固件升级结果状态信息。
上述固件升级包的安装操作的一个具体实现过程通常为:终端设备重启并进入Recovery(恢复)模式,对固件升级包的数字签名证书进行验证,在验证通过后,对固件升级包进行脚本解析,并根据脚本解析结果对Boot分区(即启动分区)或者System分区(即***分区,如Root分区)中的内容进行更新,然后,使终端设备重新启动;在终端设备的重新启动过程中,如果检测到System分区中包含有用于更新Recovery分区的内容,则根据System分区中的内容更新Recovery分区中的内容。
发明人在实现本发明过程中发现:在现有的FOTA实现过程中,通常需要终端设备重新启动两次,终端设备的重新启动会影响用户对终端设备的正常使用,从而会影响用户使用终端设备的体验。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的用于空中固件升级的方法、装置及车辆。
依据本发明的其中一个方面,提供了一种用于空中固件升级的方法,该方法包括:下载用于升级终端设备当前使用的固件版本的固件升级包;根据所述固件升级包在终端设备的备份***分区中执行固件升级操作;在终端设备的***分区配置信息中将所述备份***分区配置为主***分区,以使终端设备在下一次启动时,根据所述***分区配置信息确定出基于所述固件升级后的***分区执行启动操作。
可选的,上述用于空中固件升级的方法,其中,在所述终端设备的当前***分区包括一个分区的情况下,所述备份***分区包括一个分区;或者
在所述终端设备的当前***分区包括多个分区的情况下,所述备份***分区包括多个分区,且备份***分区中的每一个分区分别对应当前***分区中的唯一一个分区。
可选的,上述用于空中固件升级的方法,其中,所述根据所述固件升级包在终端设备的备份***分区中执行固件升级操作的步骤包括:在确定出备份***分区中存在固件文件,且备份***分区中固件的版本与当前***分区中固件的版本相同的情况下,根据所述固件升级包在终端设备的备份***分区中执行固件升级操作。
可选的,上述用于空中固件升级的方法,其中,所述根据所述固件升级包在终端设备的备份***分区中执行固件升级操作的步骤还包括:在确定出备份***分区中不存在固件文件的情况下,根据所述当前***分区中的固件文件同步所述备份***分区。
可选的,上述用于空中固件升级的方法,其中,所述根据所述固件升级包在终端设备的备份***分区中执行固件升级操作的步骤还包括:在确定出备份***分区中存在固件文件、备份***分区中固件的版本与当前***分区中固件的版本不相同,且终端设备中未存储有用于将备份***分区中固件的版本升级到当前***分区中固件的版本的固件升级包的情况下,根据所述当前***分区中的固件文件同步所述备份***分区。
可选的,上述用于空中固件升级的方法,其中,所述方法还包括:清理所述终端设备中存储的所述同步操作之前所述备份***分区中固件的版本对应的固件升级包。
可选的,上述用于空中固件升级的方法,其中,所述根据所述固件升级包在终端设备的备份***分区中执行固件升级操作的步骤还包括:在确定出备份***分区中存在固件文件、备份***分区中固件的版本与当前***分区中固件的版本不相同,且终端设备中存储有用于将备份***分区中固件的版本升级到当前***分区中固件的版本的固件升级包的情况下,根据所述用于将备份***分区中固件的版本升级到当前***分区中固件的版本的固件升级包在终端设备的备份***分区中执行固件升级操作。
可选的,上述用于空中固件升级的方法,其中,所述方法还包括:
在终端设备首次启动过程中,在根据驻留在分区表中的分区信息确定出终端设备当前存在备份***分区的情况下,格式化所述备份***分区,并针对所述备份***分区执行挂载操作;或者
在终端设备启动过程中或者在终端设备成功下载用于升级其当前使用的固件版本的固件升级包后,在确定出终端设备当前不存在备份***分区的情况下,创建并格式化备份***分区,并针对所述备份***分区执行挂载操作。
依据本发明的另一个方面,提供了一种用于空中固件升级的装置,所述装置包括:下载模块,用于下载用于升级终端设备当前使用的固件版本的固件升级包;固件升级模块,用于根据所述固件升级包在终端设备的备份***分区中执行固件升级操作;分区切换模块,用于在终端设备的***分区配置信息中将所述备份***分区配置为主***分区,以使终端设备在下一次启动过程中,根据所述***分区配置信息确定出基于所述固件升级后的***分区执行固件启动操作。
可选的,上述用于空中固件升级的装置,其中,在所述终端设备的当前***分区包括一个分区的情况下,所述备份***分区包括一个分区;或者
在所述终端设备的当前***分区包括多个分区的情况下,所述备份***分区包括多个分区,且备份***分区中的每一个分区分别对应当前***分区中的唯一一个分区。
可选的,上述用于空中固件升级的装置,其中,所述固件升级模块包括:
第一判断子模块,用于判断备份***分区中是否存在固件文件;
第二判断子模块,用于在第一判断子模块判断出备份***分区中存在固件文件的情况下,判断备份***分区中固件的版本与当前***分区中固件的版本是否相同;
固件升级子模块,用于在第二判断子模块判断出备份***分区中固件的版本与当前***分区中固件的版本相同的情况下,根据所述固件升级包在终端设备的备份***分区中执行固件升级操作。
可选的,上述用于空中固件升级的装置,其中,所述固件升级模块还包括:同步子模块,用于在第一判断子模块判断出备份***分区中不存在固件文件的情况下,根据所述当前***分区中的固件文件同步所述备份***分区。
可选的,上述用于空中固件升级的装置,其中,所述固件升级模块还包括:
第三判断子模块,用于在第二判断子模块判断出备份***分区中固件的版本与当前***分区中固件的版本不相同的情况下,判断终端设备中是否存储有用于将备份***分区中固件的版本升级到当前***分区中固件的版本的固件升级包;
所述同步子模块还用于,在第三判断子模块判断出终端设备中未存储有用于将备份***分区中固件的版本升级到当前***分区中固件的版本的固件升级包的情况下,根据所述当前***分区中的固件文件同步所述备份***分区。
可选的,上述用于空中固件升级的装置,其中,所述装置还包括:清理模块,用于清理所述终端设备中存储的所述同步操作之前所述备份***分区中固件的版本对应的固件升级包。
可选的,上述用于空中固件升级的装置,其中,所述固件升级子模块还用于:在第三判断子模块判断出终端设备中存储有用于将备份***分区中固件的版本升级到当前***分区中固件的版本的固件升级包的情况下,根据所述用于将备份***分区中固件的版本升级到当前***分区中固件的版本的固件升级包在终端设备的备份***分区中执行固件升级操作。
可选的,上述用于空中固件升级的装置,其中,所述装置还包括:备份分区管理模块,用于:
在终端设备首次启动过程中,在根据驻留在分区表中的分区信息确定出终端设备当前存在备份***分区的情况下,格式化所述备份***分区,并针对所述备份***分区执行挂载操作;或者
在终端设备启动过程中或者在终端设备成功下载用于升级其当前使用的固件版本的固件升级包后,在确定出终端设备当前不存在备份***分区的情况下,创建并格式化备份***分区,并针对所述备份***分区执行挂载操作。
依据本发明的再一个方面,提供了一种车辆,其中,所述车辆包括:上述的用于空中固件升级的装置。
本发明提供的用于空中固件升级的方法、装置及车辆至少具有下列优点和有益效果:本发明通过为***分区设置备份***分区,并在下载了用于升级终端设备当前使用的固件版本的固件升级包后,利用该固件升级包在备份***分区中执行固件升级操作,使备份***分区中固件的版本得到升级;本发明通过将备份***分区配置为主***分区,这样,终端设备在下一次启动(如用户在晚上关闭终端设备并在第二天早上开启终端设备)时,可以实现备份***分区与主***分区的乒乓切换,从而可以利用切换后的主***分区完成终端设备的正常启动,由于切换后的主***分区中已经安装了版本升级后的固件,因此,终端设备在启动后所使用的固件为版本升级后的固件,从而本发明可以在用户无感知的情况下,使终端设备静默的实现空中固件升级,有效避免了利用Recovery模式实现空中固件升级过程中由于需要多次重启终端设备而影响用户对终端设备的正常使用的现象。由此可知,本发明提供的技术方案有利于提高用户使用终端设备的体验。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。本实施例的附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本发明一个实施例的用于空中固件升级的方法的流程图。
图2为本发明一个实施例的用于空中固件升级的方法中的备份***分区的同步过程的流程图。
图3为本发明一个实施例的用于空中固件升级的方法的一个具体例子的流程图。
图4为本发明一个实施例的用于空中固件升级的装置的结构示意图。
图5为本发明一个实施例的固件升级模块的结构示意图。
图6示出本发明一个实施例的智能车辆的结构框图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本发明公开的示例性实施例,然而应当理解,可以以各种形式实现本发明公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明的技术方案,并且能够将本发明公开的范围完整的传达给本领域的技术人员。
下面为本发明的一个用于空中固件升级的方法的实施例。
本实施例的用于空中固件升级的方法通常应用于终端设备中,尤其适用于智能移动电话、智能车辆的车载电子***以及平板电脑等移动终端设备中。
本实施例的固件(Firmware)通常是指负责终端设备中的基础且底层工作的软件/程序,换而言之,固件是使硬件设备得以正常运行的程序代码。本实施例的固件可以具体为终端设备的操作***,如智能移动电话的固件可以为智能移动电话的操作***,车载电子***的固件可以车载电子***的操作***等。本实施例的固件也可以为终端设备中的某个硬件的驱动程序,如本实施例的固件可以为终端设备中的硬盘、鼠标、光驱或者USB(Universal Serial Bus,通用串行总线)闪存盘等)的驱动程序。
另外,本实施例的固件通常会被写入终端设备的EROM(Eraseable Read OnlyMemory,可擦写只读存储器)或者EEPROM(Electrically Erasable Programmable Read-Only Memory,电可擦可编程只读存储器)中。
本实施例的用于空中固件升级的方法的流程如图1所示,且本实施例的该方法主要包括:步骤S100、步骤S110以及步骤S120。下面对本实施例的该方法所包括各步骤分别进行详细说明。
图1中,S100、下载用于升级终端设备当前使用的固件版本的固件升级包。
作为示例,本实施例中的固件升级包可以为用于固件增量升级的固件升级包,即固件升级差分包;且本实施例中的固件升级包也可以为用于固件全量升级的固件升级包,即固件升级整包。
作为示例,本实施例可以在检测到FOTA服务器中存在新版本的固件升级包的情况下,执行下载操作,以获得该新版本的固件升级包;一个具体的例子,终端设备向FOTA服务器发起固件版本查询请求,且该查询请求中可以承载有终端设备制造商和终端设备当前使用的固件版本信息等轮廓信息,FOTA服务器根据其接收到的查询请求中的终端设备轮廓信息确定该终端设备所对应的新版本的固件升级包,并向终端设备发送包含有该新版本的固件升级包的URL的查询响应,终端设备根据查询响应中的URL从FOTA服务器处下载新版本的固件升级包,并将成功下载的新版本的固件升级包存储在其Cache分区的相应目录下,当然,也可以存储在其Data分区中。
作为示例,本实施例在成功获取到新版本的固件升级包之后,可以利用本地存储的数字签名证书对该新版本的固件升级包进行数字签名验证,如果本次验证通过,则允许针对该新版本的固件升级包执行安装操作,即允许基于该新版本的固件升级包执行后续的步骤S110,而如果本次验证失败,则不允许针对该新版本的固件升级包执行安装操作,即本次用于空中固件升级的方法结束,不再执行后续的步骤S110。
作为示例,本实施例中的数字签名证书的存储路径以及名称的一个具体例子为:/system/etc/security/otacerts.zip。
另外,本实施例还可以在本次验证失败的情况下,对该新版本的固件升级包执行清理操作,如删除该新版本的固件升级包等。
S110、根据上述下载的固件升级包在终端设备的备份***分区中执行固件升级操作。
作为示例,本实施例中的***分区是指存储有固件的分区,该***分区有时也被称为Root分区或者***文件分区等。本实施例中的***分区是以主备的形式设置的,即终端设备中设置有主***分区和备份***分区;其中的主***分区是指终端设备在执行启动操作过程中以及在正常运行过程中所使用的固件所在的***分区,且主***分区也可以称为当前***分区或者当前使用的***分区等;其中的备份***分区是指用于承载固件文件,且其承载的固件文件处于当前未被终端设备使用的状态。本实施例中的主***分区可以在终端设备的正常启动过程中被切换为备份***分区,而备份***分区被切换为主***分区,实现主***分区与备份***分区的乒乓切换。需要特别说明的是,现有技术中的***分区并没有以主备的形式设置,即现有技术中不存在备份***分区,从而现有技术中也不会存在主***分区与备份***分区之间的乒乓切换过程。
作为示例,本实施例中的当前***分区可以具体为一个分区,也可以具体为多个分区,如在终端设备当前使用的固件中的不同部分分别存储在不同分区中的情况下,这多个分区均为当前***分区。无论当前***分区具体为一个分区,还是具体为多个分区,本实施例均针对当前***分区中的每一个分区分别设置了备份***分区,即在当前***分区为一个分区的情况下,本实施例中的备份***分区具体为一个分区;而在当前***分区为多个分区(如2个分区或者更多数量的分区)的情况下,备份***分区也为多个分区(如2个分区或者更多数量的分区),备份***分区的分区数量与当前***分区的分区数量相同,且备份***分区中的每一个分区分别对应当前***分区中的唯一一个分区,例如,在当前***分区包括第一当前***分区和第二当前***分区这两个分区的情况下,备份***分区包括第一备份***分区和第二备份***分区,且第一当前***分区对应第一备份***分区,而第二当前***分区对应第二备份***分区。
作为示例,本实施例在终端设备中设置备份***分区的一个具体过程为:首先,在终端设备的分区表中初始驻留备份***分区的分区信息,如在终端设备的出厂过程中,第一次烧录终端设备的分区表时,可以将主***分区的分区信息以及备份***分区的分区信息均烧录在分区表中,此时,分区表中的分区信息通常包括:启动分区(如Boot分区)的分区信息、当前***分区(如主Root分区)的分区信息以及备份***分区(如备份Root分区)的分区信息;之后,在终端设备第一次启动(如用户购买终端设备并首次开机)的过程中,可以根据该分区表中的备份***分区的分区信息对备份***分区进行格式化(如将备份***分区格式化为Root分区格式的分区),并针对该备份***分区执行挂载操作,如将备份***分区挂载在相应的目录下等,以使备份***分区能够正常使用,即备份***分区能够被读写,从而成功设置备份***分区。另外,在终端设备第一次启动过程中,还可以创建数据分区(如Home分区),并在分区表中设置数据分区的分区信息,对数据分区进行格式化以及挂载处理,以使数据分区能够正常使用。
作为示例,本实施例在终端设备中设置备份***分区的另一个具体过程为:首先,终端设备的分区表中并未初始驻留备份***分区的分区信息,如在终端设备的出厂过程中,在第一次烧录终端设备的分区表时,并没有将备份***分区的分区信息烧录在分区表中,此时,分区表中的分区信息通常包括:启动分区(如Boot分区)的分区信息以及当前***分区(如主Root分区)的分区信息;之后,在终端设备第一次启动(如用户购买终端设备并首次开机)或者非首次启动过程中,或者在终端设备成功下载用于升级其当前使用的固件版本的固件升级包之后,在确定出终端设备当前不存在备份***分区(如根据分区表中的分区信息确定出终端设备当前不存在备份***分区)的情况下,针对当前***分区创建备份***分区(如创建备份Root分区),并在分区表中设置备份***分区的分区信息,对备份***分区进行格式化(如将备份***分区格式化为Root分区格式的分区),然后,针对该备份***分区执行挂载操作,如将备份***分区挂载在相应的目录下等,以使备份***分区能够正常使用,即备份***分区能够被读写,从而成功设置备份***分区。另外,在终端设备第一次启动过程中,还可以创建数据分区(如Home分区),并在分区表中设置数据分区的分区信息,对数据分区进行格式化以及挂载处理,以使数据分区能够正常使用。
上述两个设置备份***分区的具体过程仅为举例说明,本实施例不限制在终端设备中设置备份***分区的具体实现方式。
作为示例,本实施例在成功下载了用于升级终端设备当前使用的固件版本的固件升级包的情况下,终端设备中的备份***分区会存在多种不同的情况,例如备份***分区中并不存在***镜像文件(即备份***分区中不存在固件,或者说备份***分区中并不存在***文件);再例如备份***分区中存在***镜像文件(即备份***分区中存在固件,或者说备份***分区中存在***文件),且备份***分区中固件的版本与当前***分区中固件的版本相同;再例如备份***分区中存在***镜像文件,且备份***分区中固件的版本与当前***分区中固件的版本不相同。本实施例应针对不同情况的备份***分区执行相应的固件升级操作,以使备份***分区中的固件的版本升级到上述下载的固件升级包的版本,下面例举四个具体的例子对本实施例的根据上述下载的固件升级包在终端设备的备份***分区中执行固件升级操作进行举例说明。
第一个例子,判断备份***分区中是否存在***文件(也可以称为固件文件或者***镜像文件等),如果判断结果为备份***分区中存在***文件,则继续判断备份***分区中固件的版本是否与当前***分区中固件的版本相同,如果本次判断结果为备份***分区中固件的版本与当前***分区中固件的版本相同,则直接根据上述下载且验证通过的固件升级包在终端设备的备份***分区中执行固件升级操作,以使备份***分区中固件的版本升级为上述下载的固件升级包的版本。
第二个例子,判断备份***分区中是否存在***文件,如果判断结果为备份***分区中存在***文件,则继续判断备份***分区中固件的版本是否与当前***分区中固件的版本相同,如果本次判断结果为备份***分区中固件的版本与当前***分区中固件的版本不相同,则继续判断终端设备本地(如缓存分区或者数据区分中)是否存储有用于将备份***分区中固件的版本升级到当前***分区中固件的版本的固件升级包(下述将其简称为次新固件升级包),如果判断结果为终端设备本地(如缓存分区或者数据区分中)存储有次新固件升级包,则根据该次新固件升级包在终端设备的备份***分区中执行固件升级操作,以使备份***分区中固件的版本升级为上述下载的固件升级包的版本,然后,再根据上述下载且验证通过的固件升级包在终端设备的备份***分区中执行固件升级操作,以使备份***分区中固件的版本升级为上述下载的固件升级包的版本。
第三个例子,判断备份***分区中是否存在***文件,如果判断结果为备份***分区中存在***文件,则继续判断备份***分区中固件的版本是否与当前***分区中固件的版本相同,如果本次判断结果为备份***分区中固件的版本与当前***分区中固件的版本不相同,则继续判断终端设备本地(如缓存分区或者数据区分中)是否存储有次新固件升级包,如果判断结果为终端设备本地(如缓存分区或者数据区分中)未存储有次新固件升级包,则根据当前***分区中的***文件对备份***分区执行同步操作,以使备份***分区中存在***文件,且使备份***分区中固件的版本与当前***分区中固件的版本相同,然后,再根据上述下载且验证通过的固件升级包在终端设备的备份***分区中执行固件升级操作,以使备份***分区中固件的版本升级为上述下载的固件升级包的版本。
第四个例子,判断备份***分区中是否存在***文件,如果判断结果为备份***分区中不存在***文件,则根据当前***分区中的***文件对备份***分区执行同步操作,以使备份***分区中存在***文件,且使备份***分区中固件的版本与当前***分区中固件的版本相同,然后,再根据上述下载且验证通过的固件升级包在终端设备的备份***分区中执行固件升级操作,以使备份***分区中固件的版本升级为上述下载的固件升级包的版本。
需要特别说明的是,本实施例还可以在备份***分区中固件的版本升级为上述下载的固件升级包的版本的情况下,对终端设备中存储的除了上述下载的固件升级包以及次新固件升级包之外的其他旧版本的各固件升级包进行清理操作,如删除除了上述下载的固件升级包以及次新固件升级包之外的其他旧版本的各固件升级包。本实施例所保留的次新固件升级包可以用于将终端设备当前使用的最新版本的固件回退到该次新固件升级包的版本,如在用户不希望升级当前版本而希望回退到上一个固件升级包的版本时,完全可以通过Revert模式等回退到上一个固件升级包的版本。另外,本实施例通过及时清理冗余的旧版本的固件升级包,可以有效避免冗余的旧版本的固件升级包占用磁盘空间的现象。
另外需要特别说明的是,在终端设备正常启动的情况下,虽然终端设备中的备份***分区也会存在多种不同的情况,然而,本实施例并不会针对不同的情况执行不同的固件升级操作,只有在下载了新版本的固件升级包的情况下,才会执行相应的固件升级操作,如在终端设备正常开机过程中,如果备份***分区中固件的版本低于主***分区中固件的版本,应保持备份***分区中固件的版本,以便于能够将终端设备当前使用的固件版本回退到低版本的固件。
S120、在终端设备的***分区配置信息中将备份***分区配置为***分区,以使终端设备在下一次启动时,根据***分区配置信息确定出基于固件升级后的***分区执行启动操作。
作为示例,本实施例可以将启动分区中的***分区信息设置为备份***分区信息,这样,在终端设备的后续使用过程中,如果终端设备由于再次开机而启动(如用户在当天晚上关闭终端设备并在第二天早上开机启动终端设备),则终端设备会根据启动分区中的***分区信息将上述备份***分区作为当前主***分区,并按照主***分区中的固件执行后续的启动操作,从而实现了备份***分区与主***分区的兵乓切换。
下面为本发明的用于空中固件升级的方法中的备份***分区的同步过程的实施例。
本实施例的方法中设置有主***分区和备份***分区,在终端设备的每一次开机启动过程中都需要对备份***分区进行同步处理,以保证主***分区以及备份***分区中均设置有符合要求的***文件,从而使终端设备在需要进行回退时,能够利用备份***分区回退到在先版本的固件,在需要进行固件升级时,能够利用备份***分区以及最新下载的固件升级包对终端设备使用的固件可以升级。图2即为本实施例的用于空中固件升级的方法中的备份***分区的同步过程的一个具体例子的流程图。
图2中,设定本实施例中的P1分区为启动分区,P2分区和P3分区均为***分区,且P2分区和P3分区互为主备,P4分区为数据分区。下面对图2中的各步骤分别进行说明。
S101、终端设备在开机启动时,先加载启动分区(P1分区)中的启动***文件(也可以称为启动***镜像文件或者启动镜像文件),如加载Boot分区的Boot文件,并可以根据Boot文件中的***分区配置信息确定主***分区,如确定出P2分区为主***分区(如主Root分区),并启动P2分区中的固件。
S102、判断当前是否存在备份***分区(如P3分区)以及数据分区(即P4分区),如果判断结果为当前存在备份***分区以及数据分区,则到步骤S104,如果判断结果为当前不存在备份***分区或者数据分区,则到步骤S103。
S103、在当前不存在P3分区的情况下,创建P3分区,并以***分区(如Root分区)格式对P3分区进行格式化;在当前不存在P4分区(如终端设备第一次启动)的情况下,创建P4分区,并以数据分区(如Home分区)格式对P4分区进行格式化。到步骤S104。
S104、针对备份***分区以及数据分区执行挂载操作,如在Cache分区中,针对P3分区和P4分区分别创建相应的目录,并将P3分区和P4分区分别挂载到相应的目录中。
S105、检查备份***分区(即P3分区)是否存在***文件,如果存在***文件,则到步骤S107,如果不存在***文件,则到步骤S106。
S106、将主***分区(即P2分区)中固件的内容(即***文件)同步到备份***分区(即P3)中,如将主***分区挂载到一个目录下,并将主***分区中的***文件复制到备份***分区中,本实施例可以在将主***分区中的***文件复制到备份分区中的过程中执行MD5(Message Digest Algorithm,消息摘要算法第五版)校验,以保证复制的***文件的准确性。在成功将主***分区中的***文件复制到备份***分区中之后,到步骤S107。
S107、判断主***分区中固件的版本是否与备份***分区中固件的版本相同,如果两者版本相同,则到步骤S109,本实施例的同步过程结束;而如果两者版本不相同,则到步骤S108。
S108、检查Cache分区或者数据分区(P4分区)中是否存在能够将备份***分区中固件的版本升级到主***分区中固件版本的固件升级包,如果不存在该固件升级包,则到步骤S106,如果存在该固件升级包,则保留备份***分区中固件的版本,以便于能够利用备份***分区实现固件回退,到步骤S109。
S109、本实施例的同步过程结束。
下面为本发明的一个用于空中固件升级的方法的实施例。
在用于控制固件升级的方法中,在使用下载的固件升级包对备份***分区中固件的版本进行升级时,通常需要先使备份***分区中固件的版本与当前使用的***分区中固件的版本一致,然后,再利用下载的固件升级包对与当前使用的***分区中固件的版本一致的备份***分区中固件的版本进行升级。图3即为包含有该同步过程的用于空中固件升级的方法的一个具体例子的流程图。
图3中,设定本实施例中的P1分区为启动分区,P2分区和P3分区均为***分区,且P2分区和P3分区互为主备,P4分区为数据分区。下面对图3中的各步骤分别进行说明。
S201、端设备向FOTA服务器发起固件版本查询请求,且该查询请求中通常承载有终端设备制造商以及终端设备当前使用的固件版本信息等中的设备轮廓信息,FOTA服务器根据查询请求中的终端设备轮廓信息向终端设备下发相应的新版本的固件升级包的URL,终端设备根据该URL从FOTA服务器处下载新版本的固件升级包,并将下载的新版本的固件升级包存储在Cache分区的相应目录下,然后,利用终端设备本地存储的数字签名证书对该新版本的固件升级包进行验证,如果验证失败,则可以清理该固件升级包,如删除Cache分区的相应目录下的该固件升级包等;如果验证成功,则继续执行终端设备固件升级的后续操作,到步骤S202。设定本次下载的固件升级包为固件升级差分包。本实施例通过对验证失败的固件升级包进行清理回收,及时的避免了无用的固件升级包占用磁盘空间的现象。
S202、判断当前是否存在备份***分区(如P3分区)以及数据分区(即P4分区),如果判断结果为当前存在备份***分区以及数据分区,则到步骤S204,如果判断结果为当前不存在备份***分区或者数据分区,则到步骤S203。
S203、在当前不存在P3分区的情况下,创建P3分区,并以***分区(如Root分区)格式对P3分区进行格式化;在当前不存在P4分区(如终端设备第一次启动)的情况下,创建P4分区,并以数据分区(如Home分区)格式对P4分区进行格式化。到步骤S204。
S204、针对备份***分区以及数据分区执行挂载操作,如在Cache分区中,针对P3分区和P4分区分别创建相应的目录,并将P3分区和P4分区分别挂载到相应的目录中。
S205、检查备份***分区(即P3分区)是否存在***文件,如果存在***文件,则到步骤S207,如果不存在***文件,则到步骤S206。
S206、将主***分区(即P2分区)中固件的内容(即***文件)同步到备份***分区(即P3)中,如将主***分区挂载到一个目录下,并将主***分区中的***文件复制到备份***分区中,本实施例可以在将主***分区中的***文件复制到备份分区中的过程中执行MD5(Message Digest Algorithm,消息摘要算法第五版)校验,以保证复制的***文件的准确性。在成功将主***分区中的***文件复制到备份***分区中之后,到步骤S207。
S207、判断主***分区中固件的版本是否与备份***分区中固件的版本相同,如果两者版本相同,则到步骤S210;而如果两者版本不相同,则到步骤S208。
S208、检查Cache分区或者数据分区(P4分区)中是否存在能够将备份***分区中固件的版本升级到主***分区中固件版本的固件升级包,如果不存在该固件升级包,则到步骤S206,如果存在该固件升级包,则到步骤S209。设定Cache分区或者P4分区中的该次新固件升级包为固件升级差分包。
S209、利用在Cache分区或者P4分区中检查到的固件升级差分包对备份***分区中固件的版本执行差分升级操作,在差分升级操作成功完成后,备份***分区中固件的版本与主***分区中固件的版本相同,到步骤S210。
S210、利用上述步骤S201下载的固件升级差分包对备份***分区中固件的版本执行差分升级操作,在差分升级操作成功完成后,备份***分区中固件的版本高于主***分区中固件的版本,到步骤S211。
另外,需要说明的是,本实施例针对备份***分区中固件的版本进行升级后,还可以执行保留升级印记以及清理相应的固件升级包(如删除在将备份***分区中固件的版本升级到主***分区中固件的版本之前,备份***分区中固件的版本对应的固件升级包)等操作,以避免相应的固件升级包占用磁盘空间的现象。
S211、将P3分区配置为主***分区,如将启动分区(即P1分区,如Boot分区)中的***分区(如Root分区)信息配置为P3分区信息。在终端设备开机启动(如用户在第二天早晨开启终端设备)后,到步骤S212。
S212、终端设备根据P1分区中的***分区信息(P3分区信息)启动相应的***分区(如P3分区)中的***文件,从而使终端设备基于最新版本的固件运行。此时,P2分区成为备份***分区。
本实施例中的步骤S201至步骤S211是在无需用户干预的情况下自行执行,且步骤S212所执行的使最新版本的固件生效的操作完全是在用户按照正常加电开启终端设备时执行的,从而本实施例可以使FOTA完全在静默的情况下实现,有效避免了固件升级过程中由于需要重新启动而中断用户操作的现象,从而避免了FOTA由于需要重新启动而打扰用户操作进而影响用户体验的现象。
下面为本发明的用于空中固件升级的装置的一个实施例。
本实施例的用于空中固件升级的装置通常设置于终端设备中,尤其适合设置于智能移动电话、车载电子***以及平板电脑等移动终端设备中。
本实施例的用于空中固件升级的装置的结构如图4所示,且本实施例的用于空中固件升级的装置主要包括:下载模块400、固件升级模块410以及分区切换模块420;其中的固件升级模块410包括:第一判断子模块411、第二判断子模块412、固件升级子模块413、同步子模块414以及第三判断子模块415(如图5所示)。另外,本实施例的用于空中固件升级的装置还可以可选的包括:清理模块430以及备份分区管理模块440。下面对本实施例的装置所包括各模块分别进行详细说明。
下载模块400主要用于下载用于升级终端设备当前使用的固件版本的固件升级包。
作为示例,下载模块400所下载的固件升级包可以为用于固件增量升级的固件升级包,即固件升级差分包;且下载模块400所下载的固件升级包也可以为用于固件全量升级的固件升级包,即固件升级整包。
作为示例,下载模块400可以在检测到FOTA服务器中存在新版本的固件升级包的情况下,执行下载操作,以获得该新版本的固件升级包;一个具体的例子,下载模块400向FOTA服务器发起固件版本查询请求,且该查询请求中可以承载有终端设备制造商和终端设备当前使用的固件版本信息等轮廓信息,FOTA服务器根据其接收到的查询请求中的终端设备轮廓信息确定该终端设备所对应的新版本的固件升级包,并向终端设备发送包含有该新版本的固件升级包的URL的查询响应,下载模块400根据查询响应中的URL从FOTA服务器处下载新版本的固件升级包,并将成功下载的新版本的固件升级包存储在其Cache分区的相应目录下,当然,下载模块400也可以将成功下载的新版本的固件升级包存储在终端设备的Data分区中。
作为示例,下载模块400在成功获取到新版本的固件升级包之后,可以利用终端设备本地存储的数字签名证书对该新版本的固件升级包进行数字签名验证,如果本次验证通过,则下载模块400允许固件升级模块410针对该新版本的固件升级包执行安装操作,而如果本次验证失败,则下载模块400不允许固件升级模块410针对该新版本的固件升级包执行安装操作。
另外,下载模块400还可以在本次验证失败的情况下,通知清理模块430对该新版本的固件升级包执行清理操作,如清理模块430删除该新版本的固件升级包等。
固件升级模块410主要用于根据上述下载的固件升级包在终端设备的备份***分区中执行固件升级操作。
作为示例,在下载模块400成功下载了用于升级终端设备当前使用的固件版本的固件升级包的情况下,终端设备中的备份***分区会存在多种不同的情况,例如备份***分区中并不存在***镜像文件(即备份***分区中不存在固件,或者说备份***分区中并不存在***文件);再例如备份***分区中存在***镜像文件(即备份***分区中存在固件,或者说备份***分区中存在***文件),且备份***分区中固件的版本与当前***分区中固件的版本相同;再例如备份***分区中存在***镜像文件,且备份***分区中固件的版本与当前***分区中固件的版本不相同。固件升级模块410应针对不同情况的备份***分区执行相应的固件升级操作,以使备份***分区中的固件的版本升级到上述下载的固件升级包的版本,下面例举四个具体的例子对固件升级模块410根据上述下载的固件升级包在终端设备的备份***分区中执行固件升级操作进行举例说明。
第一个例子,第一判断子模块411判断备份***分区中是否存在***文件(也可以称为固件文件或者***镜像文件等),如果第一判断子模块411的本次判断结果为备份***分区中存在***文件,则第二判断子模块412判断备份***分区中固件的版本是否与当前***分区中固件的版本相同,如果第二判断子模块412本次判断结果为备份***分区中固件的版本与当前***分区中固件的版本相同,则固件升级子模块413直接根据上述下载且验证通过的固件升级包在终端设备的备份***分区中执行固件升级操作,以使备份***分区中固件的版本升级为上述下载的固件升级包的版本。
第二个例子,第一判断子模块411判断备份***分区中是否存在***文件,如果第一判断子模块411的本次判断结果为备份***分区中存在***文件,则第二判断子模块412判断备份***分区中固件的版本是否与当前***分区中固件的版本相同,如果第二判断子模块412的本次判断结果为备份***分区中固件的版本与当前***分区中固件的版本不相同,则第三判断子模块415判断终端设备本地(如缓存分区或者数据区分中)是否存储有用于将备份***分区中固件的版本升级到当前***分区中固件的版本的固件升级包(下述将其简称为次新固件升级包),如果第三判断子模块415的判断结果为终端设备本地(如缓存分区或者数据区分中)存储有次新固件升级包,则固件升级子模块413根据该次新固件升级包在终端设备的备份***分区中执行固件升级操作,以使备份***分区中固件的版本升级为上述下载的固件升级包的版本,然后,固件升级子模块413再根据上述下载且验证通过的固件升级包在终端设备的备份***分区中执行固件升级操作,以使备份***分区中固件的版本升级为上述下载的固件升级包的版本。
第三个例子,第一判断子模块411判断备份***分区中是否存在***文件,如果第一判断子模块411的本次判断结果为备份***分区中存在***文件,则第二判断子模块412判断备份***分区中固件的版本是否与当前***分区中固件的版本相同,如果第二判断子模块412的本次判断结果为备份***分区中固件的版本与当前***分区中固件的版本不相同,则第三判断子模块415判断终端设备本地(如缓存分区或者数据区分中)是否存储有次新固件升级包,如果第三判断子模块415的判断结果为终端设备本地(如缓存分区或者数据区分中)未存储有次新固件升级包,则同步子模块414根据当前***分区中的***文件对备份***分区执行同步操作,以使备份***分区中存在***文件,且使备份***分区中固件的版本与当前***分区中固件的版本相同,然后,固件升级子模块413再根据上述下载且验证通过的固件升级包在终端设备的备份***分区中执行固件升级操作,以使备份***分区中固件的版本升级为上述下载的固件升级包的版本。
第四个例子,第一判断子模块411判断备份***分区中是否存在***文件,如果第一判断子模块411的本次判断结果为备份***分区中不存在***文件,则同步子模块414根据当前***分区中的***文件对备份***分区执行同步操作,以使备份***分区中存在***文件,且使备份***分区中固件的版本与当前***分区中固件的版本相同,然后,固件升级子模块413再根据上述下载且验证通过的固件升级包在终端设备的备份***分区中执行固件升级操作,以使备份***分区中固件的版本升级为上述下载的固件升级包的版本。
需要特别说明的是,清理模块430可以在备份***分区中固件的版本升级为上述下载的固件升级包的版本的情况下,对终端设备中存储的除了上述下载的固件升级包以及次新固件升级包之外的其他旧版本的各固件升级包进行清理操作,如清理模块430删除除了上述下载的固件升级包以及次新固件升级包之外的其他旧版本的各固件升级包。本实施例所保留的次新固件升级包可以用于将终端设备当前使用的最新版本的固件回退到该次新固件升级包的版本。
另外需要特别说明的是,在终端设备正常启动的情况下,虽然终端设备中的备份***分区也会存在多种不同的情况,然而,固件升级模块410并不会针对不同的情况执行不同的固件升级操作,只有在下载了新版本的固件升级包的情况下,固件升级模块410才会执行相应的固件升级操作,如在终端设备正常开机过程中,如果备份***分区中固件的版本低于主***分区中固件的版本,固件升级模块410应保持备份***分区中固件的版本,以便于能够将终端设备当前使用的固件版本回退到低版本的固件。
分区切换模块420主要用于在终端设备的***分区配置信息中将备份***分区配置为主***分区,以使终端设备在下一次启动过程中,根据***分区配置信息确定出基于固件升级后的***分区执行固件启动操作。
作为示例,分区切换模块420可以将启动分区中的***分区信息设置为备份***分区信息,这样,在终端设备的后续使用过程中,如果终端设备由于再次开机而启动(如用户在当天晚上关闭终端设备并在第二天早上开机启动终端设备),则终端设备会根据启动分区中的***分区信息将上述备份***分区作为当前主***分区,并按照主***分区中的固件执行后续的启动操作,从而实现了备份***分区与主***分区的兵乓切换。
备份分区管理模块440用于在终端设备首次启动过程中,在根据驻留在分区表中的分区信息确定出终端设备当前存在备份***分区的情况下,格式化备份***分区,并针对备份***分区执行挂载操作;备份分区管理模块440还用于在终端设备启动过程中或者在终端设备成功下载用于升级其当前使用的固件版本的固件升级包后,在确定出终端设备当前不存在备份***分区的情况下,创建并格式化备份***分区,并针对备份***分区执行挂载操作。
作为示例,备份分区管理模块440在终端设备中设置备份***分区的一个具体过程为:首先,在终端设备的分区表中初始驻留备份***分区的分区信息,如在终端设备的出厂过程中,第一次烧录终端设备的分区表时,备份分区管理模块440可以将主***分区的分区信息以及备份***分区的分区信息均烧录在分区表中,此时,分区表中的分区信息通常包括:启动分区(如Boot分区)的分区信息、当前***分区(如主Root分区)的分区信息以及备份***分区(如备份Root分区)的分区信息;之后,在终端设备第一次启动(如用户购买终端设备并首次开机)的过程中,备份分区管理模块440可以根据该分区表中的备份***分区的分区信息对备份***分区进行格式化(如将备份***分区格式化为Root分区格式的分区),并针对该备份***分区执行挂载操作,如备份分区管理模块440将备份***分区挂载在相应的目录下等,以使备份***分区能够正常使用,即备份***分区能够被读写,从而备份分区管理模块440成功设置备份***分区。另外,在终端设备第一次启动过程中,备份分区管理模块440还可以创建数据分区(如Home分区),并在分区表中设置数据分区的分区信息,备份分区管理模块440对数据分区进行格式化以及挂载处理,以使数据分区能够正常使用。
作为示例,备份分区管理模块440在终端设备中设置备份***分区的另一个具体过程为:首先,终端设备的分区表中并未初始驻留备份***分区的分区信息,如在终端设备的出厂过程中,在第一次烧录终端设备的分区表时,备份分区管理模块440并没有将备份***分区的分区信息烧录在分区表中,此时,分区表中的分区信息通常包括:启动分区(如Boot分区)的分区信息以及当前***分区(如主Root分区)的分区信息;之后,在终端设备第一次启动(如用户购买终端设备并首次开机)或者非首次启动过程中,或者在终端设备成功下载用于升级其当前使用的固件版本的固件升级包之后,备份分区管理模块440在确定出终端设备当前不存在备份***分区(如根据分区表中的分区信息确定出终端设备当前不存在备份***分区)的情况下,针对当前***分区创建备份***分区(如创建备份Root分区),并在分区表中设置备份***分区的分区信息,对备份***分区进行格式化(如将备份***分区格式化为Root分区格式的分区),然后,备份分区管理模块440针对该备份***分区执行挂载操作,如备份分区管理模块440将备份***分区挂载在相应的目录下等,以使备份***分区能够正常使用,即备份***分区能够被读写,从而成功设置备份***分区。另外,在终端设备第一次启动过程中,备份分区管理模块440还可以创建数据分区(如Home分区),并在分区表中设置数据分区的分区信息,对数据分区进行格式化以及挂载处理,以使数据分区能够正常使用。
上述备份分区管理模块440设置备份***分区的两个具体过程仅为举例说明,本实施例不限制备份分区管理模块440在终端设备中设置备份***分区的具体实现方式。
在一个实施例中,本发明提供一种用于空中固件升级的智能设备,该智能设备(intelligent device)是指任何一种具有计算处理能力的设备、器械或者机器;具体地,所述智能设备包括智能车辆,智能车钥匙,智能移动终端如手机、pad等,智能家居如家用智能电视、智能冰箱,智能可穿戴设备如智能手表。上述智能设备包括上述用于空中固件升级的装置;并可以使用上述用于空中固件升级的方法进行升级。
在一个实施例中,本发明提供一种智能车辆,图6示出本发明一个实施例的智能车辆的结构框图,如图6所示,该车辆可以包括:中控模块、仪表盘610、行车记录仪611、HUD(Head Up Display,平视显示器)抬头显示器612、智能车载信息娱乐***613、智能驾驶模块613。
仪表盘610具有12.3寸LCD显示设备,该仪表盘可以采用TI的J6CPU;仪表盘的操作***可以基于QNX嵌入式***,仪表盘可以用于显示车辆状态、地图、车辆导航信息、车辆播放音乐等,所述车辆状态信息包括速度、转速、电量、胎压、车辆驻车、档位等。HUD抬头显示器612可以显示GPS导航信息、导航路径信息、时间信息等。
在一个实施例中,智能驾驶模块613可以用于处理与智能驾驶相关的操作,智能驾驶模块613可以包括高级辅助驾驶***(Advanced Driver Assistance Systems,ADAS)、主动安全***、注意力辅助***(Attention Assist System,AAS)、疲劳警告***(FatigueWarning System,FWS)、车辆智能声学报警***(Acoustic Vehicle Alerting System,AVAS)等。车辆可以结合ADAS***等进行智能驾驶,该智能驾驶可以是完全无人的驾驶,也可以是驾驶员进行驾驶控制的辅助并线、车道偏移等高级辅助驾驶功能。
中控装置可以由多个模块组成,主要可以包括:主板601;SATA(Serial AdvancedTechnology Attachment,串行高级技术附件)模块602,连接到如SSD603的存储设备,可以用来存储数据信息;AM(Amplitude Modulation,调幅)/FM(Frequency Modulation,调频)模块604,为车辆提供收音机的功能;功放模块605,用于声音处理;WIFI(Wireless-Fidelity,无线保真)/Bluetooth模块606,为车辆提供WIFI/Bluetooth的服务;LTE(LongTerm Evolution,长期演进)通信模块607,为车辆提供与电信运营商的通信功能;电源模块608,电源模块608为该中控装置提供电源;Switch转接模块609,该Switch转接模块609可以作为一种可扩展的接口连接多种传感器,例如如果需要添加夜视功能传感器、PM2.5功能传感器,可以通过该Switch转接模块609连接到中控装置的主板,以便中控装置的处理器进行数据处理,并将数据传输给中控显示器。
在一个实施例中,该车辆可以通过上述空中固件升级的方法升级车辆的智能车载信息娱乐***613、智能行车记录仪611、智能仪表盘610、智能HUD抬头显示器。
在一个实施例中,该车辆还包括环视摄像头、ADAS摄像头、夜视摄像头、毫米波雷达、超声波雷达、ESR雷达等传感器。车辆硬件在生产后即挂载上述智能驾驶相关硬件,后期可以通过OTA空中升级方法使得上述硬件完善自动驾驶相关功能。
在此提供的算法以及显示不与任何特定计算机、虚拟***或者其它设备固有相关。各种通用***也可以与基于在此的示教一起使用。根据上面的描述,构造这类***所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如本发明的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在本发明的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的用于空中固件升级的方法及装置中的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者***程序(如计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网的网站上下载得到,也可以在载体信号上提供,或者以任何其他形式提供。
应该注意的是,上述实施例是对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或者步骤等。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干***的单元权利要求中,这些***中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
Claims (15)
1.一种用于空中固件升级的方法,其特征在于,所述方法包括:
下载用于升级终端设备当前使用的固件版本的固件升级包;
根据所述固件升级包在终端设备的备份***分区中执行固件升级操作;
在终端设备的***分区配置信息中将所述备份***分区配置为主***分区,以使终端设备在下一次启动过程中,根据所述***分区配置信息确定出基于所述固件升级后的***分区执行固件启动操作。
2.如权利要求1所述的用于空中固件升级的方法,其特征在于:
在所述终端设备的当前***分区包括一个分区的情况下,所述备份***分区包括一个分区;或者,在所述终端设备的当前***分区包括多个分区的情况下,所述备份***分区包括多个分区,且备份***分区中的每一个分区分别对应当前***分区中的唯一一个分区;
和/或
所述根据所述固件升级包在终端设备的备份***分区中执行固件升级操作的步骤包括:在确定出备份***分区中存在固件文件,且备份***分区中固件的版本与当前***分区中固件的版本相同的情况下,根据所述固件升级包在终端设备的备份***分区中执行固件升级操作。
3.如权利要求2所述的用于空中固件升级的方法,其特征在于,所述根据所述固件升级包在终端设备的备份***分区中执行固件升级操作的步骤还包括:
在确定出备份***分区中不存在固件文件的情况下,根据所述当前***分区中的固件文件同步所述备份***分区。
4.如权利要求2所述的用于空中固件升级的方法,其特征在于,所述根据所述固件升级包在终端设备的备份***分区中执行固件升级操作的步骤还包括:
在确定出备份***分区中存在固件文件、备份***分区中固件的版本与当前***分区中固件的版本不相同,且终端设备中未存储有用于将备份***分区中固件的版本升级到当前***分区中固件的版本的固件升级包的情况下,根据所述当前***分区中的固件文件同步所述备份***分区。
5.如权利要求4所述的用于空中固件升级的方法,其特征在于,所述方法还包括:
清理所述终端设备中存储的所述同步操作之前所述备份***分区中固件的版本对应的固件升级包。
6.如权利要求2所述的用于空中固件升级的方法,其特征在于,所述根据所述固件升级包在终端设备的备份***分区中执行固件升级操作的步骤还包括:
在确定出备份***分区中存在固件文件、备份***分区中固件的版本与当前***分区中固件的版本不相同,且终端设备中存储有用于将备份***分区中固件的版本升级到当前***分区中固件的版本的固件升级包的情况下,根据所述用于将备份***分区中固件的版本升级到当前***分区中固件的版本的固件升级包在终端设备的备份***分区中执行固件升级操作。
7.如权利要求1至6中任一权利要求所述的用于空中固件升级的方法,其特征在于,所述方法还包括:
在终端设备首次启动过程中,在根据驻留在分区表中的分区信息确定出终端设备当前存在备份***分区的情况下,格式化所述备份***分区,并针对所述备份***分区执行挂载操作;或者
在终端设备启动过程中或者在终端设备成功下载用于升级其当前使用的固件版本的固件升级包后,在确定出终端设备当前不存在备份***分区的情况下,创建并格式化备份***分区,并针对所述备份***分区执行挂载操作。
8.一种用于空中固件升级的装置,其特征在于,所述装置包括:
下载模块,用于下载用于升级终端设备当前使用的固件版本的固件升级包;
固件升级模块,用于根据所述固件升级包在终端设备的备份***分区中执行固件升级操作;
分区切换模块,用于在终端设备的***分区配置信息中将所述备份***分区配置为主***分区,以使终端设备在下一次启动过程中,根据所述***分区配置信息确定出基于所述固件升级后的***分区执行固件启动操作。
9.如权利要求8所述的用于空中固件升级的装置,其特征在于,
在所述终端设备的当前***分区包括一个分区的情况下,所述备份***分区包括一个分区;或者,在所述终端设备的当前***分区包括多个分区的情况下,所述备份***分区包括多个分区,且备份***分区中的每一个分区分别对应当前***分区中的唯一一个分区;
和/或
所述固件升级模块包括:
第一判断子模块,用于判断备份***分区中是否存在固件文件;
第二判断子模块,用于在第一判断子模块判断出备份***分区中存在固件文件的情况下,判断备份***分区中固件的版本与当前***分区中固件的版本是否相同;
固件升级子模块,用于在第二判断子模块判断出备份***分区中固件的版本与当前***分区中固件的版本相同的情况下,根据所述固件升级包在终端设备的备份***分区中执行固件升级操作。
10.如权利要求9所述的用于空中固件升级的装置,其特征在于,所述固件升级模块还包括:
同步子模块,用于在第一判断子模块判断出备份***分区中不存在固件文件的情况下,根据所述当前***分区中的固件文件同步所述备份***分区。
11.如权利要求10所述的用于空中固件升级的装置,其特征在于,所述固件升级模块还包括:
第三判断子模块,用于在第二判断子模块判断出备份***分区中固件的版本与当前***分区中固件的版本不相同的情况下,判断终端设备中是否存储有用于将备份***分区中固件的版本升级到当前***分区中固件的版本的固件升级包;
所述同步子模块还用于,在第三判断子模块判断出终端设备中未存储有用于将备份***分区中固件的版本升级到当前***分区中固件的版本的固件升级包的情况下,根据所述当前***分区中的固件文件同步所述备份***分区。
12.如权利要求11所述的用于空中固件升级的装置,其特征在于,所述装置还包括:
清理模块,用于清理所述终端设备中存储的所述同步操作之前所述备份***分区中固件的版本对应的固件升级包。
13.如权利要求11所述的用于空中固件升级的装置,其特征在于,所述固件升级子模块还用于:
在第三判断子模块判断出终端设备中存储有用于将备份***分区中固件的版本升级到当前***分区中固件的版本的固件升级包的情况下,根据所述用于将备份***分区中固件的版本升级到当前***分区中固件的版本的固件升级包在终端设备的备份***分区中执行固件升级操作。
14.如权利要求8至13中任一权利要求所述的用于空中固件升级的装置,其特征在于,所述装置还包括:备份分区管理模块,用于:
在终端设备首次启动过程中,在根据驻留在分区表中的分区信息确定出终端设备当前存在备份***分区的情况下,格式化所述备份***分区,并针对所述备份***分区执行挂载操作;或者
在终端设备启动过程中或者在终端设备成功下载用于升级其当前使用的固件版本的固件升级包后,在确定出终端设备当前不存在备份***分区的情况下,创建并格式化备份***分区,并针对所述备份***分区执行挂载操作。
15.一种车辆,其特征在于,所述车辆包括:上述权利要求8-14中任一权利要求所述的用于空中固件升级的装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611111994.XA CN106802813B (zh) | 2016-12-06 | 2016-12-06 | 用于空中固件升级的方法、装置及车辆 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611111994.XA CN106802813B (zh) | 2016-12-06 | 2016-12-06 | 用于空中固件升级的方法、装置及车辆 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106802813A CN106802813A (zh) | 2017-06-06 |
CN106802813B true CN106802813B (zh) | 2020-04-17 |
Family
ID=58984097
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611111994.XA Active CN106802813B (zh) | 2016-12-06 | 2016-12-06 | 用于空中固件升级的方法、装置及车辆 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106802813B (zh) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107315616B (zh) * | 2017-06-30 | 2020-08-21 | 苏州浪潮智能科技有限公司 | 一种固件的加载方法、装置及电子设备 |
CN107291516B (zh) * | 2017-07-12 | 2019-10-22 | 珠海格力电器股份有限公司 | 一种固件升级方法和*** |
CN108170456B (zh) * | 2017-12-25 | 2020-09-08 | 长沙联远电子科技有限公司 | 电子设备的固件升级方法及装置 |
CN108647038B (zh) * | 2018-06-26 | 2023-04-11 | 桂林航天工业学院 | 一种基于wifi和超声波通信的FPGA在线更新***及更新方法 |
CN109165034A (zh) * | 2018-08-31 | 2019-01-08 | 深圳大势智能科技有限公司 | 基于ota的pos机升级方法、装置、设备及存储介质 |
CN109343885B (zh) * | 2018-11-01 | 2022-02-25 | 阿波罗智能技术(北京)有限公司 | ***升级方法和多***设备 |
CN109558161A (zh) * | 2018-11-27 | 2019-04-02 | 北京车和家信息技术有限公司 | 升级包处理方法、装置及ota云端服务器 |
CN110333882B (zh) * | 2019-05-09 | 2023-03-14 | 阿波罗智联(北京)科技有限公司 | ***的升级方法、装置、设备及计算机可读介质 |
CN110442482A (zh) * | 2019-07-31 | 2019-11-12 | 苏州中科全象智能科技有限公司 | 一种高速工业相机固件的防错架构及其控制方法 |
CN111093070A (zh) * | 2019-09-30 | 2020-05-01 | 杭州视洞科技有限公司 | 一种摄像机固件ota升级自动化测试流程方法 |
CN111142911B (zh) * | 2019-12-27 | 2022-04-19 | 易思维(杭州)科技有限公司 | 具有异常恢复功能的嵌入式***及其升级方法 |
CN111258611B (zh) * | 2020-01-22 | 2023-04-07 | 重庆长安汽车股份有限公司 | 一种整车的固件空中升级方法 |
CN112099845A (zh) * | 2020-09-21 | 2020-12-18 | 华人运通(上海)云计算科技有限公司 | 软件版本更新方法、服务器、车辆和计算机存储介质 |
CN113821235B (zh) * | 2021-06-15 | 2023-10-20 | 荣耀终端有限公司 | 操作***数据更新方法、设备、存储介质及程序产品 |
CN113641382A (zh) * | 2021-07-27 | 2021-11-12 | 瑞芯微电子股份有限公司 | 可分区***更新方法及存储介质 |
CN113609476A (zh) * | 2021-07-28 | 2021-11-05 | 南京慧尔视智能科技有限公司 | 一种雷达固件远程升级方法和升级*** |
CN113791811B (zh) * | 2021-08-02 | 2024-06-21 | 瑞芯微电子股份有限公司 | 固件升级方法和存储设备 |
CN113791812B (zh) * | 2021-08-02 | 2024-06-18 | 瑞芯微电子股份有限公司 | 一种固件升级方法和存储设备 |
CN113703823A (zh) * | 2021-10-27 | 2021-11-26 | 苏州浪潮智能科技有限公司 | 一种bmc固件升级方法、装置、电子设备及存储介质 |
CN114064097B (zh) * | 2021-11-26 | 2024-05-10 | 中国联合网络通信集团有限公司 | 软件升级方法、终端设备及存储介质 |
CN114816495A (zh) * | 2022-05-25 | 2022-07-29 | 歌尔股份有限公司 | Ota升级方法、装置、电子设备及可读存储介质 |
CN114880011A (zh) * | 2022-05-25 | 2022-08-09 | 歌尔股份有限公司 | Ota升级方法、装置、电子设备及可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104636153A (zh) * | 2013-11-07 | 2015-05-20 | 中兴通讯股份有限公司 | 一种Android终端及其实现升级的方法 |
CN105893076A (zh) * | 2015-12-25 | 2016-08-24 | 乐视致新电子科技(天津)有限公司 | 一种空中升级方法与装置 |
CN105988843A (zh) * | 2015-02-15 | 2016-10-05 | 腾讯科技(深圳)有限公司 | 移动终端固件升级方法及固件升级装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9148465B2 (en) * | 2013-04-01 | 2015-09-29 | Oracle International Corporation | Update management for a distributed computing system |
US9524158B2 (en) * | 2015-02-23 | 2016-12-20 | Apple Inc. | Managing firmware updates for integrated components within mobile devices |
-
2016
- 2016-12-06 CN CN201611111994.XA patent/CN106802813B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104636153A (zh) * | 2013-11-07 | 2015-05-20 | 中兴通讯股份有限公司 | 一种Android终端及其实现升级的方法 |
CN105988843A (zh) * | 2015-02-15 | 2016-10-05 | 腾讯科技(深圳)有限公司 | 移动终端固件升级方法及固件升级装置 |
CN105893076A (zh) * | 2015-12-25 | 2016-08-24 | 乐视致新电子科技(天津)有限公司 | 一种空中升级方法与装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106802813A (zh) | 2017-06-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106802813B (zh) | 用于空中固件升级的方法、装置及车辆 | |
JP6390644B2 (ja) | プログラム更新システム、プログラム更新方法及びコンピュータプログラム | |
US11204757B2 (en) | Server, software update system, and software update apparatus | |
JP5708940B2 (ja) | 情報管理装置、情報通信システム | |
JP2009053920A (ja) | 車載用電子制御ユニットのプログラム管理システム | |
CN110753905B (zh) | 控制装置、控制方法和计算机程序 | |
US20190354363A1 (en) | Software Update Device and Software Update System | |
US10500955B2 (en) | Automatic upgrade of a vehicle-based processor based on a physical component change | |
CN104063256A (zh) | 基于最小操作***的分区及固件升级方法 | |
WO2023169035A1 (zh) | 操作***的升级方法、电子设备及存储介质 | |
CN113238774A (zh) | 车载迎宾动画更新方法、装置、车载终端及存储介质 | |
JP2024015111A (ja) | ソフトウェア更新装置、更新制御方法、更新制御プログラム及びotaマスタ | |
CN106604138A (zh) | 一种智能电视的远程修复方法及*** | |
CN106933604B (zh) | 一种***升级方法及装置 | |
US20220391192A1 (en) | Ota master, center, system, method, non-transitory storage medium, and vehicle | |
CN111061537A (zh) | 一种虚拟机Tools更新方法、***、装置及可读存储介质 | |
US11995429B2 (en) | Software update device, update control method, non-transitory storage medium, and server | |
US20220317994A1 (en) | Ota master, update control method, and non-transitory storage medium | |
CN104239333A (zh) | 进行浏览器网址导航的方法及终端设备 | |
CN110659052B (zh) | 网络设备中***软件的更新方法、***及可读存储介质 | |
CN114124698A (zh) | 基于云主站的配电自动化终端操作***的升级方法、装置及*** | |
CN112241340A (zh) | 一种面向在线升级的启动和加载区域数据备份方法 | |
US20220391193A1 (en) | Ota master, system, method, non-transitory storage medium, and vehicle | |
US20220405083A1 (en) | Ota master, system, method, non-transitory storage medium, and vehicle | |
CN110377309B (zh) | 数据恢复方法、***及设备 |
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 |