Bootloader程序模块更新方法及装置与流程

文档序号:13482871阅读:163来源:国知局

本发明涉及嵌入式系统技术领域,具体而言,涉及一种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程序模块与第二bootloader程序模块不能引导所述网络设备启动时,网络设备无法启动的问题,实现了确保网络设备能够成功启动的技术效果。

进一步地,由于采用本发明实施例所提供的bootloader程序模块更新方法,无需人为关注两个bootloader程序模块的差异,bootloader程序模块的更新也不需要依靠人手动完成,不会由于时间长了疏于维护和管理导致网络设备不能启动,在平时的使用过程中,当发现其中一个bootloader程序模块无效时,自动完成备份,当发现两个bootloader程序模块不一致时,能够自动完成bootloader程序模块的更新,保证了两个bootloader程序模块的版本一致性或者版本差异不会过大,即解决了bootloader程序模块的有效性以及版本差异不可控的问题。

此外,本发明实施例所提供的bootloader程序模块更新方法不依赖于任何具体地软件、硬件设计以及产品,故通用性好,应用场合广。

为使本发明实施例的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了本发明实施例所提供的bootloader程序模块更新方法及装置的应用环境示意图。

图2示出了本发明第一实施例所提供的bootloader程序模块更新方法的流程示意图。

图3示出了本发明第二实施例所提供的bootloader程序模块更新方法的流程示意图。

图4示出了图3中步骤s203的具体流程示意图。

图5示出了本发明第三实施例所提供的bootloader程序模块更新装置的功能模块图。

图6示出了本发明第四实施例所提供的bootloader程序模块更新装置的功能模块图。

图标:100-网络设备;400-bootloader程序模块更新装置;110-访问总线;120-中央处理器;130-存储介质;410-启动确定模块;420-更新模块;401-校验模块;402-比较模块。

具体实施方式

在实现本发明实施例的技术方案的过程中,本申请发明人发现:

当前的设备系统中,绝大部分采用了双bootloader设计(即包括主bootloader程序模块和从bootloader程序模块),尽管从设计的角度上提高了设备系统启动的可靠性,但是由于对主bootloader程序模块、从bootloader程序模块的备份、更新等缺乏有效的管理机制,使得bootloader程序模块在引导设备启动的过程中仍存在较多的风险和问题。例如,现有方案中,在对主、从bootloader程序模块更新时,通常是同时升级为同一个软件版本,在设备系统重启时,如果主bootloader程序模块不能成功引导启动,那么从bootloader程序模块也一定不能,导致设备系统无法启动。

另一方面,有的设备系统需要人为更新从bootloader程序模块,就可能出现长时间对从bootloader程序模块疏于维护和管理,当主bootloader程序模块不能成功引导设备系统启动时,从bootloader程序模块很可能出现无效(例如忘记烧写、内容被破坏等)或者因版本差异过大(长时间没有更新)等状况导致无法成功引导设备系统启动,因此,依靠手动完成主、从bootloader程序模块更新的方式,可靠性差。

为了改善现有技术中的方案,本发明实施例提出了一种bootloader程序模块更新方法及装置,在确定两个bootloader程序模块中的第一bootloader程序模块能够成功引导设备启动后,才基于所述第一bootloader程序模块对所述两个bootloader程序模块中的第二bootloader程序模块进行更新,保证两个bootloader程序模块都能够成功引导设备系统启动,解决了上述存在的bootloader程序模块有效性难以保证、版本差异不可控、可靠性差的问题,实现了确保设备系统能够成功启动的技术效果。

下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

本发明实施例所提供的bootloader程序模块更新方法及装置可应用于图1所示的网络设备100中。所述网络设备100可以是,但不限于,路由器、交换机、网关、服务器、个人电脑(personalcomputer,pc)等。

