著录项信息
专利名称 | 一种BIOS在线升级装置及方法 |
申请号 | CN200410096881.8 | 申请日期 | 2004-12-09 |
法律状态 | 权利终止 | 申报国家 | 中国 |
公开/公告日 | 2006-06-14 | 公开/公告号 | CN1786910 |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F9/445 | IPC分类号 | G;0;6;F;9;/;4;4;5查看分类表>
|
申请人 | 华为技术有限公司 | 申请人地址 | 广东省深圳市龙岗区坂田华为总部办公楼
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 华为技术有限公司 | 当前权利人 | 华为技术有限公司 |
发明人 | 夏军 |
代理机构 | 北京凯特来知识产权代理有限公司 | 代理人 | 郑立明 |
摘要
本发明公开了一种BIOS在线升级装置,包括:单板,所述单板包括存储基本BIOS程序的只读存储器ROM和存储至少两份扩展BIOS程序的flash;存有升级版本BIOS程序的设备,其与单板相连,用于通过网口串口等通道对单板上flash中较旧版本的BIOS程序进行升级。本发明还公开了一种BIOS在线升级方法,包括:在Flash的存储区域内,分别存储不同版本的多个BIOS升级程序;在准备进行BIOS升级时,判断存储区域内的最新版本的BIOS升级程序是否有效,在所述最新版本的BIOS升级程序有效时,运行所述最新版本的BIOS升级程序进行升级。
1.一种基本输入输出系统BIOS在线升级装置,其特征在于,所述升级装 置包括:单板,所述单板包括:只读存储器ROM,用于存储基本BIOS程序;以 及非易失性存储介质flash,其被划分为至少两个存储区,每一存储区用于存 储最近升级的扩展BIOS程序;存有升级版本BIOS程序的设备,其与单板相连, 用于通过网口串口对单板上flash中存储的两份扩展BIOS程序中的较低版本的 BIOS程序进行升级。
2.一种基本输入输出系统BIOS在线升级方法,其特征在于,包括:
在Flash的存储区域内,分别存储不同版本的多个BIOS升级程序;在准备 进行BIOS升级时,判断存储区域内的最新版本的BIOS升级程序是否有效,当 所述最新版本的BIOS升级程序有效时,运行所述最新版本的BIOS升级程序进 行升级;当所述最新版本的BIOS升级程序无效时,运行存储区域内的较旧版本 的BIOS升级程序进行升级。
3.根据权利要求2所述的BIOS在线升级方法,其特征在于,所述每份扩展 BIOS程序还设置有有效标志、稳定运行标志和版本标志。
4.根据权利要求3所述的BIOS在线升级方法,其特征在于,所述存储不同 版本的多个BIOS升级程序的步骤包括:
判断flash中存储的扩展BIOS程序是否均有效,若均有效,
则将升级的BIOS程序存储到版本较低的扩展BIOS程序的存储区,
否则,将升级的BIOS程序存储到任意的扩展BIOS程序的存储区中。
5.根据权利要求4所述的BIOS在线升级方法,其特征在于,还包括:在将 升级的BIOS程序存储到存储区后,将存储的BIOS程序的有效标志设置为有效状 态,稳定运行标志设置为新升级状态,版本标志设置为较原来所有扩展BIOS程 序的版本更高的版本。
6.根据权利要求2所述的BIOS在线升级方法,其特征在于,在升级前还包 括,将有效标志设置为无效状态。
7.根据权利要求6所述的BIOS在线升级方法,其特征在于,在将升级的BIOS 程序存储到存储区后还包括运行升级的BIOS程序。
8.根据权利要求7所述的BIOS在线升级方法,其特征在于,所述运行BIOS 程序包括:
选择有效标志为有效状态且稳定运行标志位为新升级状态的BIOS程序运 行,当运行到预定阶段后,将该BIOS程序的稳定运行标志位设置为稳定运行状 态。
9.根据权利要求8所述的BIOS在线升级方法,其特征在于,还包括:在开 始运行BIOS程序以前,选择到新升级状态的BIOS程序后,将稳定运行标志设置 为待运行状态。
10.根据权利要求8所述的BIOS在线升级方法,其特征在于,所述运行BIOS 程序是将其搬移到随机存储器RAM中运行。
11.根据权利要求7所述的BIOS在线升级方法,其特征在于,还包括:选 择扩展BIOS版本时,若稳定标志位为待运行状态,则将有效标志设置为无效状 态。
12.根据权利要求2所述的BIOS在线升级方法,其特征在于,所述升级是 通过网口或串口将新版本BIOS程序拷贝到Flash中的一个存储区中。
技术领域\n本发明涉及一种软件升级方法,尤其涉及一种BIOS在线升级装置及方 法。\n背景技术\n在通信设备中,所使用的系统通常都是嵌入式系统,在嵌入式系统 中,各系统或模块分工完成一个通信设备的功能。在较复杂的嵌入式系统 中都存在BIOS程序及主机业务程序,BIOS程序用于系统的启动引导,主机 业务程序完成特定的业务功能。\nBIOS程序是CPU上电启动的第一段程序,一般采用烧片器将BIOS程序烧 写到ROM芯片中,然后将ROM芯片贴在单板上,因此,由于BIOS程序被烧写 到ROM芯片中,所以BIOS程序具有硬件特性,不便于升级。\n然而,在较复杂的嵌入式系统中,BIOS程序将要完成较多的功能,一 般通信设备中的BIOS程序要完成CPU小系统的初始化和驱动、嵌入式操作系 统的启动、单板串口网口的驱动等工作,大部分的BIOS程序还要实现业务 软件的加载通道、及加载业务软件等工作,因此,这些功能所对应的BIOS 程序的规模也是较大的,而且,BIOS程序也有可能存在不完善等问题,这 时,当带有上述BIOS程序的设备已经在市场上应用时,如何解决BIOS程序 中存在的问题,就变成了一个急待解决的问题。在不能进行BIOS在线升级 时要修正BIOS程序中的问题,要么将设备或单板退回制造商,制造商重新 烧写BIOS程序并发货,要么在现场更换带有BIOS程序的芯片,因此,不仅 耗费人力、物力,且不方便。\n为了实现BIOS在线升级,如图1所示,现有的一种BIOS在线升级的方法 是在烧片的ROM芯片中保留一份通过烧写完成的BIOS程序,另外,在单板上 的Flash(一种非易失性的存储介质)中也保存一份BIOS程序,该份BIOS程 序可通过在线升级时写入。两份BIOS程序基本一致,但略有差异,在步骤 11中,ROM中的BIOS程序总是上电一开始运行的程序,程序在初始化完CPU 后,在步骤12中,马上去判断Flash中的BIOS是否有效,若有效,在步骤13 中,则将程序指针跳转到Flash中,在Flash中取BIOS程序的指令运行,若 程序无效,在步骤14中,则继续在ROM中取指令运行,无论在取Flash中的 指令运行还是取ROM中的指令运行,后续的程序运行过程是一致的,不再详 述。\n单板生产加工时Flash中总是空的,其中没有有效的BIOS程序,因此, 此时总是运行ROM中的BIOS程序。当发现BIOS程序有问题时,可通过修改代 码并生成一个新的BIOS程序,然后,通过串口网口等通道加载到单板上, 并保存在Flash中。以后单板复位或重新启动时,若Flash中有有效的BIOS 程序,就会在Flash中取指令运行。如果一段时间后,发现Flash中的BIOS 程序也有问题,可以再次更新Flash中的BIOS程序,这样就可以在不变动硬 件的情况下,完成BIOS程序的修正,从而达到了BIOS在线升级的目的。\n上述方案虽然能实现BIOS在线升级,但有如下缺点:\n1、依赖于硬件的具体实现,由于CPU需要在Flash中取BIOS程序的指令 运行,需要Flash的地址空间是连续的,而实际上很多嵌入式系统由于接口 位宽的限制,不能保证Flash的地址空间连续,往往是只占用64bit数据线 的16bit或者32bit等数据线,不能保证地址空间是连续的,所以这种方案 的应用范围较有限。\n2、升级功能不安全,若升级的BIOS程序是正常的,则在线升级功能正 常,一旦升级的BIOS程序本身是错误的,将导致升级失败,并且Flash中 BIOS程序标志有效,但是程序本身是错误的,将导致系统无法自动恢复, 升级失败将导致更严重的后果。\n3、升级功能实用性差,假如BIOS程序在经历了较长的一段时间后,发 生过5、6次的升级,BIOS程序版本和生产时烧写在ROM中的版本已有较大差 别时,若某次升级失败,则系统只能回退到生产时ROM中的BIOS版本,意义 不大。\n在现有技术中,另一种BIOS在线升级方案的总体思路是将BIOS程序划 分为两部分,一部分为不可升级的部分,一部分为需要升级的部分,并分 别生成目标文件,并称之为小BIOS和主BIOS。其中小BIOS包含CPU小系统最 基本的驱动,如CPU初始化、RAM控制器初始化、嵌入式操作系统启动、串 口驱动等,这部分功能相对简单和稳定,默认不会存在问题,认为不需要 升级,将这部分程序通过烧片器烧写到ROM芯片中,是单板上电运行的第一 段程序。主BIOS程序包含BIOS程序的全部内容,在小BIOS启动后,通过串 口将主BIOS下载到单板上,并保存在Flash中。\n如图2所示,在步骤21中,单板上电运行时,先运行ROM中的小BIOS程 序,初始化完CPU、RAM控制器、操作系统、串口等内容后,在步骤22中,判 断Flash中是否有有效的主BIOS程序,若有效,在步骤23中,则将主BIOS程 序搬移到RAM中,并跳转到RAM中的主BIOS运行,否则,在步骤24中,则要 求通过串口加载主BIOS程序。\n生产时,由于Flash中没有内容,所以小BIOS启动后必须先加载一次主 BIOS程序,然后每次启动都先启动小BIOS,然后运行主BIOS,当发现主 BIOS程序中存在问题时,修改代码重新生成主BIOS程序,在启动小BIOS程 序时通过网口或串口下载到单板上,并更新Flash中的主BIOS程序,从而达 到了BIOS在线升级的目的。若运行一段时间后,又发现主BIOS有问题,则 再次在小BIOS启动时更新主BIOS。实现了在不变动硬件的前提下,BIOS程 序问题的修正。\n此方案也有较明显局限和缺点:\n1、只能实现一定范围的在线升级,尽管小BIOS功能简单,但也涉及较 多代码,如果小BIOS也存在问题,该方案是无法解决的。\n2、单板启动时间长,单板启动时间几乎是普通BIOS的两倍,因为要先 运行一遍小BIOS程序,再运行一遍主BIOS程序。\n3、不能兼容原来的生产制造方式,需要在生产环节加载一次主BIOS程 序,相对原来的烧片安装的过程多了一个环节。\n4、升级功能不安全,若升级的BIOS程序是正常的,则在线升级功能正 常,一旦升级的BIOS程序本身是错误的,将导致升级失败,并且Flash中 BIOS程序标志有效,但是程序本身是错误的,将导致系统无法自动恢复。\n5、升级功能实用性差,假如某次BIOS程序升级失败,系统将不能在原 有的旧版本上运行,将导致业务中断。\n发明内容\n针对现有技术的上述缺陷,本发明的目的是提供一种BIOS在线升级的 装置和方法,解决了依赖具体硬件才能实现升级的问题,从而提高了BIOS 在线升级的通用性,并解决了升级失败而导致业务中断的问题,从而提高 了BIOS在线升级的稳定性。\n本发明提供了一种基本输入输出系统BIOS在线升级装置,所述升级装 置包括:单板,所述单板包括:只读存储器ROM,用于存储基本BIOS程序; 以及非易失性存储介质flash,其被划分为至少两个存储区,每一存储区用 于存储最近升级的扩展BIOS程序;存有升级版本BIOS程序的设备,其与单 板相连,用于通过网口串口对单板上flash中存储的两份扩展BIOS程序中的 较低版本的BIOS程序进行升级。\n本发明还提供了一种基本输入输出系统BIOS在线升级方法,包括:\n在Flash的存储区域内,分别存储不同版本的多个BIOS升级程序;在准 备进行BIOS升级时,判断存储区域内的最新版本的BIOS升级程序是否有 效,当所述最新版本的BIOS升级程序有效时,运行所述最新版本的BIOS升 级程序进行升级;当所述最新版本的BIOS升级程序无效时,运行存储区域 内的较旧版本的BIOS升级程序进行升级。\n所述每份扩展BIOS程序还设置有有效标志、稳定运行标志和版本标 志。\n所述存储不同版本的多个BIOS升级程序的步骤包括:\n判断flash中存储的扩展BIOS程序是否均有效,若均有效,\n则将升级的BIOS程序存储到版本较低的扩展BIOS程序的存储区,\n否则,将升级的BIOS程序存储到任意的扩展BIOS程序的存储区 中。\n在将升级的BIOS程序存储到存储区后,将存储的BIOS程序的有效标志 设置为有效状态,稳定运行标志设置为新升级状态,版本标志设置为较原 来所有扩展BIOS程序的版本更高的版本。\n在升级前还包括,将有效标志设置为无效状态。\n在将升级的BIOS程序存储到存储区后还包括运行升级的BIOS程序。\n所述运行BIOS程序包括:\n选择有效标志为有效状态且稳定运行标志位为新升级状态的BIOS程序 运行,当运行到预定阶段后,将该BIOS程序的稳定运行标志位设置为稳定 运行状态。\n在开始运行BIOS程序以前,选择到新升级状态的BIOS程序后,将稳定 运行标志设置为待运行状态。\n所述运行BIOS程序是将其搬移到随机存储器RAM中运行。\n当发现扩展BIOS程序的稳定标志位为待运行状态,则将其有效标志设 置为无效状态。\n所述升级是通过网口或串口将新版本BIOS程序拷贝到Flash中的一个存 储区中。\n因此,由于本发明采用将flash中的BIOS程序直接搬移到RAM中运行, 不在Flash中取指令运行,所以,本发明的方法不依赖具体硬件实现的BIOS 在线升级方法,使BIOS程序的升级变得简单有效,并可在各通信设备中共 享,从而极大的提高了通信设备的可维护性以及降低了维护成本。此外, 由于本发明采用多份BIOS程序,所述多份BIOS程序分别为最近多次更新的 BIOS程序版本。一旦BIOS程序升级失败,不仅不会导致业务中断,而且也 不会回退到生产时的版本,从而使BIOS在线升级的功能变得稳定可靠。\n附图说明\n图1示出了一种现有技术方案的BIOS程序的运行流程图;\n图2示出了另一现有技术方案的BIOS程序的运行流程图;\n图3示出了本发明的升级装置示意图;\n图4示出了本发明的实施例的BIOS程序的运行流程图。\n图5示出了本发明的实施例的升级流程图。\n具体实施方式\n为了便于本领域一般技术人员理解和实现本发明,现结合附图描绘本 发明的实施例。\n为了便于理解本发明的在线升级过程,下面简单介绍一下BIOS程序工 作的基本原理及过程。BIOS程序一般是烧写在ROM芯片中,上电第一段代码 总是在ROM中运行,进行CPU初始化,RAM控制器初始化。由于在ROM中程序 运行较慢,BIOS程序会将自身的代码搬移到RAM中,然后继续运行,进行单 板系统硬件的初始化,嵌入式操作系统的初始化,串口网口的初始化,业 务程序加载通道的驱动,最后加载业务软件并运行业务软件,最后完成 BIOS程序的运行。\n根据本发明,本发明提供了一种BIOS在线升级装置,包括:单板,所 述单板包括存储基本BIOS程序的只读存储器ROM和至少存储两份扩展BIOS程 序的flash;存有升级版本BIOS程序的设备,其与单板相连,用于通过网口 串口等通道对flash中较旧版本的BIOS程序进行升级。ROM中的基本BIOS程 序是在生产时通过烧写写入的,Flash中BIOS程序是分别通过多次在线升级 时写入的,即分别是最近多次升级时所写入的BIOS程序。\n每份扩展BIOS程序还设置有三个标志位:有效标志位、稳定运行标志 位、版本标志位。有效标志位用来表示该扩展BIOS程序是否有效,其有两 种状态:有效状态和无效状态,即,若升级顺利完成,则将其置为有效状 态,若升级时发生中断,则其为无效状态。稳定运行标志位表示该扩展 BIOS程序是否能够稳定运行,其有三种状态:新升级状态、待运行状态和 稳定运行状态,当刚升级完毕时,将稳定运行标志位置为新升级状态;当 该升级完毕的扩展BIOS程序刚开始运行时,将稳定运行标志位置为待运行 状态;当该升级完毕的扩展BIOS程序运行到某一阶段时,如运行完毕时, 将稳定运行标志位置为稳定运行状态。版本标志位表示该BIOS程序的版 本,flash中的扩展BIOS程序的版本与另一扩展BIOS程序的版本相互轮流交 替上升,在本发明中,扩展BIOS程序的版本为最近的多个版本。\n如图4所示,在步骤41中,当单板一上电时,总是开始运行基本BIOS程 序,基本BIOS程序首先初始化完CPU,RAM控制器,然后在步骤42中,根据 扩展BIOS程序有效标志位和版本标志位,判断Flash中是否存在有效的扩展 BIOS程序,若是,则在步骤43中,选择有效的最新版本的扩展BIOS程序搬 移到RAM中,并跳转到RAM中运行,否则,在步骤46中,即flash中没有有效 的扩展BIOS程序,则搬移ROM中的基本BIOS到RAM中,并跳转到RAM中运行。\n由于若Flash中存在有效的扩展BIOS程序,则将其搬移到RAM中,并跳 转到RAM中运行,不直接在Flash中取指令运行,所以本发明与Flash的硬件 结构无关。\n单板生产加工时Flash总是空的,其中没有有效的BIOS程序,此时ROM 中的基本BIOS总是因为没有有效的扩展BIOS程序而搬移基本BIOS到RAM中运 行。如图5所示,在步骤51中,当发现基本BIOS程序存在问题时,通过修改 代码并生成一个新版本的扩展BIOS程序,然后通过串口网口等通道加载到 单板上,然后在步骤52中,根据扩展BIOS程序有效标志位,判断Flash中是 否存在无效的BIOS程序,若有无效的BIOS程序,则在步骤53中,直接将新 版本的扩展BIOS保存在该存储区上,并在步骤54中,将新升级的扩展BIOS 程序的稳定状态标志位置为新升级状态,将有效状态标志位置为有效状 态;否则,即原Flash中多个扩展BIOS程序都有效,在步骤55中,则选择版 本较旧的扩展BIOS程序,将该版本的有效状态标志位置为无效状态,并且 用新版本的扩展BIOS替换该版本较旧的扩展BIOS程序,并在步骤56中,若 升级顺利完成,将新升级的扩展BIOS的稳定状态标志位置为新升级状态, 将有效状态标志位置为有效状态。\n在单板重启时,当基本BIOS发现有处于新升级状态的扩展BIOS时,则 将其搬移到RAM中运行,同时将稳定运行标志从新升级状态更改为待运行状 态,为了确认新升级的扩展BIOS程序的正确性,当扩展BIOS程序运行到某 一阶段后,将该BIOS程序的稳定标志位置为稳定运行状态。当单板再复位 或重启时,就会运行新升级的版本,至此,升级成功。\n若升级的扩展BIOS程序存在问题,则扩展BIOS程序不能够运行到特定 的阶段,因而,稳定运行标志位处于待运行状态,这时,基本BIOS在启动 时识别出稳定运行标志位为待运行状态时,清空稳定运行标志位、有效标 志位、和版本标志位。然后,将flash中相对较旧的版本搬移到RAM中运 行,若flash中没有有效的BIOS程序,则将ROM中的基本BIOS搬移到RAM中运 行,从而保证了即使升级失败,单板仍旧能正常工作,不会导致业务中 断。通过以上方法,不但实现了BIOS在线升级的功能,而且保证了升级的 可靠性和安全性。\n因此,由于本发明采用将flash中的BIOS程序直接搬移到RAM中运行, 不直接在Flash中取指令运行,所以,本发明的方法是不依赖具体硬件实现 的BIOS在线升级方法,使BIOS程序的升级变得简单有效,并可在各通信设 备中共享,从而极大的提高了通信设备的可维护性以及降低了维护成本。\n因此,由于本发明采用多份BIOS程序,所述多份BIOS程序分别为最近 多次更新的BIOS程序版本。一旦BIOS程序升级失败,不仅不会导致业务中 断,而且也不会回退到生产的原始版本,从而使BIOS在线升级的功能变得 稳定可靠。\n本发明的BIOS在线升级功能不需要额外的投入,BIOS在线升级功能对 生产环节是透明的,而且在没有升级需求时,可以和普通的BIOS一样工 作。\n虽然通过实施例描绘了本发明,但本领域普通技术人员知道,在不脱 离本发明的精神和实质的情况下,就可使本发明有许多变形和变化,本发 明的范围由所附的权利要求来限定。
法律信息
- 2015-02-04
未缴年费专利权终止
IPC(主分类): G06F 9/445
专利号: ZL 200410096881.8
申请日: 2004.12.09
授权公告日: 2008.01.16
- 2008-01-16
- 2006-08-09
- 2006-06-14
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2004-02-25
|
2002-08-23
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |