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