如图1所示,所述网络设备100可以由访问总线110作一般性的总线体系结构来实现,根据网络设备100的具体应用和整体设计约束条件,访问总线110可以包括任意数量的互连总线和桥接,访问总线110将各种电路连接在一起,这些电路至少包括中央处理器(centralprocessunit,cpu)120和存储介质130。访问总线110还可以连接各种其它电路,如定时源、外围设备、电压调节器或者功率管理电路等。所述访问总线110可采用ad(adressdate,地址数据总线)、i2c(interintegratedcircuit,内置集成电路总线)、spi(serialperipheralinterface,串行外设接口总线)、pcie(peripheralcomponentinterconnectexpress,外部设备高速互联总线)等常见总线。

其中,中央处理器120负责管理访问总线110和一般处理(例如执行程序指令、通过该访问总线110对存储介质130上存储的bootloader程序模块、配置信息等进行读/写操作等)。所述中央处理器120可以使用一个或多个通用处理器和/或专用处理器来实现,例如微处理器、微控制器、dsp处理器等。

存储介质130用于存放bootloader程序模块(在本发明实施例中包括第一bootloader程序模块和第二bootloader程序模块)、配置信息等,这些bootloader程序模块、配置信息可以由中央处理器120通过访问总线110来访问。在图1中,所述存储介质130与中央处理器120分离;可替换的,存储介质130或其任意部分还可以集成到中央处理器120中,例如,可以是高速缓存和/或通用寄存器。

上述的bootloader程序模块是一种引导加载程序,在网络设备100的操作系统内核运行之前运行,用于支撑中央处理器120引导启动,完成中央处理器120和相关硬件的初始化,进而实现网络设备100的启动。所述bootloader程序模块包括但不限于uboot(universalbootloader,遵循gpl规范的一种系统启动引导程序)、monitor(一种基于vxworks操作系统的启动引导程序)、pmon(prommonito,一种龙芯处理器使用的系统启动引导程序)等。

上述的配置信息是在bootloader程序模块的整个更新过程中需要用到的参数信息,在中央处理器120启动成功后,使用相应的配置命令(配置命令的实现方式和格式不做限定)可对配置信息进行设置,配置信息也可根据用户的实际需要进行更改。

第一实施例

请参照图2,为本发明第一实施例所提供的bootloader程序模块更新方法的流程示意图。需要说明的是,本发明实施例所述的bootloader程序模块更新方法并不以图2以及以下所述的具体顺序为限制。应当理解,在其它实施例中,该bootloader程序模块更新方法其中部分步骤的顺序可以根据实际需要相互交换,或者其中的部分步骤也可以省略或删除。下面,将对图2所示的具体流程进行详细阐述。

步骤s101,确定所述两个bootloader程序模块中的第一bootloader程序模块能够成功引导所述网络设备100启动。

具体地,所述中央处理器120通过访问总线110从存储介质130中读取第一bootloader程序模块,该第一bootloader程序模块成功引导了网络设备100启动。

步骤s102,基于所述第一bootloader程序模块对所述两个bootloader程序模块中的第二bootloader程序模块进行更新。

在本实施例中,中央处理器120通过访问总线110读取第一bootloader程序模块并且在该第一bootloader程序模块成功引导网络设备100启动后,中央处理器120再根据该第一bootloader程序模块对第二bootloader程序模块进行更新,例如,中央处理器120主动将当前的第一bootloader程序模块拷贝覆盖至第二bootloader程序模块所在的位置。

需要说明的是,在本实施例中,所述两个bootloader程序模块包括主bootloader程序模块和从bootloader程序模块,都能用于引导网络设备100启动。其中,所述第一bootloader程序模块既可以是主bootloader程序模块,也可以是从bootloader程序模块。当第一bootloader程序模块为主bootloader程序模块时,则第二bootloader程序模块为从bootloader程序模块;当第一bootloader程序模块为从bootloader程序模块时,则第二bootloader程序模块为主bootloader程序模块。

第二实施例

