一种升级BootLoader程序的方法及装置与流程

文档序号:11949711阅读:256来源:国知局
一种升级BootLoader程序的方法及装置与流程

本申请涉及嵌入式系统设计领域,尤其涉及一种升级BootLoader程序的方法及装置。



背景技术:

在嵌入式设备设计方案中,设备启动后通常会先运行一段BootLoader程序,该程序可以对系统做最小初始化,准备后续系统软件的运行环境并最终引导系统软件。在实际的工作过程中,由于一些新特性的添加,需要对设备的BootLoader程序进行升级。

在现有技术中,通过将设备返厂,重新烧写新版本的BootLoader程序,或者使设备进入调试模式,手动升级BootLoader程序。

然而,将设备返厂重新烧写程序需要花费很长的时间,且成本较高;手动升级需要人为操作,可能出现误操作的情况,从而导致升级失败,设备宕机。



技术实现要素:

有鉴于此,本申请提供一种升级BootLoader程序的方法及装置,可以解决升级BootLoader程序时,花费时间长,成本高,容易升级失败的问题。

为实现上述目的,本申请提供技术方案如下:

根据本申请的第一方面,提出了一种升级BootLoader程序的方法,应用于嵌入式设备,所述方法包括:

当检测到对所述嵌入式设备中操作系统的升级触发操作时,获取所述操作系统对应的版本文件,所述版本文件中包含所述操作系统对应的操作系统升级数据和最新版本的BootLoader升级数据;

提取所述操作系统升级数据,并根据所述操作系统升级数据对所述操作系统进行升级处理;

当所述嵌入式设备中的当前BootLoader程序与所述最新版本的BootLoader升级数据不一致时,根据所述最新版本的BootLoader升级数据更新所述当前BootLoader程序。

根据本申请的第二方面,提出了一种升级BootLoader程序的装置,应用于嵌入式设备,所述装置包括:

获取单元,当检测到对所述嵌入式设备中操作系统的升级触发操作时,获取所述操作系统对应的版本文件,所述版本文件中包含所述操作系统对应的操作系统升级数据和最新版本的BootLoader升级数据;

提取单元,提取所述操作系统升级数据,并根据所述操作系统升级数据对所述操作系统进行升级处理;

更新单元,当所述嵌入式设备中的当前BootLoader程序与所述最新版本的BootLoader升级数据不一致时,根据所述最新版本的BootLoader升级数据更新所述当前BootLoader程序。

由以上技术方案可见,本申请通过将操作系统升级数据和最新版本的BootLoader升级数据打包在同一版本文件中,在对嵌入式设备的操作系统进行升级时,利用获取的版本文件中最新版本的BootLoader升级数据,对该嵌入式设备中的当前BootLoader程序进行升级,一方面可以实现对BootLoader程序的自动升级,无需将该嵌入式设备返厂,降低了成本,加快了升级的速度,又可以避免因手动升级时的误操作导致升级失败的问题,另一方面,通过同一版本文件,可以同时对操作系统以及BootLoader程序两者进行升级,提升了对该嵌入式设备的升级更新效率,简化了用户操作。

附图说明

图1是本申请一示例性实施例提供的一种升级BootLoader程序的方法的流程图。

图2是本申请一示例性实施例提供的打包版本文件的流程图。

图3是本申请一示例性实施例提供的配置文件的格式以及版本文件的配置文件的示意图。

图4是本申请一示例性实施例提供的版本文件的结构示意图。

图5是本申请一示例性实施例提供的另一种升级BootLoader程序的方法的流程图。

图6是本申请一示例性实施例提供的一种电子设备的结构示意图。

图7是本申请一示例性实施例提供的一种升级BootLoader程序的装置的框图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

图1是本申请一示例性实施例示出的一种升级BootLoader程序的方法的流程图,如图1所示,该方法可以包括以下步骤:

步骤101,当检测到对所述嵌入式设备中操作系统的升级触发操作时,获取所述操作系统对应的版本文件,所述版本文件中包含所述操作系统对应的操作系统升级数据和最新版本的BootLoader升级数据。

