一种bios在线升级方法

文档序号:6442861阅读:190来源:国知局
专利名称:一种bios在线升级方法
技术领域
本发明涉及一种软件升级方法,尤其涉及一种BIOS在线升级方法。
背景技术
在通信设备中,所使用的系统通常都是嵌入式系统,在嵌入式系统中,各系统或模块分工完成一个通信设备的功能。在较复杂的嵌入式系统中都存在BIOS程序及主机业务程序,BIOS程序用于系统的启动引导,主机业务程序完成特定的业务功能。
BIOS程序是CPU上电启动的第一段程序,一般采用烧片器将BIOS程序烧写到ROM芯片中,然后将ROM芯片贴在单板上,因此,由于BIOS程序被烧写到ROM芯片中,所以BIOS程序具有硬件特性,不便于升级。
然而,在较复杂的嵌入式系统中,BIOS程序将要完成较多的功能,一般通信设备中的BIOS程序要完成CPU小系统的初始化和驱动、嵌入式操作系统的启动、单板串口网口的驱动等工作,大部分的BIOS程序还要实现业务软件的加载通道、及加载业务软件等工作,因此,这些功能所对应的BIOS程序的规模也是较大的,而且,BIOS程序也有可能存在不完善等问题,这时,当带有上述BIOS程序的设备已经在市场上应用时,如何解决BIOS程序中存在的问题,就变成了一个急待解决的问题。在不能进行BIOS在线升级时要修正BIOS程序中的问题,要么将设备或单板退回制造商,制造商重新烧写BIOS程序并发货,要么在现场更换带有BIOS程序的芯片,因此,不仅耗费人力、物力,且不方便。
为了实现BIOS在线升级,如图1所示,现有的一种BIOS在线升级的方法是在烧片的ROM芯片中保留一份通过烧写完成的BIOS程序,另外,在单板上的Flash(一种非易失性的存储介质)中也保存一份BIOS程序,该份BIOS程序可通过在线升级时写入。两份BIOS程序基本一致,但略有差异,在步骤11中,ROM中的BIOS程序总是上电一开始运行的程序,程序在初始化完CPU后,在步骤12中,马上去判断Flash中的BIOS是否有效,若有效,在步骤13中,则将程序指针跳转到Flash中,在Flash中取BIOS程序的指令运行,若程序无效,在步骤14中,则继续在ROM中取指令运行,无论在取Flash中的指令运行还是取ROM中的指令运行,后续的程序运行过程是一致的,不再详述。
单板生产加工时Flash中总是空的,其中没有有效的BIOS程序,因此,此时总是运行ROM中的BIOS程序。当发现BIOS程序有问题时,可通过修改代码并生成一个新的BIOS程序,然后,通过串口网口等通道加载到单板上,并保存在Flash中。以后单板复位或重新启动时,若Flash中有有效的BIOS程序,就会在Flash中取指令运行。如果一段时间后,发现Flash中的BIOS程序也有问题,可以再次更新Flash中的BIOS程序,这样就可以在不变动硬件的情况下,完成BIOS程序的修正,从而达到了BIOS在线升级的目的。
上述方案虽然能实现BIOS在线升级,但有如下缺点1、依赖于硬件的具体实现,由于CPU需要在Flash中取BIOS程序的指令运行,需要Flash的地址空间是连续的,而实际上很多嵌入式系统由于接口位宽的限制,不能保证Flash的地址空间连续,往往是只占用64bit数据线的16bit或者32bit等数据线,不能保证地址空间是连续的,所以这种方案的应用范围较有限。
2、升级功能不安全,若升级的BIOS程序是正常的,则在线升级功能正常,一旦升级的BIOS程序本身是错误的,将导致升级失败,并且Flash中BIOS程序标志有效,但是程序本身是错误的,将导致系统无法自动恢复,升级失败将导致更严重的后果。
3、升级功能实用性差,假如BIOS程序在经历了较长的一段时间后,发生过5、6次的升级,BIOS程序版本和生产时烧写在ROM中的版本已有较大差别时,若某次升级失败,则系统只能回退到生产时ROM中的BIOS版本,意义不大。
在现有技术中,另一种BIOS在线升级方案的总体思路是将BIOS程序划分为两部分,一部分为不可升级的部分,一部分为需要升级的部分,并分别生成目标文件,并称之为小BIOS和主BIOS。其中小BIOS包含CPU小系统最基本的驱动,如CPU初始化、RAM控制器初始化、嵌入式操作系统启动、串口驱动等,这部分功能相对简单和稳定,默认不会存在问题,认为不需要升级,将这部分程序通过烧片器烧写到ROM芯片中,是单板上电运行的第一段程序。主BIOS程序包含BIOS程序的全部内容,在小BIOS启动后,通过串口将主BIOS下载到单板上,并保存在Flash中。
如图2所示,在步骤21中,单板上电运行时,先运行ROM中的小BIOS程序,初始化完CPU、RAM控制器、操作系统、串口等内容后,在步骤22中,判断Flash中是否有有效的主BIOS程序,若有效,在步骤23中,则将主BIOS程序搬移到RAM中,并跳转到RAM中的主BIOS运行,否则,在步骤24中,则要求通过串口加载主BIOS程序。
生产时,由于Flash中没有内容,所以小BIOS启动后必须先加载一次主BIOS程序,然后每次启动都先启动小BIOS,然后运行主BIOS,当发现主BIOS程序中存在问题时,修改代码重新生成主BIOS程序,在启动小BIOS程序时通过网口或串口下载到单板上,并更新Flash中的主BIOS程序,从而达到了BIOS在线升级的目的。若运行一段时间后,又发现主BIOS有问题,则再次在小BIOS启动时更新主BIOS。实现了在不变动硬件的前提下,BIOS程序问题的修正。
此方案也有较明显局限和缺点1、只能实现一定范围的在线升级,尽管小BIOS功能简单,但也涉及较多代码,如果小BIOS也存在问题,该方案是无法解决的。
2、单板启动时间长,单板启动时间几乎是普通BIOS的两倍,因为要先运行一遍小BIOS程序,再运行一遍主BIOS程序。
3、不能兼容原来的生产制造方式,需要在生产环节加载一次主BIOS程序,相对原来的烧片安装的过程多了一个环节。
4、升级功能不安全,若升级的BIOS程序是正常的,则在线升级功能正常,一旦升级的BIOS程序本身是错误的,将导致升级失败,并且Flash中BIOS程序标志有效,但是程序本身是错误的,将导致系统无法自动恢复。
5、升级功能实用性差,假如某次BIOS程序升级失败,系统将不能在原有的旧版本上运行,将导致业务中断。