请参照图3,为本发明第二实施例所提供的bootloader程序模块更新方法的流程示意图,其与第一实施例不同的是,在本发明第二实施例所提供的bootloader程序模块更新方法还包括:

步骤s202,对所述第二bootloader程序模块进行校验,得到校验结果。

本实施例中,中央处理器120通过访问总线110读取第一bootloader程序模块并且该第一bootloader程序模块成功引导网络设备100启动后,中央处理器120再通过访问总线110从存储介质130中读取第二bootloader程序模块,并对第二bootloader程序模块进行校验计算,得到校验结果。其中,所述校验结果包括校验失败(第二bootloader程序模块无效,即被破坏或不存在)和校验成功。

所述基于所述第一bootloader程序模块对所述两个bootloader程序模块中的第二bootloader程序模块进行更新(即第一实施例中的步骤s102),在本发明第二实施例中具体包括:

步骤s203,依据所述校验结果对所述第二bootloader程序模块更新。

如图4所示,为步骤s203的具体流程示意图。

步骤s2031,判断所述第二bootloader程序模块是否校验成功。

在本实施例中,当所述校验结果为校验成功时,则执行步骤s2032;当所述校验结果为校验失败时,则执行步骤s2036。

步骤s2032,获取对应的第一配置信息。

在本实施例中,当第二bootloader程序模块校验成功时,表明第二bootloader程序模块是有效的,此时中央处理器120需通过访问总线110读取存储介质130上存放的第一配置信息,并根据该第一配置信息的值判断是否需要对两个bootloader程序模块的版本进行比较处理。

步骤s2033,依据所述第一配置信息确定是否需要对所述两个bootloader程序模块的版本进行比较。

在本实施例中,中央处理器120可根据读取的第一配置信息的值来确定是否需要进行版本比较处理。例如,当该第一配置信息的值为“是”时,则需要对两个bootloader程序模块的版本进行比较,当该第一配置信息的值为“否”时,则不需要对两个bootloader程序模块的版本进行比较。

需要说明的是,该第一配置信息的值可根据用户的需求自行定义,例如,当设置第一配置信息的默认值为“是”时,表明默认需要对两个bootloader程序模块的版本进行比较;当不希望对两个bootloader程序模块的版本进行比较,则可在中央处理器120成功启动后,将该第一配置信息的默认值更改为“否”。

步骤s2034,在确定需要比较时,对所述两个bootloader程序模块的版本进行比较,获得比较结果。

在本实施例中,经过比较后,当两个bootloader程序模块不一致且第一bootloader程序模块的版本大于第二bootloader程序模块的版本时,中央处理器120需要通过访问总线110从存储介质130上读取相应的第二配置信息,根据该第二配置信息确定第一阈值,进而判断两个版本的差值是否大于所述第一阈值。当两个bootloader程序模块不一致且第一bootloader程序模块的版本小于第二bootloader程序模块的版本时,中央处理器120需要通过访问总线110从存储介质130上读取相应的第三配置信息,根据该第三配置信息确定第二阈值,进而判断两个版本的差值是否大于所述第二阈值。例如,当读取的第二配置信息的值为“0.5”时,则可确定第一阈值为“0.5”;当读取的第三配置信息的值为“1”时,则可确定第二阈值为“1”。

步骤s2035,根据所述比较结果对所述第二bootloader程序模块更新。

在本实施例中,所述步骤s2035具体包括:当所述比较结果为所述第一bootloader程序模块的版本大于所述第二bootloader程序模块的版本且两个版本的差值大于第一阈值时,以及当所述比较结果为所述第一bootloader程序模块的版本小于所述第二bootloader程序模块的版本且两个版本的差值大于第二阈值时,执行步骤s2036。当所述比较结果为所述第一bootloader程序模块的版本与所述第二bootloader程序模块的版本一致时,则不做任何处理。

步骤s2036,将所述第一bootloader程序模块拷贝至所述第二bootloader程序模块所在的位置。