步骤102,提取所述操作系统升级数据,并根据所述操作系统升级数据对所述操作系统进行升级处理。

步骤103,当所述嵌入式设备中的当前BootLoader程序与所述最新版本的BootLoader升级数据不一致时,根据所述最新版本的BootLoader升级数据更新所述当前BootLoader程序。

在本实施例中,分别获取所述最新版本的BootLoader升级数据的第一版本信息,以及所述当前BootLoader程序的第二版本信息;当所述第一版本信息高于所述第二版本信息时,确定所述当前BootLoader程序与所述最新版本的BootLoader升级数据不一致,并根据所述最新版本的BootLoader升级数据更新所述当前BootLoader程序。其中,所述第一版本信息被记录于所述版本文件的头部的预设字段内。

在本实施例中,还需要确定所述最新版本的BootLoader升级数据是否存在数据错误;当所述最新版本的BootLoader升级数据不存在数据错误时,允许根据所述最新版本的BootLoader升级数据对所述当前BootLoader程序进行更新操作;否则不允许所述更新操作,从而保证了所述最新版本的BootLoader升级数据为完整无损的数据,进一步避免了因升级错误的数据导致嵌入式设备宕机的问题。

在本实施例中,通过以下方式来确定所述最新版本的BootLoader升级数据是否存在数据错误:计算所述最新版本的BootLoader升级数据的校验值,以得到第一校验值;提取所述版本文件中包含的所述最新版本的BootLoader升级数据对应的第二校验值;当所述第一校验值与所述第二校验值相等时,确定所述最新版本的BootLoader升级数据不存在数据错误,否则确定所述最新版本的BootLoader升级数据存在数据错误。

在本实施例中,所述最新版本的BootLoader升级数据也可以与其他应用的升级数据进行绑定,而不限于操作系统升级数据,即所述版本文件中可以包含所述最新版本的BootLoader升级数据和所述其他应用的升级数据,后续利用所述其他应用的升级数据更新嵌入式设备中的所述其他应用时,根据所述最新版本的BootLoader升级数据更新所述当前BootLoader程序。

由以上技术方案可见,本申请通过将操作系统升级数据和最新版本的BootLoader升级数据打包在同一版本文件中,在对嵌入式设备的操作系统进行升级时,利用获取的版本文件中最新版本的BootLoader升级数据,对该嵌入式设备中的当前BootLoader程序进行升级,一方面可以实现对BootLoader程序的自动升级,无需将该嵌入式设备返厂,降低了成本,加快了升级的速度,又可以避免因手动升级时的误操作导致升级失败的问题,另一方面,通过同一版本文件,可以同时对操作系统以及BootLoader程序两者进行升级,提升了对该嵌入式设备的升级更新效率,简化了用户操作。

为了便于理解,下面结合图2-5,对本申请的技术方案进行详细说明。请参见图2,图2是本申请一示例性实施例的打包版本文件的流程图,打包版本文件的过程可以包括以下步骤:

步骤201,遍历配置文件中的成员数据名称。

在本实施例中,嵌入式设备根据图3中配置文件格式来编写版本文件的配置文件,并将编写好的配置文件拷贝至配置文件文件夹下,然后将该配置文件中记录的成员数据拷贝至成员数据文件夹下。配置文件的格式以及版本文件的配置文件如图3所示:

举例而言,由于本申请为将操作系统升级数据和最新版本的BootLoader升级数据打包在同一版本文件中,所以,该版本文件的配置文件中包含操作系统升级数据的名称、类型(假定为0x1)、版本信息和压缩方法,以及最新版本的BootLoader升级数据的名称、类型(假定为0x2)、版本信息和压缩方法。其中,成员数据的名称与该成员数据的类型为一一对应的关系,即操作系统升级数据与0x1对应,最新版本的BootLoader升级数据与0x2对应。通过记录成员数据的名称和类型,可以使得嵌入式设备迅速查找和区分各个成员数据。