发明内容
针对现有技术的上述缺陷,本发明的目的是提供一种BIOS在线升级的装置和方法,解决了依赖具体硬件才能实现升级的问题,从而提高了BIOS在线升级的通用性,并解决了升级失败而导致业务中断的问题,从而提高了BIOS在线升级的稳定性。
本发明提供了一种基本输入输出系统BIOS在线升级装置,所述升级装置包括单板,所述单板包括只读存储器ROM,用于存储基本BIOS程序;以及非易失性存储介质flash,其被划分为至少两个存储区,每一存储区用于存储最近升级的扩展BIOS程序;存有升级版本BIOS程序的设备,其与单板相连,用于通过网口串口对单板上flash中存储的两份扩展BIOS程序中的较低版本的BIOS程序进行升级。
本发明还提供了一种基本输入输出系统BIOS在线升级方法,包括当需要对所述的BIOS程序进行升级时,则通过将新版本的BIOS程序存储到flash中的一个存储区中而实现升级BIOS程序。
所述每份扩展BIOS程序还设置有有效标志、稳定运行标志和版本标志。
通过将升级的扩展BIOS程序存储到flash中的一个存储区中而实现升级BIOS程序,包括判断flash中存储的扩展BIOS程序是否均有效,若均有效,则将升级的BIOS程序存储到版本较低的扩展BIOS程序的存储区,否则,将升级的BIOS程序存储到任意的扩展BIOS程序的存储区中。
在将升级的BIOS程序存储到存储区后,将存储的BIOS程序的有效标志设置为有效状态,稳定运行标志设置为新升级状态,版本标志设置为较原来所有扩展BIOS程序的版本更高的版本。
在升级前还包括,将有效标志设置为无效状态。
在将升级的BIOS程序存储到存储区后还包括运行升级的BIOS程序。
所述运行BIOS程序包括选择有效标志为有效状态且稳定运行标志位为新升级状态的BIOS程序运行,当运行到预定阶段后,将该BIOS程序的稳定运行标志位设置为稳定运行状态。
在开始运行BIOS程序以前,选择到新升级状态的BIOS程序后,将稳定运行标志设置为待运行状态。
所述运行BIOS程序是将其搬移到随机存储器RAM中运行。
当发现扩展BIOS程序的稳定标志位为待运行状态,则将其有效标志设置为无效状态。
所述升级是通过网口或串口将新版本BIOS程序拷贝到Flash中的一个存储区中。
因此,由于本发明采用将flash中的BIOS程序直接搬移到RAM中运行,不在Flash中取指令运行,所以,本发明的方法不依赖具体硬件实现的BIOS在线升级方法,使BIOS程序的升级变得简单有效,并可在各通信设备中共享,从而极大的提高了通信设备的可维护性以及降低了维护成本。此外,由于本发明采用多份BIOS程序,所述多份BIOS程序分别为最近多次更新的BIOS程序版本。一旦BIOS程序升级失败,不仅不会导致业务中断,而且也不会回退到生产时的版本,从而使BIOS在线升级的功能变得稳定可靠。


