CN109408153B - 软件启动方法和软件升级方法 - Google Patents
软件启动方法和软件升级方法 Download PDFInfo
- Publication number
- CN109408153B CN109408153B CN201811296732.4A CN201811296732A CN109408153B CN 109408153 B CN109408153 B CN 109408153B CN 201811296732 A CN201811296732 A CN 201811296732A CN 109408153 B CN109408153 B CN 109408153B
- Authority
- CN
- China
- Prior art keywords
- partition
- software
- starting
- current
- current starting
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1433—Saving, restoring, recovering or retrying at system level during software upgrading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1461—Backup scheduling policy
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明的实施例涉及一种软件启动方法,其中所述软件分别存储在存储装置的第一分区和第二分区中,所述软件启动方法包括:读取启动信息,所述启动信息包括当前启动分区,所述当前启动分区为所述第一分区或所述第二分区;判断所述当前启动分区是否能正常启动所述软件,如果不能,将所述当前启动分区切换为所述第一分区和第二分区中的另一个;从所述当前启动分区启动所述软件。本发明尤其可用于解决OTA升级之后,在发生非易失性存储损坏(如eMMC坏块、硬盘坏道等)导致的***镜像损坏时,无法启动的问题。目前可应用在车载计算单元(自动驾驶计算单元)上。
Description
技术领域
本发明大致涉及计算机软件技术领域,尤其涉及一种软件启动方法和车载操作***OTA升级方法和装置。
背景技术
通信技术在不断迅速发展,电脑、手机、车载智能***等终端也变得越来越普及。终端除了硬件之外,还需要各种软件才能正常的工作,例如操作***和各种应用软件(诸如导航软件)。这些软件往往需要不断升级,才能使得***更加安全和完善。例如,一款车载操作***,出厂时的操作***为4.0版本,后续需要升级到5.0版本以及更高版本。
现有技术中经常基于空中下载技术(OTA,Over-the-Air)来实现终端***的升级操作。
关于软件升级操作,现在常用的有以下两种解决方案:
1.对于安卓7.0以后的方案:安卓7.0之后支持A/B双分区升级,当前OS在A分区,则刷新B分区;当前OS在B分区,则刷新A分区。如果启动失败,则进入Recovery模式,只能通过USB刷新固件,无法提供正常使用的功能。
2.内置一个最简出厂固件,在启动不成功时,启动出厂固件,仅支持最简功能。
对于第一种方案,一旦发生存储损坏,则无法提供正常的功能,只能下线使用USB刷新。
对于第二种方案,一旦发生存储损坏,则会回滚到一个最初的出厂版本。这样会存在两个问题,一是损失了从出厂为止所有更新的功能,可能存在兼容等问题;二是一旦旧版本存在安全漏洞,则极容易被攻击者所利用,成为信息安全的一个隐患。
以上内容仅是发明人所知晓的技术情况,并不当然代表构成本发明的现有技术。
发明内容
本发明的实施例提供一种软件启动方法,其中所述软件分别存储在存储装置的第一分区和第二分区中,所述软件启动方法包括:读取启动信息,所述启动信息包括当前启动分区,所述当前启动分区为所述第一分区或所述第二分区;判断所述当前启动分区是否能正常启动所述软件,如果不能,将所述当前启动分区切换为所述第一分区和第二分区中的另一个;和从所述当前启动分区启动所述软件。
根据一个方面,所述判断当前启动分区是否能正常启动所述软件的步骤包括:判断所述当前启动分区是否被校验过。
根据一个方面,所述判断当前启动分区是否能正常启动所述软件的步骤还包括:判断所述当前启动分区的数字签名是否与预设签名相匹配。
根据一个方面,软件启动方法还包括:当判断所述当前启动分区未被校验过时,判断所述当前启动分区的重试次数是否大于零,大于零则将当前启动分区的重试次数减一,并从所述当前启动分区启动所述软件,否则将所述当前启动分区切换为所述第一分区和第二分区中的另一个。
根据一个方面,软件启动方法还包括:当所述当前启动分区的数字签名与预设签名相同时,判断所述第一分区与所述第二分区是否已经同步,如果已经同步,则从所述当前启动分区启动所述软件;否则,用所述当前分区同步所述第一分区和第二分区中的另一个;当所述当前启动分区的数字签名与预设签名不相同时;判断所述第一分区与所述第二分区是否已经同步,如果已经同步,用所述第一分区和第二分区中的另一个同步所述当前分区,并从所述当前启动分区启动所述软件;否则,发出无法恢复的告警。
根据一个方面,软件启动方法还包括:在从所述当前启动分区启动所述软件之后,验证所述当前启动分区是否成功,如果验证成功,则将当前启动分区标记为已验证;否则,进行复位操作。
根据一个方面,所述软件启动方法为车载操作***启动方法。
本发明的实施例还提供一种软件升级方法,其中所述软件分别存储在存储装置的第一分区和第二分区中,所述软件升级方法包括:接收所述软件的升级包;解析所述升级包;和根据所述升级包,升级所述第一分区和第二分区存储的所述软件。
根据一个方面,软件升级方法还包括:记录所述第一分区和第二分区的同步信息、和/或校验信息、和/或数字签名、和/或重试次数。
根据一个方面,软件升级方法还包括:当所述第一分区和第二分区不同步时,将所述第一分区和第二分区中能够正常启动的一个同步到另一个。
根据一个方面,所述软件是车载安卓***,所述软件升级方法通过OTA执行。
本发明的实施例还提供一种设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上所述的软件启动方法。
本发明的实施例还提供一种设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上所述的软件升级方法。
本发明的实施例还提供一种软件启动装置,其中所述软件分别存储在存储装置的第一分区和第二分区中,所述软件启动装置包括:读取启动信息的单元,所述启动信息包括当前启动分区,所述当前启动分区为所述第一分区或所述第二分区;判断所述当前启动分区是否能正常启动所述软件的单元,配置成如果不能正常启动所述软件,将所述当前启动分区切换为所述第一分区和第二分区中的另一个;和从所述当前启动分区启动所述软件的单元。
本发明的实施例还提供一种软件升级装置,其中所述软件分别存储在存储装置的第一分区和第二分区中,所述软件升级装置包括:接收所述软件的升级包的单元;解析所述升级包的单元;和根据所述升级包升级所述第一分区和第二分区存储的所述软件的单元。
本发明的实施例还提供一种计算机可读存储介质,包括存储于其上的计算机可执行指令,所述可执行指令在被处理器执行时实施如上所述的软件启动方法。
本发明的实施例还提供一种计算机可读存储介质,包括存储于其上的计算机可执行指令,所述可执行指令在被处理器执行时实施如上所述的软件升级方法。
本发明的实施例提供了一种较为安全的软件升级方法和启动方法,保证软件的两个分区的版本都会被更新,通过数字签名的方法来验证***镜像的完整性,一旦出现损坏,可以用另一分区的相同版本做恢复,实现了互为备份,提高了软件OTA升级的鲁棒性。本发明可应用于各种软件的升级和启动,尤其适用于车载智能***的操作***软件(诸如安卓***)和其他软件(诸如导航软件)的确定和升级。
上述概述仅仅是为了说明书的目的,并不意图以任何方式进行限制。除上述描述的示意性的方面、实施方式和特征之外,通过参考附图和以下的详细描述,本发明进一步的方面、实施方式和特征将会是容易明白的。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1示出了根据本发明一个实施例的一种软件启动方法的流程图;
图2示出了根据本发明第二实施例的***分区;
图3示出了根据本发明第二实施例的启动方法的流程图;
图4示出了根据本发明第三实施例的软件升级方法的流程图;
图5示出了根据本发明第四实施例的设备的框图;
图6示出了根据本发明第五实施例的设备的框图;
图7示出了根据本发明第六实施例的设备的框图;
图8示出了根据本发明第七实施例的设备的框图;
图9示出了根据本发明第八实施例的计算机程序产品的框图;和
图10示出了根据本发明第九实施例的计算机程序产品的框图。
具体实施方式
在下文中,仅简单地描述了某些示例性实施例。正如本领域技术人员可认识到的那样,在不脱离本发明的精神或范围的情况下,可通过各种不同方式修改所描述的实施例。因此,附图和描述被认为本质上是示例性的而非限制性的。
在本发明的描述中,需要理解的是,术语"中心"、"纵向"、"横向"、"长度"、"宽度"、"厚度"、"上"、"下"、"前"、"后"、"左"、"右"、"坚直"、"水平"、"顶"、"底"、"内"、"外"、"顺时针"、"逆时针"等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语"第一"、"第二"仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有"第一"、"第二"的特征可以明示或者隐含地包括一个或者更多个所述特征。在本发明的描述中,"多个"的含义是两个或两个以上,除非另有明确具体的限定。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语"安装"、"相连"、"连接"应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接:可以是机械连接,也可以是电连接或可以相互通讯;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
在本发明中,除非另有明确的规定和限定,第一特征在第二特征之"上"或之"下"可以包括第一和第二特征直接接触,也可以包括第一和第二特征不是直接接触而是通过它们之间的另外的特征接触。而且,第一特征在第二特征"之上"、"上方"和"上面"包括第一特征在第二特征正上方和斜上方,或仅仅表示第一特征水平高度高于第二特征。第一特征在第二特征"之下"、"下方"和"下面"包括第一特征在第二特征正上方和斜上方,或仅仅表示第一特征水平高度小于第二特征。
下文的公开提供了许多不同的实施方式或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。当然,它们仅仅为示例,并且目的不在于限制本发明。此外,本发明可以在不同例子中重复参考数字和/或参考字母,这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施方式和/或设置之间的关系。此外,本发明提供了的各种特定的工艺和材料的例子,但是本领域普通技术人员可以意识到其他工艺的应用和/或其他材料的使用。
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
图1示出了根据本发明一个实施例的一种软件启动方法100。软件例如分别存储在一存储装置的第一分区和第二分区,通过所述第一分区或者第二分区,均可以启动该软件。注意,本领域技术人员能够理解,本发明中第一分区和第二分区的含义,既包括不同的物理存储装置上的分区,例如第一分区位于一硬盘上,第二分区位于SSD存储卡上;也包括相同物理存储装置上的不同逻辑分区,例如同一硬盘上的两个逻辑分区;同时也包括同一个存储装置上的、同一个逻辑分区中的不同文件夹。这些都在本发明的保护范围内。另外,所述软件既可以是操作***软件,例如Linux操作***或者qnx操作***,也可以是应用软件,例如GPS导航***软件等。
如图1所示,本实施例的软件启动方法100包括:
在步骤S101:读取该软件的启动信息。所述启动信息包括当前启动分区,所述当前启动分区为所述第一分区或所述第二分区。本发明中,例如可以将第一分区设置为默认分区,默认状态下,当前启动分区为第一分区。在特定情况下,例如当通过第一分区无法正常启动该软件时,当前启动分区被修改为第二分区。
在步骤S102:判断通过所述当前启动分区是否能正常启动所述软件,如果不能,将所述当前启动分区切换为所述第一分区和第二分区中的另一个。当通过当前启动分区不能正常启动该软件时,说明当前启动分区所存储的软件存在问题,在此情况下,需要切换到另一个分区来启动该软件。
在步骤S103:从所述当前启动分区启动所述软件。
下面参考图2和图3描述根据本发明一个优选实施例的操作***的启动方法。其中图2示出了***分区的一种实现方式,图3示出了操作***的启动方法200。本实施例以操作***软件为例进行说明,但本领域技术人员能够理解,本发明不限于此,也可以适用于其他类型的软件。
如图2所示,本实施例的***分区包括boot、OS A、OS B、rootfs、misc分区。其中boot分区负责存储***的启动引导程序boot l oader;OS A及OS B分区各存储一份操作***的内核,互为备份;rootfs为根文件***;misc分区负责在OS与bootloader间进行通信,存储了包含当前启动分区、是否同步、每个分区镜像是否被校验过、每个镜像的数字签名及重试次数等信息。
如图3所示,本实施例的操作***的启动方法200包括:
在步骤S201,***复位,执行启动引导程序bootloader。
在步骤S202,bootloader读取misc分区的启动信息,包含当前启动分区、是否同步、每个分区镜像是否被校验过、每个镜像的数字签名及重试次数等信息中的一个或多个或全部。所述是否同步的信息,例如可以是一个标记值,也可以通过比较第一分区和第二分区存储的操作***的版本号,从而判断两个分区是否进行过同步。所述每个分区镜像是否被校验过的启动信息,例如同样可以是一个标志,当该分区存储的操作***被自检通过后,该标志为1表明已经验证过通过该分区能够启动操作***,否则为0,表明尚未验证过通过该分区是否能启动操作***。
在步骤S203,检查当前分区是否被校验过,如果没有校验过,则进行到步骤S205,判断当前分区重试次数是否大于0,大于0则减1(步骤S206),启动当前分区,否则认为当前分区为错误版本,切换到另一分区(步骤S207)启动。如果当前分区已经校验过,则进行到步骤S204,对当前分区进行数字签名,与预存的签名做对比,成功则进行到步骤S210,判断两个分区是否同步,如果不同步,将当前分区同步到另一分区(步骤S211),然后从当前分区启动该操作***(步骤S212)。如果签名失败,则认为当前分区的存储已损坏,进行到步骤S208,判断两个分区是否已经同步,如果已经同步,则使用另一分区对当前启动分区进行恢复(步骤S209),否则,发出无法恢复的告警。
在步骤S212之后,进行到步骤S213,验证当前分区是否成功。验证的方法包括但不限于在启动之后进行***自检。如果成功,则进行到步骤S214,将当前分区标记为已校验,进入正常模式,执行***的功能;否则,进行到步骤S215,进行复位操作,重启***。
注意,第二实施例的操作***启动方法200是第一实施例的启动方法100的一个优选实施方案,其中步骤S203和步骤S204是步骤S102的优选的实现方式。
根据本发明的一个优选实施方式,第一实施例中的软件以及第二实施例中的操作***例如可以是车载的操作***,例如Linux或者qnx操作***,安装在车载计算单元(自动驾驶计算单元)上。
下面参考图4描述根据本发明第三实施例的软件升级方法400。其中与第一实施例和第二实施例类似,所述软件分别存储在存储装置的第一分区和第二分区中。软件升级方法400包括:
在步骤S401,接收所述软件的升级包。本发明的实施例中,升级包包括两种类型:完整包和差分包。完整包包括该升级所对应的***版本所包括的所有信息和文件,差分包仅包括了两个***版本之间存在的差异化信息和文件。通常完整包的数据量大于差分包的数据量。本实施例既可以使用完整包也可以使用差分包来进行升级。
在步骤S402,解析所述升级包,例如进行文件解压、获取版本号等。
在步骤S403,根据所述升级包的解析信息,升级所述第一分区和第二分区存储的所述软件。所述的升级包括但不限于固件刷写、文件更新、配置下发等。
根据本发明的一个优选实施方案,软件升级方法400还包括:记录所述第一分区和第二分区的同步信息、和/或校验信息、和/或数字签名、和/或重试次数。
根据本发明的一个优选实施方案,软件升级方法400还包括:当所述第一分区和第二分区不同步时,将所述第一分区和第二分区中能够正常启动的一个同步到另一个。
根据本发明的一个优选实施方案,所述软件是车载安卓***,所述软件升级方法可以通过OTA的方式来执行。
通过本发明实施例的启动方法100、200和升级方法400,提供了一种较为安全的软件升级方法和启动方法。每次升级之后,软件的两个分区的版本都会被更新,通过数字签名的方法来验证***镜像的完整性,一旦出现损坏,可以用另一分区的相同版本做恢复,实现了互为备份,提高了软件OTA升级的鲁棒性。
下面参考图5描述根据本发明第四实施例的一种设备500。设备500包括一个或多个处理器501以及存储装置502。存储装置502中可以用于存储一个或多个程序。当所述程序被所述处理器执行时,使得所述一个或多个处理器实现如上所述的软件启动方法100或200。
设备500例如是车载计算单元,软件例如是车载计算单元中安装的linux或者qnx操作***或者其他软件,例如导航软件等。
下面参考图6描述根据本发明第五实施例的一种设备600。设备600包括:一个或多个处理器601和存储装置602。存储装置602用于存储一个或多个程序。该程序被配置成当被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上所述的软件升级方法400。
设备600例如是车载计算单元,软件例如是车载计算单元中安装的linux或qnx操作***或者其他软件,例如导航软件等。
图7示出了根据本发明第六实施例的一种软件启动装置700。所述软件启动装置700包括:读取启动信息的单元701,所述启动信息包括当前启动分区,所述当前启动分区为所述第一分区或所述第二分区;判断所述当前启动分区是否能正常启动所述软件的单元702,配置成如果不能正常启动所述软件,将所述当前启动分区切换为所述第一分区和第二分区中的另一个;从所述当前启动分区启动所述软件的单元703。
根据本实施例的一个优选的实施方案,所述判断当前启动分区是否能正常启动软件的单元702配置成判断所述当前启动分区是否被校验过,以及判断所述当前启动分区的数字签名是否与预设签名相匹配。
根据本实施例的一个优选的实施方案,所述判断当前启动分区是否能正常启动软件的单元702配置成当判断所述当前启动分区未被校验过时,判断所述当前启动分区的重试次数是否大于零,大于零则将当前启动分区的重试次数减一,并从所述当前启动分区启动所述软件,否则将所述当前启动分区切换为所述第一分区和第二分区中的另一个。
根据本实施例的一个优选的实施方案,所述判断当前启动分区是否能正常启动软件的单元702配置成:当所述当前启动分区的数字签名与预设签名相同时,判断所述第一分区与所述第二分区是否已经同步,如果已经同步,则从所述当前启动分区启动所述软件;否则,用所述当前分区同步所述第一分区和第二分区中的另一个;当所述当前启动分区的数字签名与预设签名不相同时;判断所述第一分区与所述第二分区是否已经同步,如果已经同步,用所述第一分区和第二分区中的另一个同步所述当前分区,并从所述当前启动分区启动所述软件;否则,发出无法恢复的告警。
根据本实施例的一个优选的实施方案,所述软件启动装置700还包括验证单元,所述验证单元配置成:在从所述当前启动分区启动所述软件之后,验证所述当前启动分区是否成功,如果验证成功,则将当前启动分区标记为已验证;否则,进行复位操作。
图8示出了根据本发明第七实施例的一种软件启动装置800。其中所述软件分别存储在存储装置的第一分区和第二分区中。所述软件升级装置包括:接收所述软件的升级包的单元801;解析所述升级包的单元802;和根据所述升级包升级所述第一分区和第二分区存储的所述软件的单元803。
根据本实施例的一个优选的实施方案,所述软件启动装置800还包括记录单元,所述记录单元配置成记录所述第一分区和第二分区的同步信息、和/或校验信息、和/或数字签名、和/或重试次数。
根据本实施例的一个优选的实施方案,所述软件启动装置800还包括同步单元,所述同步单元配置成当所述第一分区和第二分区不同步时,将所述第一分区和第二分区中能够正常启动的一个同步到另一个。
图9示出了根据本发明第八实施例的一种计算机程序产品900的框图。信号承载介质902可以被实现为或者包括计算机可读介质906、计算机可记录介质908、计算机通信介质910或者它们的组合,其存储可配置处理单元以执行先前描述的过程中的全部或一些的编程指令904。这些指令可以包括例如用于使一个或多个处理器执行如下处理的一个或多个可执行指令:读取启动信息,所述启动信息包括当前启动分区,所述当前启动分区为所述第一分区或所述第二分区;判断所述当前启动分区是否能正常启动所述软件,如果不能,将所述当前启动分区切换为所述第一分区和第二分区中的另一个;从所述当前启动分区启动所述软件。
图10示出了根据本发明第九实施例的一种计算机程序产品1000的框图。信号承载介质1002可以被实现为或者包括计算机可读介质1006、计算机可记录介质1008、计算机通信介质1010或者它们的组合,其存储可配置处理单元以执行先前描述的过程中的全部或一些的编程指令1004。这些指令可以包括例如用于使一个或多个处理器执行如下处理的一个或多个可执行指令:接收所述软件的升级包;解析所述升级包;根据所述升级包,升级所述第一分区和第二分区存储的所述软件。
本发明的实施例提供了一种较为安全的软件升级方法和启动方法,保证软件的两个分区的版本都会被更新,通过数字签名的方法来验证***镜像的完整性,一旦出现损坏,可以用另一分区的相同版本做恢复,实现了互为备份,提高了软件OTA升级的鲁棒性。本发明可应用于各种软件的升级和启动,尤其适用于车载智能***的操作***软件(诸如安卓***)和其他软件(诸如导航软件)的确定和升级。汽车电子对安全性的要求比消费电子更严格,而自动驾驶领域又是新兴领域,产品迭代十分迅速,这会提高OTA的频率。本发明通过双分区的同步OTA,两个分区互为备份,一定程度上降低了由于OTA导致的服务不可用的风险。本发明尤其可用于解决OTA升级之后,在发生非易失性存储损坏(如eMMC坏块、硬盘坏道等)导致的***镜像损坏时,无法启动的问题。目前可应用在车载计算单元(自动驾驶计算单元)上。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行***、装置或设备(如基于计算机的***、包括处理器的***或其他可以从指令执行***、装置或设备取指令并执行指令的***)使用,或结合这些指令执行***、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行***、装置或设备或结合这些指令执行***、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行***执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。所述存储介质可以是只读存储器,磁盘或光盘等。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种软件启动方法,其中所述软件分别存储在存储装置的第一分区和第二分区中,所述软件启动方法包括:
读取启动信息,所述启动信息包括当前启动分区,所述当前启动分区为所述第一分区和所述第二分区中的一个;
判断所述当前启动分区是否能正常启动所述软件,如果不能,将所述当前启动分区切换为所述第一分区和第二分区中的另一个;和
从所述当前启动分区启动所述软件;
其中,判断所述当前启动分区是否能正常启动所述软件,还包括:
判断所述当前启动分区是否被校验过;
如果所述当前启动分区已经校验过,判断所述当前启动分区的数字签名是否与预设签名相匹配;
当所述当前启动分区的数字签名与预设签名相同时,利用标记值判断所述第一分区与所述第二分区是否已经同步,如果已经同步,则从所述当前启动分区启动所述软件;否则,用所述当前分区同步所述第一分区和第二分区中的另一个;
当所述当前启动分区的数字签名与预设签名不相同时,利用标记值判断所述第一分区与所述第二分区是否已经同步,如果已经同步,用所述第一分区和第二分区中的另一个恢复所述当前启动分区,并从所述当前启动分区启动所述软件;否则,发出无法恢复的告警。
2.根据权利要求1所述的软件启动方法,其特征在于,还包括:当判断所述当前启动分区未被校验过时,判断所述当前启动分区的重试次数是否大于零,大于零则将当前启动分区的重试次数减一,并从所述当前启动分区启动所述软件,否则将所述当前启动分区切换为所述第一分区和第二分区中的另一个。
3.根据权利要求1-2中任一项所述的软件启动方法,其特征在于,还包括:在从所述当前启动分区启动所述软件之后,验证所述当前启动分区是否成功,如果验证成功,则将当前启动分区标记为已验证;否则,进行复位操作。
4.根据权利要求1-2中任一项所述的软件启动方法,其特征在于,所述软件启动方法为车载操作***启动方法。
5.一种设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1至4中任一项所述的软件启动方法。
6.一种软件启动装置,其中所述软件分别存储在存储装置的第一分区和第二分区中,所述软件启动装置包括:
读取启动信息的单元,所述启动信息包括当前启动分区,所述当前启动分区为所述第一分区或所述第二分区;
判断所述当前启动分区是否能正常启动所述软件的单元,配置成如果不能正常启动所述软件,将所述当前启动分区切换为所述第一分区和第二分区中的另一个;和
从所述当前启动分区启动所述软件的单元;
其中,判断所述当前启动分区是否能正常启动所述软件,还包括:
判断所述当前启动分区是否被校验过;
如果所述当前启动分区已经校验过,判断所述当前启动分区的数字签名是否与预设签名相匹配;
当所述当前启动分区的数字签名与预设签名相同时,利用标记值判断所述第一分区与所述第二分区是否已经同步,如果已经同步,则从所述当前启动分区启动所述软件;否则,用所述当前分区同步所述第一分区和第二分区中的另一个;
当所述当前启动分区的数字签名与预设签名不相同时;利用标记值判断所述第一分区与所述第二分区是否已经同步,如果已经同步,用所述第一分区和第二分区中的另一个恢复所述当前启动分区,并从所述当前启动分区启动所述软件;否则,发出无法恢复的告警。
7.一种计算机可读存储介质,包括存储于其上的计算机可执行指令,所述可执行指令在被处理器执行时实施如权利要求1-4中任一项所述的软件启动方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811296732.4A CN109408153B (zh) | 2018-11-01 | 2018-11-01 | 软件启动方法和软件升级方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811296732.4A CN109408153B (zh) | 2018-11-01 | 2018-11-01 | 软件启动方法和软件升级方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109408153A CN109408153A (zh) | 2019-03-01 |
CN109408153B true CN109408153B (zh) | 2022-03-01 |
Family
ID=65470938
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811296732.4A Active CN109408153B (zh) | 2018-11-01 | 2018-11-01 | 软件启动方法和软件升级方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109408153B (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110333882B (zh) * | 2019-05-09 | 2023-03-14 | 阿波罗智联(北京)科技有限公司 | ***的升级方法、装置、设备及计算机可读介质 |
CN110377308A (zh) * | 2019-07-18 | 2019-10-25 | 上海擎感智能科技有限公司 | 数据升级方法、*** |
CN110471680A (zh) * | 2019-07-23 | 2019-11-19 | 武汉格罗夫氢能汽车有限公司 | 用于氢能汽车控制器软件升级及失败回滚的控制方法 |
CN111209141B (zh) * | 2019-12-30 | 2023-10-20 | 晶晨半导体(深圳)有限公司 | 运用于***迭代的双***切换方法和装置 |
CN111881101A (zh) * | 2020-08-03 | 2020-11-03 | 南京创通微新通信有限公司 | 一种双文件***同步方法 |
CN114138343A (zh) * | 2020-09-04 | 2022-03-04 | 青岛海信移动通信技术股份有限公司 | 一种终端及终端启动方法 |
CN112256285A (zh) * | 2020-10-16 | 2021-01-22 | 宝能(广州)汽车研究院有限公司 | 车辆的ota升级方法、计算机可读存储介质和电子设备 |
CN112631626B (zh) * | 2020-12-02 | 2023-11-14 | 广东中兴新支点技术有限公司 | 基于双***的***升级方法、装置及存储介质 |
CN112612524A (zh) * | 2020-12-22 | 2021-04-06 | 西人马(西安)测控科技有限公司 | Linux***启动的方法、装置、设备及存储介质 |
CN113114730B (zh) * | 2021-03-22 | 2022-09-27 | 深圳市晨北科技有限公司 | 升级方法、装置、终端设备及存储介质 |
EP4092539A1 (en) | 2021-05-17 | 2022-11-23 | Elektrobit Automotive GmbH | Re-partitioning of a flash memory device |
CN113821235B (zh) * | 2021-06-15 | 2023-10-20 | 荣耀终端有限公司 | 操作***数据更新方法、设备、存储介质及程序产品 |
CN113821263B (zh) * | 2021-06-15 | 2023-03-24 | 荣耀终端有限公司 | 操作***的管理方法、设备、存储介质及计算机程序产品 |
CN115480798B (zh) * | 2021-06-15 | 2023-06-16 | 荣耀终端有限公司 | 操作***升级方法、设备、存储介质及计算机程序产品 |
CN114116023B (zh) * | 2021-06-15 | 2023-05-09 | 荣耀终端有限公司 | 操作***启动方法、设备、存储介质及计算机程序产品 |
CN113609476A (zh) * | 2021-07-28 | 2021-11-05 | 南京慧尔视智能科技有限公司 | 一种雷达固件远程升级方法和升级*** |
CN116149714A (zh) * | 2021-07-29 | 2023-05-23 | 荣耀终端有限公司 | 操作***数据配置方法、设备、存储介质及程序产品 |
CN114489814B (zh) * | 2021-08-20 | 2023-01-17 | 荣耀终端有限公司 | 一种终端设备的开机方法及终端设备 |
CN113824620A (zh) * | 2021-08-20 | 2021-12-21 | 中国第一汽车股份有限公司 | 一种分区切换方法、装置、车辆和存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100584338B1 (ko) * | 2003-09-17 | 2006-05-26 | 삼성전자주식회사 | 소프트웨어 업데이트 방법 및 시스템 |
CN101126920A (zh) * | 2007-09-30 | 2008-02-20 | 浙江中控技术有限公司 | 实现固化程序在线升级的方法和装置 |
CN101437106A (zh) * | 2007-11-16 | 2009-05-20 | 深圳Tcl工业研究院有限公司 | 一种机顶盒***及其自行修复的方法 |
CN101650662A (zh) * | 2009-08-26 | 2010-02-17 | 中兴通讯股份有限公司 | 一种嵌入式***的存储器件、固件启动及升级方法 |
CN102779081A (zh) * | 2012-07-05 | 2012-11-14 | 深圳市华曦达科技股份有限公司 | 电子设备***安全更新的方法及装置 |
CN104636171A (zh) * | 2015-03-04 | 2015-05-20 | 深圳市欧珀通信软件有限公司 | 升级的方法、装置及移动终端 |
CN105786510A (zh) * | 2016-02-29 | 2016-07-20 | 深圳市美贝壳科技有限公司 | 一种单片机的升级分区***和安全升级方法 |
CN106055430A (zh) * | 2016-05-27 | 2016-10-26 | 北京奇虎科技有限公司 | 云台摄像头的***备份更新方法及装置 |
CN106293822A (zh) * | 2016-08-04 | 2017-01-04 | 青岛海信电器股份有限公司 | 一种从处理芯片升级的方法及装置 |
CN108121554A (zh) * | 2017-12-20 | 2018-06-05 | 浙江亿邦通信科技股份有限公司 | 一种户外嵌入式设备***的升级方法及升级*** |
-
2018
- 2018-11-01 CN CN201811296732.4A patent/CN109408153B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100584338B1 (ko) * | 2003-09-17 | 2006-05-26 | 삼성전자주식회사 | 소프트웨어 업데이트 방법 및 시스템 |
CN101126920A (zh) * | 2007-09-30 | 2008-02-20 | 浙江中控技术有限公司 | 实现固化程序在线升级的方法和装置 |
CN101437106A (zh) * | 2007-11-16 | 2009-05-20 | 深圳Tcl工业研究院有限公司 | 一种机顶盒***及其自行修复的方法 |
CN101650662A (zh) * | 2009-08-26 | 2010-02-17 | 中兴通讯股份有限公司 | 一种嵌入式***的存储器件、固件启动及升级方法 |
CN102779081A (zh) * | 2012-07-05 | 2012-11-14 | 深圳市华曦达科技股份有限公司 | 电子设备***安全更新的方法及装置 |
CN104636171A (zh) * | 2015-03-04 | 2015-05-20 | 深圳市欧珀通信软件有限公司 | 升级的方法、装置及移动终端 |
CN105786510A (zh) * | 2016-02-29 | 2016-07-20 | 深圳市美贝壳科技有限公司 | 一种单片机的升级分区***和安全升级方法 |
CN106055430A (zh) * | 2016-05-27 | 2016-10-26 | 北京奇虎科技有限公司 | 云台摄像头的***备份更新方法及装置 |
CN106293822A (zh) * | 2016-08-04 | 2017-01-04 | 青岛海信电器股份有限公司 | 一种从处理芯片升级的方法及装置 |
CN108121554A (zh) * | 2017-12-20 | 2018-06-05 | 浙江亿邦通信科技股份有限公司 | 一种户外嵌入式设备***的升级方法及升级*** |
Also Published As
Publication number | Publication date |
---|---|
CN109408153A (zh) | 2019-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109408153B (zh) | 软件启动方法和软件升级方法 | |
US10871959B2 (en) | Vehicle control device and program update system | |
CN109032632B (zh) | 一种fota升级方法、无线通信终端及存储介质 | |
US20160306624A1 (en) | Vehicle control storage methods and systems | |
WO2019076037A1 (zh) | 升级固件的方法和装置 | |
CN107783776B (zh) | 固件升级包的处理方法及装置、电子设备 | |
CN110244958B (zh) | 用于更新车辆的标定数据的方法和装置 | |
CN111625295A (zh) | 一种嵌入式***启动方法、装置、设备及存储介质 | |
EP3153968A1 (en) | Multi-system terminal system updating method, updating device and terminal | |
CN102841793A (zh) | 一种软件的升级方法及终端 | |
CN115344434B (zh) | 用于打补丁的方法及装置、电子设备、存储介质 | |
WO2019080840A1 (zh) | 固件修复方法及装置 | |
CN114443081A (zh) | 终端升级的方法及终端 | |
CN110333882B (zh) | ***的升级方法、装置、设备及计算机可读介质 | |
CN115220796A (zh) | 安全引导设备 | |
CN106775874B (zh) | 终端设备的***升级方法 | |
KR102610730B1 (ko) | 차량의 업데이트 제공 장치 및 컴퓨터 기록 매체 | |
CN105550071A (zh) | ***文件升级及检测方法、通信设备 | |
CN105045671A (zh) | 一种智能终端的***升级方法及装置 | |
WO2021012170A1 (zh) | 固件启动方法、设备及计算机可读存储介质 | |
CN112988181A (zh) | 应用更新方法、装置、终端、服务器和可读存储介质 | |
CN110659052B (zh) | 网络设备中***软件的更新方法、***及可读存储介质 | |
CN113114730B (zh) | 升级方法、装置、终端设备及存储介质 | |
CN110134456B (zh) | 用于管理操作***的方法、装置、设备和存储介质 | |
CN114780122A (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 |