CN103135995A - 一种BootLoader的备份管理方法及装置 - Google Patents
一种BootLoader的备份管理方法及装置 Download PDFInfo
- Publication number
- CN103135995A CN103135995A CN2011103732188A CN201110373218A CN103135995A CN 103135995 A CN103135995 A CN 103135995A CN 2011103732188 A CN2011103732188 A CN 2011103732188A CN 201110373218 A CN201110373218 A CN 201110373218A CN 103135995 A CN103135995 A CN 103135995A
- Authority
- CN
- China
- Prior art keywords
- bootloader
- program
- bootrom
- load operating
- mutually redundant
- 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.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开一种BootLoader的备份管理方法及装置,该方法包括:在装置上电之后,执行BootROM程序的代码指令;所述BootROM程序在引导过程中从互为备份的至少两个BootLoader中选择一个加载运行;若所启用的BootLoader出现异常,所述BootROM程序进行切换操作,加载运行另一BootLoader。本发明通过以上技术方案,提供一种简单可靠的BootLoader备份管理方法及装置。
Description
技术领域
本发明涉及通信领域,尤其涉及一种BootLoader的备份管理方法及装置。
背景技术
在嵌入式通信设备中,除嵌入式硬件之外,还包括与嵌入式硬件相互配合以完成各种功能的嵌入式软件,例如,负责引导处理器并且加载运行软件的引导程序BootROM(程序存储单元)、BootLoader(启动加载器)、负责***管理的操作***软件和实现各种业务的应用软件等。其中,BootROM或BootLoader是在设备上电启动期间运行的一段引导程序,其作用类似于PC(PersonalComputer,个人计算机)中的BIOS(Basic Input Output System,基本输入输出***)。
在设备使用和运行过程中,由于存储BootROM或BootLoader的存储器可能出现坏块,或在对BootROM或BootLoader进行软件升级的过程中可能出现设备掉电、重启等异常情况,导致设备无法启动,通常只能将整机返修之后重新烧写BootROM或BootLoader,或者在现场通过JTAG(Joint Test Action Group,联合测试行为组织)等其它方式重新加载BootROM或BootLoader。然而,上述修复方案操作复杂,常常需要专业的技术人员借助专用仪器设备进行操作,还可能造成不可挽回的损失。因此,BootROM或BootLoader的可靠性是有待解决的一个关键性问题。
发明内容
本发明提供一种简单可靠的BootLoader备份管理方法及装置。
为解决上述技术问题,本发明采用以下技术方案:
一种BootLoader的备份管理方法,包括:
在装置上电之后,执行BootROM程序的代码指令;
所述BootROM程序在引导过程中从互为备份的至少两个BootLoader中选择一个加载运行;
若所启用的BootLoader出现异常,所述BootROM程序进行切换操作,加载运行另一BootLoader。
所述互为备份的所有BootLoader存储在同一程序存储器,所述BootROM程序存储在另一程序存储器;或者所述互为备份的所有BootLoader和所述BootROM程序均存储在同一程序存储器。
互为备份的所有BootLoader均携带版本头,所述版本头中包括相应BootLoader的生成时间、启动方式、寻址空间、程序入口地址、加载到内存模组的目的地址、硬件初始化所需的参数信息中的一种或多种。
所述BootROM程序在引导过程中从互为备份的至少两个BootLoader中选择一个加载运行的过程具体为:
搜索互为备份的所有BootLoader的版本头;
读取各BootLoader的版本头中,所携带的BootLoader的生成时间;
根据各BootLoader的生成时间选择最新的BootLoader加载运行。
还包括判断互为备份的所有BootLoader中,各BootLoader的当前启用次数是否超过预设的阈值;在未超过阈值的BootLoader中,根据BootLoader的生成时间选择最新的BootLoader加载运行。
在对待启用的BootLoader加载运行之前,还包括:所述BootROM程序从待启用的BootLoader的版本头中,读取所述硬件初始化所需的参数信息,并根据所述参数信息对相应硬件进行初始化。
在需要对所述参数信息进行重新设定或更换硬件时,根据更换后的硬件更新所述参数信息,所述BootROM程序根据更新后的参数信息对更换后的硬件进行初始化。
在装置上电之后,执行BootROM程序的代码指令的过程包括:
预先将所述BootROM程序的代码指令存储在基地址为处理器的复位向量地址的程序存储器;
在装置上电之后,所述处理器首先执行所述BootROM程序的代码指令。
若所启用的BootLoader出现异常,所述BootROM程序进行切换操作,加载运行另一Boo tLoader的过程包括:若所启用的BootLoader出现异常,累积所述所启用的BootLoader的异常次数,若异常次数超过预设的最大值,则所述BootROM程序进行切换操作,加载运行另一BootLoader。
还包括从版本服务器下载待升级的BootLoader,对处于备份状态的BootLoader进行升级。
一种BootLoader的备份管理装置,包括处理器、BootROM程序,以及互为备份的至少两个BootLoader,其中,
所述处理器用于在装置上电之后,执行BootROM程序的代码指令;
所述BootROM程序用于在引导过程中从互为备份的至少两个BootLoader中选择一个加载运行;还用于在所启用的BootLoader出现异常时,进行切换操作,加载运行另一BootLoader。
所述互为备份的所有BootLoader存储在同一程序存储器,所述BootROM程序存储在另一程序存储器;或者所述互为备份的所有BootLoader和所述BootROM程序均存储在同一程序存储器。
互为备份的所有BootLoader均携带版本头,所述版本头中包括相应BootLoader的生成时间、启动方式、寻址空间、程序入口地址、加载到内存模组的目的地址、硬件初始化所需的参数信息中的一种或多种。
所述BootROM程序在引导过程中从互为备份的至少两个BootLoader中选择一个加载运行的过程中,具体用于搜索互为备份的所有BootLoader的版本头;读取各BootLoader的版本头中,所携带的BootLoader的生成时间;根据各BootLoader的生成时间选择最新的BootLoader加载运行。
还包括判断模块,所述判断模块用于判断互为备份的所有BootLoader中,各BootLoader的当前启用次数是否超过预设的阈值;所述BootROM程序在引导过程中具体用于在未超过阈值的BootLoader中,根据BootLoader的生成时间选择最新的BootLoader加载运行。
所述BootROM程序还用于在对待启用的BootLoader加载运行之前,从待启用的BootLoader的版本头中,读取所述硬件初始化所需的参数信息,并根据所述参数信息对相应硬件进行初始化。
在需要对所述参数信息进行重新设定或更换硬件时,所述BootROM程序还用于根据更新后的参数信息对更换后的硬件进行初始化。
所述处理器在装置上电之后,执行BootROM程序的代码指令的过程中,具体用于预先将所述BootROM程序的代码指令存储在基地址为处理器的复位向量地址的程序存储器;在装置上电之后,所述处理器首先执行所述BootROM程序的代码指令。
所述BootROM程序在所启用的BootLoader出现异常时,进行切换操作,加载运行另一BootLoader的过程中,具体用于在所启用的BootLoader出现异常时,累积所述所启用的BootLoader的异常次数,若异常次数超过预设的最大值,则进行切换操作,加载运行另一BootLoader。
还包括升级模块,所述升级模块用于对处于备份状态的BootLoader进行升级。
本发明提供一种BootLoader的备份管理方法及装置,在装置上电之后,执行BootROM程序的代码指令,该BootROM程序在引导过程中从互为备份的至少两个BootLoader中选择一个加载运行,若所启用的BootLoader出现异常,该BootROM程序进行切换操作,加载运行另一BootLoader。本发明仅对BootLoader进行备份,不需要对BootROM程序进行备份,同时通过BootROM程序对互为备份的BootLoader进行切换,不需要借助额外的逻辑电路,提高嵌入式通信设备的可靠性的同时,降低了硬件设计的复杂度及成本。
附图说明
图1为本发明实施例一种BootLoader的备份管理方法的流程图;
图2为本发明另一实施例一种BootLoader的备份管理方法的流程图;
图3为本发明实施例一种BootLoader的备份管理方法中升级BootLoader的流程图;
图4为本发明实施例一种BootLoader的备份管理方法中程序存储器的布局示意图;
图5为本发明实施例一种BootLoader的备份管理方法中将BootROM程序和BootLoader拷贝到内存模组的示意图;
图6为本发明实施例一种BootLoader的备份管理装置的示意图。
具体实施方式
图1为本发明实施例一种BootLoader的备份管理方法的流程图,请参考图1:
S11、在装置上电之后,执行BootROM程序的代码指令;
S12、该BootROM程序在引导过程中从互为备份的至少两个BootLoader中选择一个加载运行;
S13、若所启用的BootLoader出现异常,该BootROM程序进行切换操作,加载运行另一BootLoader。
下面通过具体实施方式结合附图对本发明作进一步详细说明。
图2为本发明另一实施例一种BootLoader的备份管理方法的流程图,请参考图2:
S201、装置上电。
S202、处理器首先从复位向量地址的起始位置领取第一条指令执行,通常在复位向量地址处存储的是一条跳转指令,而且对于不同架构的处理器而言其复位向量地址是不相同的,例如,MIPS架构的处理器的复位向量地址通常为物理地址0x1FC00000,而ARM架构的处理器的复位向量地址通常为0x00000000,因此,可以预先将BootROM程序的代码指令存储在基地址为处理器的复位向量地址的程序存储器,使得在装置上电时,处理器首先执行BootROM程序的代码指令。
S203、BootROM程序执行基本硬件初始化,包括CPU芯片级的初始化,如PLL(Phase Locked Loop,锁相环)、数据Cache、指令Cache、时钟等初始化,以及***设备(如内存模组、程序存储器等)的默认初始化。
S204、BootROM程序判断该BootROM程序是否为第一次上电启动,如果是,则将用于记录BootLoader启动次数的计数值清零,然后从程序存储器的基地址开始以block块大小为步长向程序存储器的高端地址进行扫描操作,以搜索BootLoader版本头,每搜索到一个版本头,都将BootLoader个数的变量iFinded加1,变量iFinded存储在内存中,并且将各版本头的数据内容读入到内存模组中;如果iFinded>0,则继续步骤S205,否则,转而执行步骤S210。
BootLoader的版本头可以包括主版本头和扩展版本头,在本实施例中,主版本头可以是一个大小为32个字节、包括多个结构体成员的数据结构MainHeader,主版本头的数据结构MainHeader示例如下:
其中,结构体成员blockId用于描述BootLoader的启动方式,启动设备可以包括但不限于NOR、NAND、SPI内存等;结构体成员ext用来描述主版本头之后是否包括扩展版本头,例如:其值为0,则表示不包括扩展版本头,其值为非零值,则表示包括扩展版本头;结构体成员hdrSize用于描述以字节为单位的BootLoader版本头的长度;结构体成员nandPageSize用于指定以字节为单位的NAND闪存的页面长度;结构体成员blockSize用于指定以字节为单位的不包括版本头的BootLoader的实际长度。另外,结构体成员SrcAddr用于指定BootLoader在程序存储器上的偏移地址值;结构体成员dstAddr用于指定BootLoader加载到内存模组的目的地址值;结构体成员execAddr用于指定BootLoader运行时的程序入口地址值;结构体成员nandBlockSize用于指定以字节为单位的NAND闪存的每个block块的大小,对于大多数NAND闪存而言其块大小通常为16KB。另外,结构体成员timestamp用于描述BootLoader的生成时间;结构体成员checkSum用于指定在checkSum等于0的情况下,数据结构体所有结构体成员按字节为单位计算而得到的校验值,即当checkSum等于0时32个字节数据的校验值。主版本头的数据结构不局限于以上一种方式,如有需要,可以对该数据结构及其结构体成员进行变化、修改或扩充。
扩展版本头的长度是可变化的,其可以包括用于描述扩展版本头的长度固定为4个字节的数据结构,以及紧跟其后的长度可变化的数据内容。在实施例中,长度固定为4个字节的数据结构extHeader示例如下:
其中,结构体成员type用于描述扩展版本头的类型,例如类型可以是值为0x1的安全秘钥数据、值为0x2的二进制私有数据或值为0x3的寄存器设定数据;结构体成员lenMsb用于指定扩展版本头中长度可变的数据长度的高8位值;结构体成员lenLsb用于指定扩展版本头中长度可变的数据长度的低16位值。
S205、将互为备份的所有BootLoader的版本头数据拷贝到内存模组中,BootROM程序根据已经读入到内存模组中的版本头的数据内容(例如,主版本头的结构体成员timestamp表示的生成时间),结合判断各BootLoader的当前启动次数是否大于预设的阈值(例如,阈值可以为3),从互为备份的所有BootLoader中选择一个待启用的BootLoader。
从互为备份的所有BootLoader中选择一个待启用的BootLoader的过程可以包括但不局限于以上方法:
方法一:搜索互为备份的所有BootLoader的版本头的数据内容;读取各BootLoader的版本头中所携带的BootLoader的生成时间;根据各BootLoader的生成时间选择最新的待启用的BootLoader。
方法二:判断互为备份的所有BootLoader中,各BootLoader的当前启用次数是否超过预设的阈值;在未超过阈值的BootLoader中,读取各BootLoader的版本头中所携带的BootLoader的生成时间;根据各BootLoader的生成时间选择最新的待启用的BootLoader。
S206、BootROM程序解析待启用的BootLoader的版本头,并且根据待启用的BootLoader的版本头中包括的硬件初始化所需的参数信息对相应硬件进行初始化,例如对程序存储器、I/O、串口、定时器等进行初始化。其后,BootROM程序将待启用的BootLoader从程序存储器上拷贝到内存模组中,其中,BootLoader的源地址和长度由srcAddr和blockSize指定,并且其目的地址由dstAddr指定,并且将待启用的BootLoader的启动次数的计数值加1,然后开始从主版本头的结构体成员execAddr指定的程序入口地址处运行。同时,启用监控模块,对所启用的BootLoader的运行状态进行监控,例如,当BootLoader跑飞,进入死循环,因为在异常期间BootLoader不能进行喂狗动作,监控模块将会超时并且输出信号复位装置进行热启动。
如扩展版本头可以是type值为0x3的包括寄存器地址和相应寄存器初始值,以提供给BootROM程序使用来对内存模组、闪存等控制器的寄存器进行初始化。按照这个方式,在更换硬件之后,,如更换替代性IC芯片,NOR/NAND/SPI闪存,当需要对硬件初始化所需的参数信息进行重新设定或更换硬件时,只需要更新该BootLoader版本头中的参数信息,或者如果版本头是与BootLoader集成在一起的,则只需要升级BootLoader,而不用升级BootROM程序,从而可避免升级BootROM程序所带来的风险,提高BootROM程序的可靠性和安全性。
S207、监控模块对所启用的BootLoader的运行状态进行监控过程中,判断运行是否异常,若是,则进入步骤S208,若否,则进入步骤S209。
S208、监控模块超时,并输出信号复位装置,在装置复位之后,BootROM程序在引导过程中进行切换操作以加载运行另一BootLoader,或者重新执行S202,重新选择另一BootLoader进行启用。
S209、通过所启用的BootLoader加载目标软件到内存模组中运行。
S210、进入到BootROM程序的命令行界面。
还可以进一步包括从版本服务器下载待升级的BootLoader,对处于备份状态的BootLoader进行升级的过程,该过程可以参考图3,图3为本发明实施例一种BootLoader的备份管理方法中升级BootLoader的流程图:
S31、将通过升级媒介从版本服务器上下载待升级的BootLoader到装置上;
S32、在升级媒介完成版本数据下载之后,将发送消息给升级管理模块通知待升级的BootLoader已经就绪;
S33、升级模块将在接收到升级媒介发送的消息之后,对已经下载的待升级BootLoader进行校验操作,如果校验通过,则进入步骤S34,如果校验不通过,则进入步骤S35;
S34、升级模块将判断软/硬版本是否匹配兼容,如果不匹配或不兼容,则进入步骤S35,如果匹配且兼容,则进入步骤S36;
S35、升级模块将升级失败的消息发送给升级媒介,流程结束。
S36、升级模块将待升级的BootLoader烧写到处于备用状态的BootLoader所在的程序存储器上,升级处于备用状态的BootLoader;
S37、升级模块根据烧写过程的结果状态,将升级成功或升级失败的消息发送给升级媒介,流程结束。
互为备份的BootLoader包括两个和两个以上;互为备份的所有BootLoader可存储在同一程序存储器,BootROM程序存储在另一程序存储器;或者互为备份的所有BootLoader和BootROM程序均存储在同一程序存储器。优选的,互为备份的所有BootLoader的寻址空间完全相同;优选的,BootROM程序的寻址空间不同于互为备份的所有BootLoader的寻址空间;优选地,BootROM程序为只读模式,互为备份的所有BootLoader为可读写模式;优选的,互为备份的所有BootLoader都包括版本头;优选的,版本头包括主版本头和扩展版本头。
互为备份的所有BootLoader和BootROM程序均存储在同一程序存储器时,优选的,程序存储器的布局如图4所示,图4为本发明实施例一种BootLoader的备份管理方法中程序存储器的布局示意图:
以互为备份的两个BootLoader为例:BootROM程序存储在基地址起始位置的大小为128KB的存储器分区中;第一BootLoader存储在从基地址开始偏移128KB,大小为384KB的存储器分区中,第二BootLoader存储在从基地址开始偏移512KB,大小为384KB的存储器分区中,还可以在偏移为896KB,大小为128KB的存储器分区中存储BootLoader的环境参数。程序存储器的布局包括但不局限于图4所示,在实际应用中,可以根据各程序的实际大小对各存储器分区的布局做出调整。优选地,BootROM程序、第一和第二BootLoader可以存储在与存储器块的起始地址边界对齐的任何存储器分区中。例如,如果程序存储器的每个块为16KB大小,则BootROM程序、第一和第二BootLoader存储在程序存储器上的偏移地址值按0x4000(即16KB)取模的计算结果等于0,例如,偏移地址可以为0x0、0x4000、0x8000、0xC000等值。若BootLoader携带版本头,在将其版本头存放在BootLoader之前,如图5所示,图5为本发明实施例一种BootLoader的备份管理方法中将BootROM程序和BootLoader拷贝到内存模组的示意图:
在装置上电阶段,BootROM程序的前半部分代码指令可以直接在支持XIP(execute In Place,芯片内执行)技术的程序存储器上执行,其在完成基本硬件初始化之后,可以将BootROM程序后半部分的代码指令拷贝到内存模组中的第一运行空间51中,进行代码重定位后运行,第一运行空间51的起始地址为PADDR_2;在上述步骤S206中,BootROM程序可以将待启用的BootLoader连同版本头一起拷贝到内存模组中,也可以仅将待启用的BootLoader从程序存储器上拷贝到内存模组中,待启用的BootLoader拷贝到内存模组中的第二运行空间52,在本实施例中,第二运行空间52的起始地址为PADDR_1,其也是BootLoader的程序入口地址,而且与BootROM程序的第一运行空间51是不相同的。
本发明还包括一种BootLoader的备份管理装置,包括处理器、BootROM程序,以及互为备份的至少两个BootLoader,其中,处理器用于在装置上电之后,执行BootROM程序的代码指令;BootROM程序用于在引导过程中从互为备份的至少两个BootLoader中选择一个加载运行;还用于在所启用的BootLoader出现异常时,进行切换操作,加载运行另一BootLoader。
图6为本发明实施例一种BootLoader的备份管理装置的示意图,请参考图6:BootLoader的备份管理装置,包括处理器61、BootROM程序62、电源模块63、监控模块64、内存模组65,以及互为备份的第一BootLoader 66和第二BootLoader 67,互为备份的第一BootLoader 66和第二BootLoader 67,以及BootROM程序62存储在同一程序存储器。如图6中所示,电源模块63可以通过例如功率轨耦合到处理器61、监控模块64、内存模组65、程序存储器,程序存储器和内存模组65可以通过诸如数据总线、控制总线、地址总线等之类的总线技术与处理器61进行互连,此外,处理器61可以通过例如双向I/0线连接到监控模块64以实现对其进行控制,其中,
处理器61可以焊接在所述装置中的PCB(Printed Circuit Board,印刷电路板)上,用于执行目标程序的代码指令,在装置上电之后,首先执行BootROM程序的代码指令;程序存储器可以焊接在所述装置中的所述PCB上,用于存储由所述处理器61可执行的目标程序;内存模组65可焊接在所述装置中的所述PCB上,用于存储由所述处理器61可执行的目标程序的运行时的代码指令和可读写的数据、堆栈等信息;监控模块64,用于在启用之后监控所述处理器61的运行,并且在监控到BootLoader运行异常的情况下输出信号复位所述装置;电源模块63,其给处理器61、程序存储器、内存模组65和监控模块64提供电力;BootROM程序62,用于在所述装置上电期间引导所述处理器并且执行硬件初始化操作,还用于在引导过程中从互为备份的至少两个BootLoader中选择一个加载运行,在所启用的BootLoader出现异常时,进行切换操作,加载运行另一BootLoader;互为备份的第一BootLoader66和第二BootLoader67用于在所述BootROM程序之后进一步引导所述处理器并且加载运行目标程序;
进一步,互为备份的第一BootLoader66和第二BootLoader67均携带版本头,所述版本头中包括相应BootLoader的生成时间、启动方式、寻址空间、程序入口地址、加载到内存模组的目的地址、硬件初始化所需的参数信息中的一种或多种。
进一步,BootROM程序62在引导过程中从互为备份的第一BootLoader66和第二BootLoader67中选择一个加载运行的过程中,具体用于搜索互为备份的第一BootLoader66和第二BootLoader67的版本头;读取版本头中所携带的BootLoader的生成时间;根据各BootLoader的生成时间选择最新的BootLoader加载运行。
进一步,还可以包括判断模块,判断模块用于判断互为备份的第一BootLoader66和第二BootLoader67中,各BootLoader的当前启用次数是否超过预设的阈值;BootROM程序62在引导过程中具体用于在未超过阈值的BootLoader中,根据BootLoader的生成时间选择最新的BootLoader加载运行。
进一步,BootROM程序62还用于在对待启用的BootLoader加载运行之前,从待启用的BootLoader的版本头中,读取所述硬件初始化所需的参数信息,并根据所述参数信息对相应硬件进行初始化。
进一步,在需要对所述参数信息进行重新设定或更换硬件时,BootROM程序62还用于根据更新后的参数信息对更换后的硬件进行初始化。
进一步,处理器61在装置上电之后,执行BootROM程序62的代码指令的过程中,具体用于预先将BootROM程序62的代码指令存储在基地址为处理器61的复位向量地址的程序存储器;在装置上电之后,处理器61首先执行该复位向量地址的起始位置所存储的代码指令。
进一步,BootROM程序62在所启用的BootLoader出现异常时,进行切换操作,加载运行另一BootLoader的过程中,具体用于在所启用的BootLoader出现异常时,累积该所启用的BootLoader的异常次数,若异常次数超过预设的最大值,则进行切换操作,加载运行另一BootLoader。
进一步,还包括升级模块,升级模块用于对处于备份状态的BootLoader进行升级。
进一步,还可以包括升级模块,用于对处于备份状态的BootLoader进行升级。
此外,将可以将BootROM程序62存储在另一程序存储器,即与第一BootLoader66和第二BootLoader67存储在不同的程序存储器,还或者可以将BootROM程序存储在CPU芯片内部的程序存储器上。
本发明的处理器61可以是但不限于通用处理器、SoC(System on Chip,片上***)、Microprocessor(微处理器)、或DSP(Digital Signal Processor,数字信号处理器)等;监控模块64可以是由IC芯片例如看门狗、CPLD、FPGA、定时器或它们的组合而实现的逻辑电路,或者是用程序代码编制的等效功能的软件逻辑块,而且在监控模块64为逻辑电路的情况下,监控模块64可以是与处理器61分开或隔开的独立的逻辑电路,也可以作为处理器61或其它I C芯片的一部分与它们集成在一起;程序存储器可以包括但不限于NOR闪存、NAND闪存、SPI(Serial Peripheral Interface,串行***接口)闪存、EEPROM(Electrically Erasable Programmable ROM,电可擦可编程只读存储器)、PROM(Programmable ROM,可编程只读存储器)、HD(Hard Disk,硬盘)等等,优选地,在嵌入式通信设备中程序存储器通常采用电可擦可编程的NOR、NAND、SPI闪存,程序存储器可以采用位宽为8或16位的各种容量的(例如,16MB、32MB、64MB等)NAND闪存,同时程序存储器还可以作为存储其它程序的程序存储器;内存模组65可以包括但不限于SRAM(Static RAM,静态随机访问存储器)、DDR(Double Data Rate,双数据率)SDRAM(Synchronous Dynamic Random AccessMemory,同步动态随机存储器)、DDR2SDRAM、DDR3SDRAM、NVRAM(Non-VolatileRandom Access Memory,非易失性随机访问存储器)等,内存模组65并不局限制于焊接在PCB上,其还可以通过诸如SIMM(Single Inline Memory Module,单内联内存模块)、DIMM(Dual-Inline-Memory-Modules,双列直插式存储模块)等形式的内存插槽耦合到PCB上。
以上内容是结合具体的实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (20)
1.一种BootLoader的备份管理方法,其特征在于,包括:
在装置上电之后,执行BootROM程序的代码指令;
所述BootROM程序在引导过程中从互为备份的至少两个BootLoader中选择一个加载运行;
若所启用的BootLoader出现异常,所述BootROM程序进行切换操作,加载运行另一BootLoader。
2.如权利要求1所述的方法,其特征在于,所述互为备份的所有BootLoader存储在同一程序存储器,所述BootROM程序存储在另一程序存储器;或者所述互为备份的所有BootLoader和所述BootROM程序均存储在同一程序存储器。
3.如权利要求1所述的方法,其特征在于,互为备份的所有BootLoader均携带版本头,所述版本头中包括相应BootLoader的生成时间、启动方式、寻址空间、程序入口地址、加载到内存模组的目的地址、硬件初始化所需的参数信息中的一种或多种。
4.如权利要求3所述的方法,其特征在于,所述BootROM程序在引导过程中从互为备份的至少两个BootLoader中选择一个加载运行的方法具体为:
搜索互为备份的所有BootLoader的版本头;
读取各BootLoader的版本头中所携带的BootLoader的生成时间;
根据各BootLoader的生成时间选择最新的BootLoader加载运行。
5.如权利要求4所述的方法,其特征在于,还包括判断互为备份的所有BootLoader中,各BootLoader的当前启用次数是否超过预设的阈值;在未超过阈值的BootLoader中,根据BootLoader的生成时间选择最新的BootLoader加载运行。
6.如权利要求3所述的方法,其特征在于,在对待启用的BootLoader加载运行之前,还包括:所述BootROM程序从待启用的BootLoader的版本头中,读取硬件初始化所需的参数信息,并根据所述参数信息对相应硬件进行初始化。
7.如权利要求6所述的方法,其特征在于,在需要对所述参数信息进行重新设定或更换硬件时,根据更换后的硬件更新所述参数信息,所述BootROM程序根据更新后的参数信息对更换后的硬件进行初始化。
8.如权利要求1至7任一项所述的方法,其特征在于,在装置上电之后,执行BootROM程序的代码指令的过程包括:
预先将所述BootROM程序的代码指令存储在基地址为处理器复位向量地址的程序存储器;
在装置上电之后,所述处理器首先执行所述BootROM程序的代码指令。
9.如权利要求1至7任一项所述的方法,其特征在于,若所启用的BootLoader出现异常,所述BootROM程序进行切换操作,加载运行另一BootLoader的过程包括:若所启用的BootLoader出现异常,累积所述所启用的BootLoader的异常次数,若异常次数超过预设的最大值,则所述BootROM程序进行切换操作,加载运行另一BootLoader。
10.如权利要求1至7任一项所述的方法,其特征在于,还包括从版本服务器下载待升级的BootLoader,对处于备份状态的BootLoader进行升级。
11.一种BootLoader的备份管理装置,其特征在于,包括处理器、BootROM程序,以及互为备份的至少两个BootLoader,其中,
所述处理器用于在装置上电之后,执行BootROM程序的代码指令;
所述BootROM程序用于在引导过程中从互为备份的至少两个BootLoader中选择一个加载运行;还用于在所启用的BootLoader出现异常时,进行切换操作,加载运行另一BootLoader。
12.如权利要求11所述的装置,其特征在于,所述互为备份的所有BootLoader存储在同一程序存储器,所述BootROM程序存储在另一程序存储器;或者所述互为备份的所有BootLoader和所述BootROM程序均存储在同一程序存储器。
13.如权利要求11所述的装置,其特征在于,互为备份的所有BootLoader均携带版本头,所述版本头中包括相应BootLoader的生成时间、启动方式、寻址空间、程序入口地址、加载到内存模组的目的地址、硬件初始化所需的参数信息中的一种或多种。
14.如权利要求13所述的装置,其特征在于,所述BootROM程序在引导过程中从互为备份的至少两个BootLoader中选择一个加载运行的方法中,具体用于搜索互为备份的所有BootLoader的版本头;读取各BootLoader的版本头中,所携带的BootLoader的生成时间;根据各BootLoader的生成时间选择最新的BootLoader加载运行。
15.如权利要求14所述的装置,其特征在于,还包括判断模块,所述判断模块用于判断互为备份的所有BootLoader中,各BootLoader的当前启用次数是否超过预设的阈值;所述BootROM程序在引导过程中具体用于在未超过阈值的BootLoader中,根据BootLoader的生成时间选择最新的BootLoader加载运行。
16.如权利要求13所述的装置,其特征在于,所述BootROM程序还用于在对待启用的BootLoader加载运行之前,从待启用的BootLoader的版本头中,读取所述硬件初始化所需的参数信息,并根据所述参数信息对相应硬件进行初始化。
17.如权利要求16所述的装置,其特征在于,在需要对所述参数信息进行重新设定或更换硬件时,所述BootROM程序还用于根据更新后的参数信息对更换后的硬件进行初始化。
18.如权利要求11至17任一项所述的装置,其特征在于,所述处理器在装置上电之后,执行BootROM程序的代码指令的过程中,具体用于预先将所述BootROM程序的代码指令存储在基地址为处理器的复位向量地址的程序存储器;在装置上电之后,所述处理器首先执行所述BootROM程序的代码指令。
19.如权利要求11至17任一项所述的装置,其特征在于,所述BootROM程序在所启用的BootLoader出现异常时,进行切换操作,加载运行另一BootLoader的过程中,具体用于在所启用的BootLoader出现异常时,累积所述所启用的BootLoader的异常次数,若异常次数超过预设的最大值,则进行切换操作,加载运行另一BootLoader。
20.如权利要求11至17任一项所述的装置,其特征在于,还包括升级模块,所述升级模块用于对处于备份状态的BootLoader进行升级。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011103732188A CN103135995A (zh) | 2011-11-22 | 2011-11-22 | 一种BootLoader的备份管理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011103732188A CN103135995A (zh) | 2011-11-22 | 2011-11-22 | 一种BootLoader的备份管理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103135995A true CN103135995A (zh) | 2013-06-05 |
Family
ID=48495867
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011103732188A Pending CN103135995A (zh) | 2011-11-22 | 2011-11-22 | 一种BootLoader的备份管理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103135995A (zh) |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103677923A (zh) * | 2013-12-13 | 2014-03-26 | 中国航空工业集团公司第六三一研究所 | 一种boot引导程序运行保护方法 |
CN104035784A (zh) * | 2014-06-30 | 2014-09-10 | 普联技术有限公司 | 一种设备启动***及方法 |
CN104077167A (zh) * | 2014-07-11 | 2014-10-01 | 杭州华三通信技术有限公司 | 基于nand flash的启动加载方法和装置 |
CN104111851A (zh) * | 2014-07-18 | 2014-10-22 | 广州市中海达测绘仪器有限公司 | 嵌入式***切换启动装置 |
CN105677416A (zh) * | 2016-01-07 | 2016-06-15 | 上海斐讯数据通信技术有限公司 | 一种Uboot的升级控制***及方法 |
CN105700901A (zh) * | 2014-11-28 | 2016-06-22 | 华为技术有限公司 | 一种启动方法、装置和计算机*** |
CN106155752A (zh) * | 2016-08-03 | 2016-11-23 | 北京蛙视通信技术股份有限公司 | 一种嵌入式操作***启动的方法及装置 |
CN106406954A (zh) * | 2016-09-22 | 2017-02-15 | 杭州迪普科技有限公司 | 一种升级BootLoader程序的方法及装置 |
WO2017121077A1 (zh) * | 2016-01-15 | 2017-07-20 | 中兴通讯股份有限公司 | 一种双引导文件的切换方法及装置 |
CN107967222A (zh) * | 2017-12-20 | 2018-04-27 | 北京兆易创新科技股份有限公司 | 一种SPI-Nand查找数据页的方法及装置 |
CN108446189A (zh) * | 2018-06-12 | 2018-08-24 | 中国科学院上海技术物理研究所 | 一种星载嵌入式软件容错启动***及方法 |
CN108632024A (zh) * | 2017-03-21 | 2018-10-09 | 中兴通讯股份有限公司 | 一种运行引导程序的方法及装置 |
CN108804221A (zh) * | 2018-04-11 | 2018-11-13 | 百富计算机技术(深圳)有限公司 | 基于xip方式的嵌入式***及其资源优化方法 |
CN109739565A (zh) * | 2019-01-07 | 2019-05-10 | 深圳忆联信息***有限公司 | 一种保证Bootrom正常运行的方法、装置、计算机设备及存储介质 |
CN109992312A (zh) * | 2019-03-26 | 2019-07-09 | 联想(北京)有限公司 | 电子设备的启动方法、装置以及*** |
CN110007971A (zh) * | 2019-03-25 | 2019-07-12 | 联想(北京)有限公司 | 一种信息处理方法及装置、设备、存储介质 |
CN110737480A (zh) * | 2019-09-18 | 2020-01-31 | 福州瑞芯微电子股份有限公司 | 一种串口驱动程序复用方法和装置 |
CN111338702A (zh) * | 2020-02-27 | 2020-06-26 | 珠海亿智电子科技有限公司 | 一种基于片外nor-flash的SOC***引导方法 |
CN112882757A (zh) * | 2021-01-26 | 2021-06-01 | 东莞市峰谷科技有限公司 | 一种嵌入式***双分区安全启动方法 |
CN113377565A (zh) * | 2021-06-10 | 2021-09-10 | 博流智能科技(南京)有限公司 | Bootrom修正***及方法以及芯片 |
CN114911648A (zh) * | 2022-07-14 | 2022-08-16 | 北京智芯微电子科技有限公司 | Xip flash程序驱动方法及*** |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1598773A (zh) * | 2003-09-17 | 2005-03-23 | 三星电子株式会社 | 启动和启动代码更新方法以及其*** |
US20070073978A1 (en) * | 2005-09-27 | 2007-03-29 | Samsung Electronics Co., Ltd. | Method and system for booting and automatically updating software, and recovering from update error, and computer readable recording medium storing method |
CN101287187A (zh) * | 2007-04-12 | 2008-10-15 | 奥科无线通信技术(深圳)有限公司 | 智能手机及其操作***运行方法 |
CN101763279A (zh) * | 2010-01-15 | 2010-06-30 | 上海维宏电子科技有限公司 | 一种BootLoader架构设计方法 |
CN102135891A (zh) * | 2010-01-21 | 2011-07-27 | 杭州华三通信技术有限公司 | 可实现引导启动的***及引导启动控制装置和方法 |
CN102508676A (zh) * | 2011-09-28 | 2012-06-20 | 中兴通讯股份有限公司 | 嵌入式***启动方法及装置 |
-
2011
- 2011-11-22 CN CN2011103732188A patent/CN103135995A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1598773A (zh) * | 2003-09-17 | 2005-03-23 | 三星电子株式会社 | 启动和启动代码更新方法以及其*** |
US20070073978A1 (en) * | 2005-09-27 | 2007-03-29 | Samsung Electronics Co., Ltd. | Method and system for booting and automatically updating software, and recovering from update error, and computer readable recording medium storing method |
CN101287187A (zh) * | 2007-04-12 | 2008-10-15 | 奥科无线通信技术(深圳)有限公司 | 智能手机及其操作***运行方法 |
CN101763279A (zh) * | 2010-01-15 | 2010-06-30 | 上海维宏电子科技有限公司 | 一种BootLoader架构设计方法 |
CN102135891A (zh) * | 2010-01-21 | 2011-07-27 | 杭州华三通信技术有限公司 | 可实现引导启动的***及引导启动控制装置和方法 |
CN102508676A (zh) * | 2011-09-28 | 2012-06-20 | 中兴通讯股份有限公司 | 嵌入式***启动方法及装置 |
Cited By (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103677923A (zh) * | 2013-12-13 | 2014-03-26 | 中国航空工业集团公司第六三一研究所 | 一种boot引导程序运行保护方法 |
CN104035784A (zh) * | 2014-06-30 | 2014-09-10 | 普联技术有限公司 | 一种设备启动***及方法 |
CN104035784B (zh) * | 2014-06-30 | 2018-09-25 | 普联技术有限公司 | 一种设备启动***及方法 |
CN104077167A (zh) * | 2014-07-11 | 2014-10-01 | 杭州华三通信技术有限公司 | 基于nand flash的启动加载方法和装置 |
CN104111851B (zh) * | 2014-07-18 | 2017-09-22 | 广州市中海达测绘仪器有限公司 | 嵌入式***切换启动装置 |
CN104111851A (zh) * | 2014-07-18 | 2014-10-22 | 广州市中海达测绘仪器有限公司 | 嵌入式***切换启动装置 |
CN105700901A (zh) * | 2014-11-28 | 2016-06-22 | 华为技术有限公司 | 一种启动方法、装置和计算机*** |
CN105700901B (zh) * | 2014-11-28 | 2020-05-08 | 华为技术有限公司 | 一种启动方法、装置和计算机*** |
CN105677416A (zh) * | 2016-01-07 | 2016-06-15 | 上海斐讯数据通信技术有限公司 | 一种Uboot的升级控制***及方法 |
WO2017121077A1 (zh) * | 2016-01-15 | 2017-07-20 | 中兴通讯股份有限公司 | 一种双引导文件的切换方法及装置 |
CN106155752A (zh) * | 2016-08-03 | 2016-11-23 | 北京蛙视通信技术股份有限公司 | 一种嵌入式操作***启动的方法及装置 |
CN106406954A (zh) * | 2016-09-22 | 2017-02-15 | 杭州迪普科技有限公司 | 一种升级BootLoader程序的方法及装置 |
CN108632024A (zh) * | 2017-03-21 | 2018-10-09 | 中兴通讯股份有限公司 | 一种运行引导程序的方法及装置 |
CN107967222A (zh) * | 2017-12-20 | 2018-04-27 | 北京兆易创新科技股份有限公司 | 一种SPI-Nand查找数据页的方法及装置 |
CN108804221A (zh) * | 2018-04-11 | 2018-11-13 | 百富计算机技术(深圳)有限公司 | 基于xip方式的嵌入式***及其资源优化方法 |
CN108804221B (zh) * | 2018-04-11 | 2020-09-11 | 百富计算机技术(深圳)有限公司 | 基于xip方式的嵌入式***及其资源优化方法 |
CN108446189B (zh) * | 2018-06-12 | 2023-09-12 | 中国科学院上海技术物理研究所 | 一种星载嵌入式软件容错启动***及方法 |
CN108446189A (zh) * | 2018-06-12 | 2018-08-24 | 中国科学院上海技术物理研究所 | 一种星载嵌入式软件容错启动***及方法 |
CN109739565A (zh) * | 2019-01-07 | 2019-05-10 | 深圳忆联信息***有限公司 | 一种保证Bootrom正常运行的方法、装置、计算机设备及存储介质 |
CN109739565B (zh) * | 2019-01-07 | 2022-03-29 | 深圳忆联信息***有限公司 | 一种保证Bootrom正常运行的方法、装置、计算机设备及存储介质 |
CN110007971A (zh) * | 2019-03-25 | 2019-07-12 | 联想(北京)有限公司 | 一种信息处理方法及装置、设备、存储介质 |
CN109992312A (zh) * | 2019-03-26 | 2019-07-09 | 联想(北京)有限公司 | 电子设备的启动方法、装置以及*** |
CN110737480A (zh) * | 2019-09-18 | 2020-01-31 | 福州瑞芯微电子股份有限公司 | 一种串口驱动程序复用方法和装置 |
CN110737480B (zh) * | 2019-09-18 | 2022-05-13 | 瑞芯微电子股份有限公司 | 一种串口驱动程序复用方法和装置 |
CN111338702A (zh) * | 2020-02-27 | 2020-06-26 | 珠海亿智电子科技有限公司 | 一种基于片外nor-flash的SOC***引导方法 |
CN111338702B (zh) * | 2020-02-27 | 2022-04-26 | 珠海亿智电子科技有限公司 | 一种基于片外nor-flash的SOC***引导方法 |
CN112882757A (zh) * | 2021-01-26 | 2021-06-01 | 东莞市峰谷科技有限公司 | 一种嵌入式***双分区安全启动方法 |
CN113377565A (zh) * | 2021-06-10 | 2021-09-10 | 博流智能科技(南京)有限公司 | Bootrom修正***及方法以及芯片 |
CN113377565B (zh) * | 2021-06-10 | 2024-05-28 | 博流智能科技(南京)有限公司 | Bootrom修正***及方法以及芯片 |
CN114911648B (zh) * | 2022-07-14 | 2022-10-04 | 北京智芯微电子科技有限公司 | Xip flash程序驱动方法及*** |
CN114911648A (zh) * | 2022-07-14 | 2022-08-16 | 北京智芯微电子科技有限公司 | Xip flash程序驱动方法及*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103135995A (zh) | 一种BootLoader的备份管理方法及装置 | |
EP2638466B1 (en) | Software updating process for an embedded device | |
US7313682B2 (en) | Method and system for updating boot memory that stores a fail-safe reset code and is configured to store boot code and boot updater code | |
US7908466B2 (en) | Method and apparatus for booting a microprocessor system using boot code stored on a serial flash memory array having a random-access interface | |
US8286156B2 (en) | Methods and apparatus for performing resilient firmware upgrades to a functioning memory | |
TWI515660B (zh) | 韌體變量更新方法 | |
TWI514408B (zh) | 於裝置開機期間處置來自非揮發性記憶體之錯誤 | |
US8601255B2 (en) | Approaches for updating bios | |
CN100504782C (zh) | 避免基本输出入***程序更新失败的计算机*** | |
US20080109647A1 (en) | Memory controllers for performing resilient firmware upgrades to a functioning memory | |
EP3080693B1 (en) | Devices, updaters, methods for controlling a device, and methods for controlling an updater | |
JP2015008005A (ja) | セキュア・リカバリ装置及び方法 | |
US20020129195A1 (en) | Microcomputer with built-in programmable nonvolatile memory | |
CN102023908A (zh) | 一种引导程序备份方法及装置 | |
CN101308470A (zh) | 主动恢复、备份及更新bios的电脑*** | |
CN110321170B (zh) | 开机方法 | |
WO2008058101A2 (en) | Memory controllers for performing resilient firmware upgrades to a functioning memory | |
WO2012071852A1 (zh) | 引导程序的升级方法和装置 | |
WO2022105595A1 (zh) | 嵌入式设备的***升级方法、装置及嵌入式设备 | |
JP2000293367A (ja) | 不揮発性メモリ内蔵マイクロコンピュータ | |
CN104035757A (zh) | 基于MIPS处理器的u-boot移植的实现方法 | |
TWI743480B (zh) | 電腦系統與其開機方法 | |
CN105204896A (zh) | 一种数字存储示波器的BootLoader设计方法 | |
CN115129345A (zh) | 一种固件升级方法、装置、设备及存储介质 | |
KR20220076316A (ko) | 부트 로더 펌웨어의 페일세이프 업데이트 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20130605 |