图1示出了一种现有技术方案的BIOS程序的运行流程图;图2示出了另一现有技术方案的BIOS程序的运行流程图;图3示出了本发明的升级装置示意图;图4示出了本发明的实施例的BIOS程序的运行流程图。
图5示出了本发明的实施例的升级流程图。
具体实施例方式
为了便于本领域一般技术人员理解和实现本发明,现结合附图描绘本发明的实施例。
为了便于理解本发明的在线升级过程,下面简单介绍一下BIOS程序工作的基本原理及过程。BIOS程序一般是烧写在ROM芯片中,上电第一段代码总是在ROM中运行,进行CPU初始化,RAM控制器初始化。由于在ROM中程序运行较慢,BIOS程序会将自身的代码搬移到RAM中,然后继续运行,进行单板系统硬件的初始化,嵌入式操作系统的初始化,串口网口的初始化,业务程序加载通道的驱动,最后加载业务软件并运行业务软件,最后完成BIOS程序的运行。
根据本发明,本发明提供了一种BIOS在线升级装置,包括单板,所述单板包括存储基本BIOS程序的只读存储器ROM和至少存储两份扩展BIOS程序的flash;存有升级版本BIOS程序的设备,其与单板相连,用于通过网口串口等通道对flash中较旧版本的BIOS程序进行升级。ROM中的基本BIOS程序是在生产时通过烧写写入的,Flash中BIOS程序是分别通过多次在线升级时写入的,即分别是最近多次升级时所写入的BIOS程序。
每份扩展BIOS程序还设置有三个标志位有效标志位、稳定运行标志位、版本标志位。有效标志位用来表示该扩展BIOS程序是否有效,其有两种状态有效状态和无效状态,即,若升级顺利完成,则将其置为有效状态,若升级时发生中断,则其为无效状态。稳定运行标志位表示该扩展BIOS程序是否能够稳定运行,其有三种状态新升级状态、待运行状态和稳定运行状态,当刚升级完毕时,将稳定运行标志位置为新升级状态;当该升级完毕的扩展BIOS程序刚开始运行时,将稳定运行标志位置为待运行状态;当该升级完毕的扩展BIOS程序运行到某一阶段时,如运行完毕时,将稳定运行标志位置为稳定运行状态。版本标志位表示该BIOS程序的版本,flash中的扩展BIOS程序的版本与另一扩展BIOS程序的版本相互轮流交替上升,在本发明中,扩展BIOS程序的版本为最近的多个版本。
如图4所示,在步骤41中,当单板一上电时,总是开始运行基本BIOS程序,基本BIOS程序首先初始化完CPU,RAM控制器,然后在步骤42中,根据扩展BIOS程序有效标志位和版本标志位,判断Flash中是否存在有效的扩展BIOS程序,若是,则在步骤43中,选择有效的最新版本的扩展BIOS程序搬移到RAM中,并跳转到RAM中运行,否则,在步骤46中,即flash中没有有效的扩展BIOS程序,则搬移ROM中的基本BIOS到RAM中,并跳转到RAM中运行。
由于若Flash中存在有效的扩展BIOS程序,则将其搬移到RAM中,并跳转到RAM中运行,不直接在Flash中取指令运行,所以本发明与Flash的硬件结构无关。
单板生产加工时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的稳定状态标志位置为新升级状态,将有效状态标志位置为有效状态。
在单板重起时,当基本BIOS发现有处于新升级状态的扩展BIOS时,则将其搬移到RAM中运行,同时将稳定运行标志从新升级状态更改为待运行状态,为了确认新升级的扩展BIOS程序的正确性,当扩展BIOS程序运行到某一阶段后,将该BIOS程序的稳定标志位置为稳定运行状态。当单板再复位或重起时,就会运行新升级的版本,至此,升级成功。
若升级的扩展BIOS程序存在问题,则扩展BIOS程序不能够运行到特定的阶段,因而,稳定运行标志位处于待运行状态,这时,基本BIOS在启动时识别出稳定运行标志位为待运行状态时,清空稳定运行标志位、有效标志位、和版本标志位。然后,将flash中相对较旧的版本搬移到RAM中运行,若flash中没有有效的BIOS程序,则将ROM中的基本BIOS搬移到RAM中运行,从而保证了即使升级失败,单板仍旧能正常工作,不会导致业务中断。通过以上方法,不但实现了BIOS在线升级的功能,而且保证了升级的可靠性和安全性。
因此,由于本发明采用将flash中的BIOS程序直接搬移到RAM中运行,不直接在Flash中取指令运行,所以,本发明的方法是不依赖具体硬件实现的BIOS在线升级方法,使BIOS程序的升级变得简单有效,并可在各通信设备中共享,从而极大的提高了通信设备的可维护性以及降低了维护成本。
因此,由于本发明采用多份BIOS程序,所述多份BIOS程序分别为最近多次更新的BIOS程序版本。一旦BIOS程序升级失败,不仅不会导致业务中断,而且也不会回退到生产的原始版本,从而使BIOS在线升级的功能变得稳定可靠。
本发明的BIOS在线升级功能不需要额外的投入,BIOS在线升级功能对生产环节是透明的,而且在没有升级需求时,可以和普通的BIOS一样工作。
虽然通过实施例描绘了本发明,但本领域普通技术人员知道,在不脱离本发明的精神和实质的情况下,就可使本发明有许多变形和变化,本发明的范围由所附的权利要求来限定。
权利要求
1.一种基本输入输出系统BIOS在线升级装置,其特征在于,所述升级装置包括单板,所述单板包括只读存储器ROM,用于存储基本BIOS程序;以及非易失性存储介质flash,其被划分为至少两个存储区,每一存储区用于存储最近升级的扩展BIOS程序;存有升级版本BIOS程序的设备,其与单板相连,用于通过网口串口对单板上flash中存储的两份扩展BIOS程序中的较低版本的BIOS程序进行升级。
2.一种基本输入输出系统BIOS在线升级方法,其特征在于,包括当需要对所述的BIOS程序进行升级时,则通过将新版本的BIOS程序存储到flash中的一个存储区中而实现升级BIOS程序。
3.根据权利要求2所述的BIOS在线升级方法,其特征在于,所述每份扩展BIOS程序还设置有有效标志、稳定运行标志和版本标志。
4.根据权利要求3所述的BIOS在线升级方法,其特征在于,通过将升级的扩展BIOS程序存储到flash中的一个存储区中而实现升级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中的一个存储区中。
全文摘要
本发明公开了一种BIOS在线升级装置,包括单板,所述单板包括存储基本BIOS程序的只读存储器ROM和存储至少两份扩展BIOS程序的flash;存有升级版本BIOS程序的设备,其与单板相连,用于通过网口串口等通道对单板上flash中较旧版本的BIOS程序进行升级。本发明还公开了一种BIOS在线升级方法,包括若有新版本的BIOS程序;判断flash中的扩展BIOS程序是否有效,若均有效,则选择其中版本较低的BIOS程序进行升级;否则,选择其中任意的无效的BIOS程序进行升级。由于本发明的装置中有两份最近两个版本的BIOS程序,因此,即使在线升级失败时,也会正常启动通信设备。
文档编号G06F9/445GK1786910SQ20041009688
公开日2006年6月14日 申请日期2004年12月9日 优先权日2004年12月9日
发明者夏军 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1