在本实施例中,当所述校验结果为校验失败时,表明第二bootloader程序模块被破坏或者不存在,则将所述第一bootloader程序模块拷贝至所述第二bootloader程序模块所在的位置,即实现自动备份功能。

当第一bootloader程序模块的版本大于第二bootloader程序模块的版本且两个版本的差值大于第一阈值(例如“0.5”)时,将所述第一bootloader程序模块拷贝至所述第二bootloader程序模块所在的位置,即对第二bootloader程序模块的版本进行升级。

当第一bootloader程序模块的版本小于第二bootloader程序模块的版本且两个版本的差值大于第二阈值(例如“1”)时,将所述第一bootloader程序模块拷贝至所述第二bootloader程序模块所在的位置,即对第二bootloader程序模块的版本进行回退。

第三实施例

请参照图5,为本发明第三实施例所提供的bootloader程序模块更新装置400的功能模块图。需要说明的是,本发明实施例所述的bootloader程序模块更新装置400,其基本原理及产生的技术效果与第一实施例相同,为简要描述,本实施例中未提及部分,可参考第一实施例中的相应内容。所述bootloader程序模块更新装置400包括启动确定模块410和更新模块420。

所述启动确定模块410用于确定所述两个bootloader程序模块中的第一bootloader程序模块能够成功引导所述网络设备100启动。

可以理解,所述启动确定模块410可以执行上述步骤s101。

所述更新模块420用于基于所述第一bootloader程序模块对所述两个bootloader程序模块中的第二bootloader程序模块进行更新。

可以理解,所述更新模块420可以执行上述步骤s102。

第四实施例

请参照图6,为本发明第四实施例所提供的bootloader程序模块更新装置400的功能模块图。与第三实施例不同的是,本发明第四实施例所提供的bootloader程序模块更新装置400还包括校验模块401、比较模块402。

所述校验模块401用于对所述第二bootloader程序模块进行校验,得到校验结果。

可以理解,所述校验模块401可以执行上述步骤s202。

在本实施例中,所述更新模块420用于依据所述校验结果对所述第二bootloader程序模块更新。

可以理解,所述更新模块420可以执行上述步骤s203。

所述比较模块402用于当所述校验结果为校验成功时,对所述两个bootloader程序模块的版本进行比较,获得比较结果。

具体地,所述比较模块402用于判断所述第二bootloader程序模块是否校验成功,当所述校验结果为校验成功时,所述比较模块402从存储介质130中获取对应的第一配置信息,依据所述第一配置信息确定是否需要对所述两个bootloader程序模块进行版本比较,并在确定需要比较时,对所述两个bootloader程序模块的版本进行比较,获得所述比较结果。

可以理解,所述比较模块402可以执行上述步骤s2031~s2034。

所述更新模块420用于根据所述比较结果对所述第二bootloader程序模块更新。

具体地,所述更新模块420用于当所述比较结果为所述第一bootloader程序模块的版本大于所述第二bootloader程序模块的版本且两个版本的差值大于第一阈值时,将所述第一bootloader程序模块拷贝至所述第二bootloader程序模块所在的位置,以及当所述比较结果为所述第一bootloader程序模块的版本小于所述第二bootloader程序模块的版本且两个版本的差值大于第二阈值时,将所述第一bootloader程序模块拷贝至所述第二bootloader程序模块所在的位置。

进一步地,所述更新模块420还用于当所述校验结果为校验失败时,将所述第一bootloader程序模块拷贝至所述第二bootloader程序模块所在的位置。

可以理解,所述更新模块420还可以执行上述步骤s2035~s2036。

综上所述,本发明实施例所提供的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程序模块的版本更新,保证了两个bootloader程序模块的版本一致性或者版本差异不会过大,即解决了bootloader程序模块的有效性以及版本差异不可控的问题。

此外,本发明实施例所提供的bootloader程序模块更新方法不依赖于任何具体地软件、硬件设计以及产品,故通用性好,应用场合广。

需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

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