步骤202,在成员数据文件夹中查找版本文件的配置文件中的成员数据,若查找的成员数据存在,则转入步骤203,否则结束打包版本文件的流程。

步骤203,读取查找到的成员数据,并计算该成员数据的校验值,并把得到的校验值以及该配置文件中记录的该成员数据的类型、版本信息、压缩方法填写到文件头部中。

步骤204,根据该配置文件中记录的该成员数据的压缩方法,对该成员数据进行压缩,并将压缩后该成员数据的长度填写到文件头部中。

步骤205,将压缩后的该成员数据打包进版本文件中。

在本实施例中,举例而言,假定在成员数据文件夹中查找到的成员数据为最新版本的BootLoader升级数据,则读取该最新版本的BootLoader升级数据,计算校验值(假定计算结果为1010),并把该校验值(1010)以及该配置文件中记录的该最新版本的BootLoader升级数据的类型(0x2)、版本信息、压缩方法填写到文件头部中。然后,根据该压缩方法,对该最新版本的BootLoader升级数据进行压缩,并把压缩后最新版本的BootLoader升级数据的长度填写到文件头部中(在解压该最新版本的BootLoader升级数据后,可以根据长度迅速读取到该最新版本的BootLoader升级数据并计算校验值),最后,将压缩后最新版本的BootLoader升级数据打包进版本文件中(位于文件头部之后)。其中,可以采取CRC校验的方式来校验成员数据,也可以采取其他校验方式,本申请并不对此进行限制。而将操作系统升级数据打包进版本文件的方式,与上述方式类似。

步骤206,判断配置文件中记录的所有成员数据是否都打包进了版本文件,若是,则转入步骤207,否则转入步骤201。

步骤207,打包版本文件完成。

在本实施例中,打包过程完成后的版本文件如图4所示,请参见图4,本申请将最新版本的BootLoader升级数据,操作系统升级数据以及文件头部打包成一版本文件。该文件头部中包含该版本文件中成员数据的数量,以及各个成员的成员数据信息。而成员数据信息包含该成员数据的类型、长度、校验值、版本信息以及压缩方法。由于本申请中的版本文件包含最新版本的BootLoader升级数据和操作系统升级数据,所以,图4中成员数据的数量为2,成员数据信息1为最新版本的BootLoader升级数据的信息,成员数据信息2为操作系统升级数据的信息;或者,也可以成员数据信息1为操作系统升级数据的信息,成员数据信息2为最新版本的BootLoader升级数据的信息,本申请并不对此进行限制。

图5是本申请一示例性实施例的升级BootLoader程序的方法的流程图。如图5所示,该方法可以包括以下步骤:

步骤501,读取文件头部。

步骤502A,升级嵌入式设备的操作系统。

在本实施例中,当嵌入式设备检测到对操作系统的升级触发操作时,获取版本文件,当文件头部中操作系统升级数据的版本信息高于该嵌入式设备中当前操作系统的版本信息时,提取该版本文件中的操作系统升级数据,对操作系统进行升级处理。

步骤502B,判断最新版本的BootLoader升级数据是否存在,若存在,则转入步骤503,否则结束此次升级过程。

步骤503,获取最新版本的BootLoader升级数据的版本信息。

步骤504,判断该版本信息是否高于嵌入式设备中当前BootLoader程序的版本信息,若该版本信息高于嵌入式设备中当前BootLoader程序的版本信息,则转入步骤505,否则结束此次升级过程。

在本实施例中,通过读取文件头部,查看是否含有最新版本的BootLoader升级数据的数据信息,来判断该版本文件中是否存在最新版本的BootLoader升级数据。当该文件头部中含有最新版本的BootLoader升级数据的数据信息时,获取该数据信息中的版本信息(最新版本的BootLoader升级数据的版本信息),与该嵌入式设备中当前BootLoader程序的版本信息进行比较。

步骤505,解压版本文件中包含的最新版本的BootLoader升级数据。

在本实施例中,嵌入式设备通过读取文件头部,获取最新版本的BootLoader升级数据的压缩方法,从而对该最新版本的BootLoader升级数据进行相应的解压。

