嵌入式系统中固件程序在线升级的实现方法

文档序号:6580214阅读:502来源:国知局
专利名称:嵌入式系统中固件程序在线升级的实现方法
技术领域
本发明涉及计算机软件技术领域,具体地说,涉及一种嵌入式系统中固件程序在线升级的实现方法。
参见

图1所示。嵌入式系统的硬件结构一般包括由CPU和专用集成电路(ASIC)组成的CPU/ASIC专用集成电路10、标准通信接口11、程序存储器12、执行机构接口13、动态存储器(DRAM)14,其中CPU/ASIC专用集成电路10是嵌入系统的核心部件,它完成Firmware软件的执行工作、数据处理、信息的传送以及操作的控制功能;程序存储器12存放Firmware应用程序的指令代码和相关数据,该程序存储器一般为闪速存储器(FlashROM),或者可擦写存储器;动态存储器14用于存放数据,在系统掉电后其中数据会丢失;标准通信接口11提供一个嵌入系统与外部系统的标准通信通道,随不同的嵌入系统而不同,例如在打印机系统中,它可以是标准并口、通用串行总线口(USB)等等;执行机构接口13是系统完成特定功能而与执行机构的连接接口。
随着计算机软件性能的不断提高和完善,嵌入式系统的Firmware软件系统也需要不断更新换代以适应新的应用需求,嵌入式系统的Firmware软件系统支持在线升级逐渐成为一个必需的功能。
Firmware软件系统的在线升级是指系统能够在启动运行状态下,通过标准的通信接口从外部获得升级的Firmware代码,并且将其按照规定的格式写入FlashROM,进而系统可以执行升级后的程序代码。
嵌入式系统的Firmware软件系统在线升级通常可以通过硬件系统支持配合相关的升级软件来实现。根据硬件系统的支持程度,实现Firmware软件系统在线升级的系统可分为两类,一类是在硬件系统的支持程度较高的情况下,硬件系统在启动时直接完成了系统必要的初始化工作,然后才把控制权交给Firmware应用程序,Firmware应用程序直接在此基础上完成在线升级的功能。这种方式的在线升级过程可以随时被打断,进而可以重新进行在线升级操作,在线升级过程是绝对安全可靠的,不会因为非法中断而导致系统崩溃,即硬件系统会在Firmware应用程序崩溃时仍然正常启动。因此,这种方式需要硬件支持程度高,一般拥有专用的CPU。
另外一类是在硬件系统的支持程度较低的情况下,硬件系统在启动时直接把控制权交给Firmware应用程序,由Firmware应用程序完成系统必要的初始化工作,这种硬件系统通用性较强,一般拥有通用的CPU。其进行在线升级过程如下系统上电启动,从系统程序转至支持在线升级的固件程序,该程序将标准通信接口和DRAM以及其他必要的硬件资源初始化为可用状态,接着判断是否需要进行Firmware的在线升级,若不需要则退出支持在线升级的固件程序,进入系统正常程序,否则,将升级的Firmware程序和向程序存储器写入该升级Firmware程序的指令代码下载至动态存储器中,通过执行向程序存储器写入升级Firmware程序的指令代码,接管原来的Firmware应用程序,使动态存储器中的指令代码获得控制权,将升级的Firmware程序写入程序存储器,刷新原来的Firmware程序,然后,把控制权再次交给程序存储器中已经升级更新后的Firmware程序,再进入系统正常运行流程。
通过以上过程可见,Firmware软件程序是一段连续的指令代码,支持在线升级的固件程序和其它系统功能部分的代码在程序存储器的存储地址空间上未严格区分,有相当的关联,如果Firmware调试或运行时发生故障,例如,在向程序存储器写入升级Firmware程序的执行过程中发生错码、中断等故障现象,或者升级过程中DRAM突然掉电致使存储于其中的程序丢失,或者写入FlashROM的地址空间发生错误,甚至仅仅由于其它系统功能部分的代码发生故障,都会导致系统无法正常启动或死机,从而导致系统死锁,此时在线升级功能根本就没有机会发挥作用,而且也会被意外破坏掉。
因此,在硬件系统的支持程度较低的情况下,当Firmware崩溃时,整个系统即崩溃掉,无法正常完成其功能,包括在线升级功能;而且,系统在Firmware升级的过程中不能中断,否则会导致系统崩溃死锁,因而在线升级是不可靠的,而且当Firmware软件发生死机等现象时,系统也会崩溃。
本发明是通过以下技术方案实现的一种嵌入式系统中固件程序在线升级的实现方法,该方法至少包括A.将支持在线升级的固件程序与系统功能的固件程序分离,并将支持在线升级的固件程序存储于设置在程序存储器的永久驻留空间;B.系统上电启动后,直接转至执行支持在线升级的固件程序,支持在线升级的固件程序初始化必要的硬件资源,判断是否进行在线升级,如果是,则依次执行步骤C和D,否则,转至执行实现系统功能的固件程序;C.将升级系统功能的固件程序、向程序存储器写入升级系统功能固件程序的指令代码存储于动态存储器中后,转至执行存储于动态存储器中的向程序存储器写入升级系统功能固件程序的指令代码;D.动态存储器中的向程序存储器写入升级系统功能固件程序的指令代码将升级的系统功能固件程序写入程序存储器中永久驻留空间之外的地址空间,转至执行系统功能的固件程序,完成在线升级。
其中,设置步骤A所述的永久驻留空间在程序存储器的中系统功能固件程序使用不到的地址空间,较佳地,设置步骤A所述的永久驻留空间程序存储器的最尾部地址空间,步骤C所述的升级固件程序的基址定位于程序存储器中永久驻留空间地址以外的地址空间之上。
进一步地,步骤B所述的硬件资源初始化至少包括动态存储器的初始化、标准通信接口的初始化。步骤C所述的升级的固件程序通过标准通信接口下载至动态存储器,所述的向程序存储器写入升级的固件程序的指令代码通过标准通信接口下载到动态存储器中,或者从程序存储器中拷贝至动态存储器。所述的程序存储器为闪速存储器,或者为可擦写存储器。
本发明所提供嵌入式系统中固件在线升级实现方法,让在线升级程序与实现系统功能的Firmware软件程序相互独立,使得当实现系统功能的Firmware软件程序存在问题或者在线升级过程中意外中断时,在线升级程序仍能照常工作或重新进行操作,为在硬件系统支持程度较低的情况下提供了一种独立于硬件平台和具体应用环境的嵌入式系统Firmware在线升级方法,具有更高的独立性、可靠性、通用性。
通过从标准通信端口接收下载的升级Firmware程序以及向程序存储器写入升级Firmware程序的指令代码,使得该指令代码接管对系统的控制;也可把下载的升级Firmware程序和上述指令代码替换为特殊用途的数据和代码,通过该代码对系统的接管执行特殊的操作,可使系统具有更佳的可扩展性。
应用本发明所提供的方法,使得嵌入式系统的Firmware软件功能不仅可以通过设计开发人员进行升级,而且普通用户通过Firmware软件下载工具在使用说明的指导下可以自行进行远程的在线升级操作,另外,为设计开发人员在系统Firmware的开发阶段也提供了很多的方便,具有更佳的方便性。
图2为本发明实施例在线升级软件的实现过程示意图。
图3为在硬件系统的支持程度较低的情况下,在线升级的流程图。
本发明采用分离式在线升级软件的方法,也就是说,将实现系统功能的Firmware程序部分和支持在线升级的Firmware程序部分从结构上彻底分离开来,二者之间完全独立。同时,将支持在线升级的Firmware程序精简到最简化的程度,减少其出错的因素,并且将其定位于程序存储器中系统功能固件程序使用不到的地址空间,例如程序存储器的最尾部特定的地址空间上,即驻留在此地址空间,此段地址空间仅仅在执行在线升级功能时才会被CPU读取访问到。更进一步,为了保证此段Firmware程序不被意外破坏掉,还需要对这一段地址空间作特殊的保护,因此,在向程序存储器写入升级Firmware程序的指令代码中,写入的地址范围应该不包含这一段地址空间。
这样,支持在线升级的Firmware程序部分先负责硬件系统的DRAM初始化、标准通信接口的初始化,以及其他必要的硬件资源初始化工作;然后判断是否进行在线升级,如果是则下载升级的Firmware程序以及向程序存储器写入升级Firmware程序的指令代码,并存储到DRAM空间;最后将控制权交给向程序存储器写入升级Firmware程序的指令代码,以将升级的Firmware程序写入程序存储器空间。
向程序存储器写入升级Firmware程序的指令代码是动态下载到系统DRAM中的,可以由设计者自行定制其功能和操作。关键在于,其写入程序存储器的地址空间一定要保证不包含上述支持在线升级的Firmware程序部分所占据的地址空间。
通过在程序存储器中设置专用于存储支持在线升级Firmware程序的永久驻留空间,保证了上述支持在线升级Firmware程序永远不被更改,除非芯片发生物理损坏。当实现系统功能的Firmware软件程序发生故障或者运行死机时,甚至发生在线升级过程中掉电等意外中断情况时,上述永久驻留空间中的在线升级Firmware程序仍然保存完好,可以完成系统启动、必要的初始化工作以及支持Firmware在线升级功能。
下面以一种激光打印机控制卡系统为例说明本发明的应用。
在激光打印机控制卡系统中,PowerPC是一种非常常见的嵌入式系统所采用的CPU,采用了一款特殊的ASIC来实现专门的打印操作,另外其标准通信接口是标准并口,可与PC机的并口相连,程序存储器为FlahsROM。为了实现系统在线升级功能,Firmware软件需要初始化ASIC中的DRAM控制器以及其标准通信接口,并将其初始化为最简单的工作模式以精简代码。
参见图2所示,图2为本发明实施例在线升级软件的实现过程示意图。在图中,FlahsROM中方格部分为永久驻留空间,存储了支持在线升级软件,FlahsROM中左斜线部分是在线升级期间其内容要被刷新的部分,为保证刷新部分不覆盖永久驻留空间,可设置写入的升级Firmware程序基址定位于FlashRom中永久驻留空间之上;DRAM中右斜线部分存储了下载的升级Firmware程序以及向FlahsROM写入升级Firmware程序的指令代码。
参见图3所示,图3为在硬件系统的支持程度较低的情况下,Firmware程序的在线升级流程图。其实现过程是这样的A.系统上电启动,系统程序从程序入口处直接跳转到支持在线升级程序的永久驻留空间处(图2中,过程20),执行步骤301、302、303,支持在线升级程序将标准通信接口和DRAM以及其他必要的硬件资源初始化为可用状态;B.执行步骤304,支持在线升级程序做完必要的初始化工作后,判断用户是否想进入在线升级,若不进行升级操作,则执行步骤307,直接跳转回正常的程序流程(图2中,过程21),进入执行系统正常运行流程;否则,执行步骤C;C.执行步骤305、306,通过标准并口从PC主机下载升级的Firmware程序以及向FlashROM写入该升级Firmware程序的指令代码,并存储到DRAM中。
上述向FlashROM写入该升级Firmware程序的指令代码可以通过标准通信端口获得,存入系统的DRAM中,也可以从FlashROM中拷贝到DRAM中。因为不同型号的FlashROM的写入操作方法不同,因此后者只能针对某一预先规定好的FlashROM芯片型号进行在线升级操作,而前者却可以通过标准通信端口获得针对各种需要的FlashROM芯片型号的写入方法代码,灵活性更好。
D.跳转到存储了向FlashROM写入升级Firmware程序的指令代码的DRAM空间的地址处(图2中,过程22),执行步骤208,将升级的Firmware程序写入FlashROM相应的地址空间;E.完成在线升级工作后,重新运行更新后的Firmware程序,即跳转到升级后的Firmware入口处,运行更新后的Firmware正常流程(图2中,过程23)。
本发明将Firmware中支持在线升级部分的程序和实现系统功能的Firmware程序部分彻底分离,使之没有相关性,并使得Firmware程序本身不需再考虑在线升级过程,提供了一个独立于硬件平台和具体应用的环境的通用方法。将Firmware中支持在线升级部分的程序永久驻留于FlashROM的特定地址空间,而且占用空间非常小,对系统没有任何影响,并使得Firmware中支持在线升级部分的程序在升级过程中不被修改,保证了升级过程能够多次重新进行,提高了系统的安全性。向FlashROM写入升级Firmware程序的指令代码通过标准并口从PC主机动态下载到DRAM中,可以根据不同的系统应用动态地选择所使用的FlashROM芯片的型号,使用非常灵活。
以上实施例仅用以说明而非限制本发明的技术方案,尽管参照上述实施例对本发明进行了详细说明,本领域的普通技术人员应当理解依然可以对本发明进行修改或者等同替换,而不脱离本发明的精神和范围的任何修改或局部替换,其均应涵盖在本发明的权利要求范围当中。
权利要求
1.一种嵌入式系统中固件程序在线升级的实现方法,其特征在于,该方法至少包括A.将支持在线升级的固件程序与系统功能的固件程序分离,并将支持在线升级的固件程序存储于设置在程序存储器的永久驻留空间;B.系统上电启动后,直接转至执行支持在线升级的固件程序,支持在线升级的固件程序初始化必要的硬件资源,判断是否进行在线升级,如果是,则依次执行步骤C和D,否则,转至执行实现系统功能的固件程序;C.将升级系统功能的固件程序、向程序存储器写入升级系统功能固件程序的指令代码存储于动态存储器中后,转至执行存储于动态存储器中的向程序存储器写入升级系统功能固件程序的指令代码;D.动态存储器中的向程序存储器写入升级系统功能固件程序的指令代码将升级的系统功能固件程序写入程序存储器中永久驻留空间之外的地址空间,转至执行系统功能的固件程序,完成在线升级。
2.根据权利要求1所述的实现方法,其特征在于,设置步骤A所述的永久驻留空间在程序存储器的最尾部地址空间。
3.根据权利要求2所述的实现方法,其特征在于,设置步骤C所述的升级固件程序基址位于程序存储器中永久驻留空间地址之上。
4.根据权利要求1、2、3所述的实现方法,其特征在于,步骤B所述的硬件资源初始化至少包括动态存储器的初始化、标准通信接口的初始化。
5.根据权利要求1、2、3所述的实现方法,其特征在于,步骤C所述的升级的固件程序通过标准通信接口下载至动态存储器。
6.根据权利要求1、2、3所述的实现方法,其特征在于,步骤C所述的向程序存储器写入升级的固件程序的指令代码通过标准通信接口下载到动态存储器中,或者从程序存储器中拷贝至动态存储器。
7.根据权利要求1、2、3所述的实现方法,其特征在于,所述的程序存储器为闪速存储器,或者为可擦写存储器。
全文摘要
公开了一种嵌入式系统中固件程序在线升级的实现方法,该方法将支持在线升级的固件程序与系统功能的固件程序分离,并将支持在线升级的固件程序存储于设置在程序存储器的永久驻留空间;然后系统上电启动,直接转至执行支持在线升级的固件程序,支持在线升级的固件程序将必要的硬件资源进行初始化后,判断是否进行在线升级,如果是,则将升级系统功能固件程序、向程序存储器写入升级的固件程序的指令代码存储于动态存储器中;转至动态存储器中的上述指令代码,将升级的固件程序写入程序存储器中永久驻留空间之外的地址空间,然后转至运行升级后的系统功能固件程序。本发明提供了一种独立于硬件平台的通用固件在线升级方法。
文档编号G06F9/30GK1464386SQ0212147
公开日2003年12月31日 申请日期2002年6月25日 优先权日2002年6月25日
发明者王利民 申请人:联想(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1