步骤506,对解压后的最新版本的BootLoader升级数据进行校验。

步骤507,判断解压后的最新版本的BootLoader升级数据的校验值,与文件头部中最新版本的BootLoader升级数据的校验值是否相等,若相等,则转入步骤508,否则,结束此次升级过程。

在本实施例中,计算解压后的最新版本的BootLoader升级数据的校验值,与文件头部中记录的该最新版本的BootLoader升级数据的校验值进行比较,若相等,则说明解压后的最新版本的BootLoader升级数据不存在数据错误,可以用于升级,否则,则说明解压后的最新版本的BootLoader升级数据存在数据错误,不可用于升级。通过对解压后的最新版本的BootLoader升级数据进行校验,可以有效防止嵌入式设备因升级了数据错误的BootLoader程序导致设备宕机的问题。

步骤508,根据该最新版本的BootLoader升级数据,更新嵌入式设备中的当前BootLoader程序。

由以上技术方案可见,本申请通过将操作系统升级数据和最新版本的BootLoader升级数据打包在同一版本文件中,在对嵌入式设备的操作系统进行升级时,利用获取的版本文件中最新版本的BootLoader升级数据,对该嵌入式设备中的当前BootLoader程序进行升级,一方面可以实现对BootLoader程序的自动升级,无需将该嵌入式设备返厂,降低了成本,加快了升级的速度,又可以避免因手动升级时的误操作导致升级失败的问题,另一方面,通过同一版本文件,可以同时对操作系统以及BootLoader程序两者进行升级,提升了对该嵌入式设备的升级更新效率,简化了用户操作。

图6示出了根据本申请的一示例性实施例的电子设备的示意结构图。请参考图6,在硬件层面,该电子设备包括处理器602、内部总线604、网络接口606、内存608以及非易失性存储器610,当然还可能包括其他业务所需要的硬件。处理器602从非易失性存储器610中读取对应的计算机程序到内存602中然后运行,在逻辑层面上形成升级BootLoader程序的装置。当然,除了软件实现方式之外,本申请并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。

请参考图7,在软件实施方式中,该升级BootLoader程序的装置可以包括获取单元701、提取单元702、更新单元703、确定单元704和控制单元705。其中:

获取单元701,当检测到对所述嵌入式设备中操作系统的升级触发操作时,获取所述操作系统对应的版本文件,所述版本文件中包含所述操作系统对应的操作系统升级数据和最新版本的BootLoader升级数据;

提取单元702,提取所述操作系统升级数据,并根据所述操作系统升级数据对所述操作系统进行升级处理;

更新单元703,当所述嵌入式设备中的当前BootLoader程序与所述最新版本的BootLoader升级数据不一致时,根据所述最新版本的BootLoader升级数据更新所述当前BootLoader程序。

可选的,所述更新单元703具体用于:

分别获取所述最新版本的BootLoader升级数据的第一版本信息,以及所述当前BootLoader程序的第二版本信息;

当所述第一版本信息高于所述第二版本信息时,确定所述当前BootLoader程序与所述最新版本的BootLoader升级数据不一致,并根据所述最新版本的BootLoader升级数据更新所述当前BootLoader程序。

可选的,所述第一版本信息被记录于所述版本文件的头部的预设字段内。

可选的,还包括:

确定单元704,确定所述最新版本的BootLoader升级数据是否存在数据错误;

控制单元705,当所述最新版本的BootLoader升级数据不存在数据错误时,允许所述更新单元根据所述最新版本的BootLoader升级数据对所述当前BootLoader程序进行更新操作;否则不允许所述更新操作。

可选的,所述确定单元704具体用于:

计算所述最新版本的BootLoader升级数据的校验值,以得到第一校验值;

提取所述版本文件中包含的所述最新版本的BootLoader升级数据对应的第二校验值;

当所述第一校验值与所述第二校验值相等时,确定所述最新版本的BootLoader升级数据不存在数据错误,否则确定所述最新版本的BootLoader升级数据存在数据错误。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1