固件更新装置以及方法

xiaoxiao2020-7-22  2

专利名称:固件更新装置以及方法
技术领域
本发明涉及固件更新装置以及方法。
背景技术
以往,一般有如下方法,在释放嵌入式装置之后,当在嵌入式装置的非易失性存储器中发现与预先存储的所有数据例如OS或应用程序(以下称为“固件”)相关的故障时,通过将该固件改写为解决了故障的固件来解决故障。例如,在专利文献1中公开有采用保存新的固件和当前固件2个版本的双面结构的系统。这里,新的固件与当前的固件经过外部的控制台(console),通过手动能够进行切换。根据专利文献1,即使在更新过程中发生了电源断开、进行了计划外的操作等更新中故障导致更新在中途结束时,也能够通过从外部的控制台重新从最初进行更新,来完成更新。 此外,如果管理更新状况,还能够不是从最初而是从故障发生时刻开始更新。进一步,通过从新的固件切换为之前的版本的固件,能够起动系统。即,具有即使发生了更新中故障也能再开始更新、返回之前的版本的优点。专利文献1 日本特开平11-110218号公报但是,由于专利文献1中公开的固件更新装置采用双面结构,所以存在与不具有备份的固件相比,固件容量需要2倍,装置的开发成本变高的缺点。此外,当陷入不能启动的状态时,为了重新进行固件更新,需要外部的控制台,一般的用户自己不能简单地进行修
Μ. ο并且,在该装置中,由于使装置停止而进行固件的更新,所以需要进行更新后的起动处理。即使是不停止装置地对固件进行改写的其它固件更新装置,在改写后也需要重新起动装置。若如上述那样需要经常重新起动,则在固件更新处理时就会花费时间。

发明内容
本发明是鉴于以上状况而提出的发明,本发明提供一种固件更新处理,能够在更新中故障时再开始更新,其具有与能够返回之前的版本的、以往的双面结构同等的耐故障性,同时还能节约固件保存用的非易失性存储器,能够防止启动失败导致的系统停止,并且不需要重新起动。为解决上述课题,本发明的固件更新装置,其具有固件并具备更新该固件的功能, 其中,具备运算处理部,其按照更新程序,以文件为单位执行固件的更新处理;易失性存储器,其暂时保存数据;以及非易失性存储器,其持续地保存数据。此外,非易失性存储器保持通常时工作的通常固件、和在包括该通常固件改写失败时的紧急时工作的紧急用固件。 这里,紧急用固件大小比通常固件小,紧急用固件仅具有如下功能使更新程序成为能够执行的状态。此外,运算处理部,当进行通常固件的更新处理时,在更新处理之前将下次启动目标设定为紧急用固件,执行更新处理,在更新处理之后将下次启动目标设定为通常固件。此外,非易失性存储器具有用于暂时存储更新前的文件的暂时退避区域、和存储更新文件的更新数据区域。此时,运算处理部将更新前的文件存储在暂时退避区域中,在执行了更新处理之后,从暂时退避区域删除暂时退避区域中存储的更新前的文件,并且替换成对应的更新文件并存储在更新数据区域中。此外,暂时退避区域的容量设定成构成通常固件的多个文件中大小最大的文件的容量。此外,非易失性存储器具有记载了更新过程的更新过程记载区域、和记载了与构成通常固件的各文件有关的更新状况的更新状况记载区域。此时,运算处理部按照更新过程执行更新程序,将更新的日志记述在更新状况记载区域中。这里,对于构成通常固件的各文件,更新过程含有当更新处理结束时是否需要重新起动的信息。此时,运算处理部在更新处理结束后,对需要重新起动的文件进行重新起动。运算处理部,当起动了紧急用固件时,检查通常固件的启动中需要的文件有无破损,在执行了更新处理之后,将下次启动目标设定为通常固件。此外,运算处理部,在起动了紧急用固件时,判断通常固件是否能够起动,当能够起动时,将下次启动目标设定为通常固件。另一方面,当不能起动时,使用暂时退避区域中存储的更新前的文件来修复通常固件使其成为能够起动的状态,然后将下次启动目标设定为通常固件。本发明的特征,通过用于实施以下本发明的最佳方式以及附图得以明确。根据本发明,在固件更新中,能够节约固件保存用的非易失性存储器的容量,同时还能够确保与在更新中故障时能再开始和返回之前的版本的以往的双面结构同等的可靠性。此外,还能够防止启动失败导致的系统停止。此外,还能够将重新起动导致的系统停止时间降低到最小限度。


图1是表示本发明的实施方式中嵌入式装置的概要结构的图。图2是用于说明通常固件块刚起动之后的动作的流程图。图3a是用于说明紧急用固件块刚起动之后的动作的流程图⑴。图北是用于说明紧急用固件块刚起动之后的动作的流程图(2)。图4是用于说明固件的更新处理的详细动作的流程图。
具体实施例方式本发明涉及能够削减存储固件的闪速存储器的容量同时还具有能够应对更新中的故障等耐故障性的固件更新装置。以下,参照

本发明的实施方式。但是应该注意,本实施方式只是用于实现本发明的一个例子,并不限定本发明的技术范围。<嵌入式装置(固件更新装置)的结构>图1是表示本发明的实施方式中嵌入式装置的概要结构的图。在本发明中,假定该嵌入式装置例如是TV等家电设备。嵌入式装置1由MPU(CPU) 11、RAM12、FR0M13、输入装置14、显示装置15、通信装置 16、以及连接以上各部件的总线17构成。FR0M13是保持固件的非易失性存储器。FR0M13由在嵌入式装置1起动时最初执
5行的启动块1301、在嵌入式装置1没有故障的通常状态下使用的通常固件块1302、在嵌入式装置1中有故障时紧急使用的紧急用固件块1303、在固件更新时使用的更新程序保存块 1304、在固件更新时使用的更新数据保存块1305、以及暂时存储更新文件的更新文件暂时退避块1306构成。在启动块1301中保存本装置起动时最初执行的、用于在起动时从设定(指定)的固件来起动的软件即启动加载程序(boOtloader)1301A。启动加载程序是在起动后读入通常固件块1302或紧急用固件块1303中的某一个。在启动加载程序1301A中由MPUll预先登录有从通常固件块1302以及紧急用固件块1303的哪一个起动的、下次启动目标。在通常固件块1302中保存有通常基础软件(0 1302A和通常应用软件1302B。在紧急用固件块1303中保存有仅具有最低限度的功能的、与通常基础软件1302A 相比大小抑制为较小的紧急用基础软件1303A。即,紧急用基础软件1303A仅具有将更新程序保存块1304、更新数据保存块1305、和通常固件块1302安装到RAM中并调用的功能,即成为能够使更新后的程序运行的状态的功能。与以往不同,不需要具备与通常基础软件相同的功能。在更新程序保存块1304中保存有在更新通常基础软件1302A和通常应用软件 1302B时使用的更新程序。在更新数据保存块1305中保存有用于更新为新的固件的、当前固件与新的固件的文件单位的差分数据即更新数据1305A ;记录更新过程(以怎样的过程以及操作来执行更新)的更新过程1305B ;以及更新状况(日志文件logfile) 1305C,其用于记录指定执行中的更新过程的更新过程存储路径和表示到该更新过程中哪个部分结束的更新过程执行结束位置。以往以镜像(二进制数据的块)为单位进行更新,而在本发明中以文件单位进行更新。〈通常固件的动作〉图2是用于说明本发明的实施方式的通常固件块1302刚起动之后的动作的流程图。最初,MPUll判定固件更新处理是否在进行中(步骤S201)。这是以更新状况1305C 中的更新过程存储路径是否为NULL来判定的。当是更新过程中时就不是NULL,当不是更新过程中时就是NULL。当判定为更新过程中时,处理进入步骤207,当判定为不是更新过程中时,处理转移到步骤S202。在步骤S202中,MPUll判定是否进行固件更新。例如,MPUll使用输入装置14和显示装置15保存表示是否询问嵌入式装置1的用户、或是否新建到更新数据1305A的更新、更新是否已经正常结束的的标志,并参照该标志。当没有更新时,处理转移到步骤S203, MPUll执行通常的起动过程(步骤20 ,结束处理。当更新固件时,MPUll判定该更新是顺方向还是逆方向(步骤204)。例如,通过 MPUll使用输入装置14和显示装置15向嵌入式装置1的用户进行询问来实现。当是顺方向时,处理转移到步骤S205,MPUll在更新状况1305C中设定更新过程书1305B的存储位置 (步骤S205)。另一方面,当是逆方向时,处理转移到步骤S206,MPUll以更新过程书1305B 为基础生成逆方向的更新过程书,在更新状况1305C中设定更新过程书1305B的存储位置 (步骤 S206)。
接着,MPUll针对启动加载程序将下次启动目标设定为紧急用固件块(步骤207)。 这是用于因为固件在更新过程中所以能够进行其目标的更新的处理。例如,在改写通常基础软件1302A的过程中电源断开时,用户不能起动通常基础软件,制造商必须进行回收。因此,这种情况下,使用紧急用固件来执行更新程序。由于下次启动时就从紧急用固件块启动,所以作为处理就执行图3(a)或图3(b)的处理。然后,MPUll根据进行过程书来执行固件的更新处理(步骤S208)。更新处理的详细内容在图4中进一步说明。然后,MPUll对于启动加载程序,将下次启动目标设定为通常固件块(步骤S209)。进而,MPUll以更新过程书来判定更新后的文件是否需要重新起动(步骤S210)。 当需要时,MPUll按照更新过程书对需要的组件进行重新起动(步骤S211),结束。当是双面结构时虽然在更新了的情况下必须重新起动,但在本发明中如果正常的更新结束就不需要重新起动,仅在有异常(在更新过程中电源断开等)时需要重新起动(关于OS的改写根据改写的对象有时即使更新正常结束也需要重新起动)。另外,更新过程书包括例如更新前的当前版本、更新后的新版本、更新内容,更新内容包括每个对象文件的操作内容、对象文件、表示需要重新起动的对象的重新起动对象。 更新对象例如当以服务为单位的更新完成时指定该服务,当需要系统整体进行重新起动时指定系统整体。对于步骤S206的逆方向的更新过程书的生成,例如对于文件的生成就变更为删除,对于删除就变更为生成。<紧急用固件块的动作>作为紧急用固件块起动后的动作例如考虑有图3(a)以及图3(b)这2种。(1)图3(a)是紧急用固件块的刚起动之后的动作,是用于说明如果通常固件至少修正则能够起动时的动作的流程图。最初,MPUll判定固件更新处理是否在进行中(步骤S301)。这与前述内容同样, 判定更新状况1305C中的更新过程存储路径是否为NULL。当是更新过程中时不是NULL,当不是更新过程中时是NULL。当判定为更新过程中时,处理进入步骤S303,当判定不是更新过程中时,处理转移到步骤S302,MPUll执行通常的起动过程(步骤30 ,处理结束。在步骤S303中,MPUll将通常固件块安装到RAM12中。图3 (a)是从通常固件起动的情况。然后,MPUll检查在通常固件块中是否有缺陷,判定是否能够原样起动(步骤 S304)。当判断不能起动时,处理转移到步骤S305,MPUll返回到更新通常固件块之前的状态,能够起动(步骤S3(^)。例如,是在将更新前的文件存储在更新文件暂时退避块1306中之后,当在更新处理过程中电源断开时,从该更新文件暂时退避块1306取出更新前的文件返回更新前的状态这样的处理。而当判断为能够起动时,处理转移到步骤S306。接着,MPUll将下次启动目标设定为通常固件(步骤S306),重新起动(步骤 S307)。当从紧急用固件起动时必须重新起动。(2)图3(b)是用于说明紧急用固件块的刚起动之后的动作即通常固件块不能起动时的动作的流程图。图3(b)表示基本的动作。最初,MPUll判定固件更新处理是否在进行中(步骤311)。对于是否在更新过程中的判断如上所述。当判定为更新过程中时,处理进入步骤S313。当判定不是在更新过程中时,MPUll执行通常的起动过程(步骤312),结束处理。在步骤S313中,MPUll将通常固件块安装在RAM12中。然后,MPUll执行更新处理(步骤S314。此外,MPUll将下次启动目标设定为通常固件(步骤S315),重新起动(步骤S316)。另外,在步骤S314中,虽然通过确认在启动时必要的文件的破损状况来判定能不能启动,但也可以取而代之或在此之上通过虚拟环境实际确认通常固件能够起动,所述虚拟环境是在紧急用固件区域内具备的、能在OS上使其它OS工作的环境。<固件的更新处理>图4是用于详细地说明固件的更新处理的流程图。首先,如果在上次的更新处理中有破损文件,那么MPUll就删除它(步骤S401)。 例如,在更新过程中电源断开时由更新处理生成的文件中含有破损文件(更新未完成的文件)的情况。对这样的破损文件进行删除是步骤S401的处理。因为以文件为单位进行更新处理,如果观察更新状况1305C就明了到哪个文件为止更新处理结束,所以能够检测出更新过程中的文件。然后,MPUll根据更新过程1305B和更新状况1305C来判定更新开始位置(步骤 S402),将更新对象文件的拷贝退避到更新文件暂时退避块1306(步骤S403)。然后,MPUll按照更新过程1305B来对更新对象文件进行更新(步骤S404)。接着,MPUll删除更新数据1305A中的该更新文件(更新文件A、B...),取而代之将更新文件暂时退避块1306中存储的退避文件(更新前的文件)移动到更新数据 1305A(步骤40 。虽然以往备份区域单独存在,在该备份区域中存储了更新前的文件,但在本发明中通过步骤S405,能够节约固件容量。另外,更新文件暂时退避块1306的容量预先决定为嵌入式装置1的最大文件大小。进一步,MPUll判定步骤S404的更新处理中是否有故障(步骤406),当判断有故障时,处理转移到步骤S407,当判断为没有故障时,处理转移到步骤S408。在步骤S407中,MPUll重新起动基础软件(通常或紧急基础软件),图2或图3的处理从最初开始。而在步骤S408中,MPUll对于所有的文件调查更新处理是否结束。当某个文件没有更新完成时,处理返回步骤S403,当所有文件更新完成时,处理转移到S409。在步骤S409中,MPUll对更新状况1305C进行初始化,结束更新处理。当更新处理结束了时, 处理转移到图2的步骤S209或图3(b)的步骤S315。另外,关于从步骤S403到步骤S405的处理,在更新文件暂时退避块1306中存储更新后的文件,之后,删除更新数据中的该文件,取而代之,也可以将更新前的文件移动到更新数据保存区域,将更新后的文件移动到通常固件块中。〈总结〉在本发明的实施方式中,在非易失性存储器内保存有用于读入固件的启动加载程序、在进行通常工作的通常固件和通常固件改写失败时等紧急时工作的紧急用固件、能够从两固件访问的更新程序、仅由通常固件中有变更的文件构成的更新数据、记录有更新方法的更新过程、记录更新过程中经过的更新状况、在文件更新中暂时存储之前的文件或更新后的文件的更新文件暂时退避区域。并且,通过仅由固件中有变更的文件来构成更新数据、将更新文件暂时退避区域设为预先决定的最大文件大小的容量、将更新前的文件存储在该文件更新后更新后文件占有的区域,来将非易失性存储器容量抑制地较小。此外,设定成从通常固件和紧急用这两者能够访问更新所需要的数据的结构,在更新之前将下次启动目标设定为紧急用固件,在更新结束之后将下次启动目标设定为通常固件。由此,当发生更新中的故障时,就能够从发生故障时刻再开始更新,通过退避的更新前文件和从更新过程使操作内容反转而自动生成的新的更新过程,能够返回更新前的状态。进一步,检查在紧急用固件起动中通常固件的启动所需要的文件是否破损。由此, 能够避免在之后通常固件起动时陷入起动失败的系统完全停止的情况。此外,准备虚拟环境实际地确认通常固件能够起动,该虚拟环境是在紧急用固件起动中紧急用固件区域内具备的能够在OS内使其它OS工作的环境。由此,能够避免在之后通常固件起动时陷入起动失败的系统完全停止的情况。此外,从工作中的通常固件进行改写、并且在更新过程中作为对每个更新文件所需的重新起动的对象记录有是系统整体或某服务或都不需要重新起动的情况。由此,能够将系统的停止时间抑制为所需的最小限度。另外,本发明还能够由实现实施方式的功能的软件的程序代码来实现。在这种情况下,将记录了程序代码的存储介质提供给系统或装置,该系统或装置的计算机(CPU或 MPU)读出存储介质中存储的程序代码。此时,从存储介质读出的程序代码本身实现了所述实施方式的功能,该程序代码本身以及记录该程序代码的存储介质构成了本发明。作为用于提供这种程序代码的存储介质,例如使用软盘、CD-ROM、DVD-ROM、硬盘、光盘、光磁盘、 ⑶-R、磁带、非易失性的存储卡、ROM等。此外,还可以根据程序代码的指示,由在计算机上工作的OS (操作系统)等执行实际处理的一部分处理或全部处理,通过该处理实现所述实施方式的功能。进而,还可以将从存储介质读出的程序代码写入计算机上的存储器之后,计算机的CPU等根据该程序代码的指示执行实际处理的一部分处理或全部处理,通过该处理实现所述实施方式的功能。此外,还可以通过经由网络发送实现实施方式的功能的软件的程序代码,将其存储在系统或装置的硬盘或存储器等存储单元或CD-RW、CD-R等存储介质中,在使用时该系统或装置的计算机(CPU或MPU)读出该存储单元或该存储介质中存储的程序代码来进行执行。符号说明1嵌入式装置IlMPU 12RAM 13FR0M 14输入装置15显示装置16通信装置1301启动块1301通常固件块1302更新固件块1303紧急用固件块1304更新程序保存块1305更新数据保存块1306更新文件暂时退避块1301A启动加载程序1302A通常基础软件1302B通常应用软件1303A紧急用基础软件1304A更新程序1305A更新数据1305B更新过程书1305C更新状况
权利要求
1.一种固件更新装置,其具有固件并具备更新该固件的功能,其特征在于,具备 运算处理部,其按照更新程序,以文件为单位执行固件的更新处理;易失性存储器,其暂时保存数据;以及非易失性存储器,其持续地保存数据,所述非易失性存储器保持通常时工作的通常固件、和在包括该通常固件改写失败时的紧急时工作的紧急用固件,所述紧急用固件大小比所述通常固件小,所述紧急用固件仅具有如下功能使所述更新程序成为能够执行的状态,所述运算处理部,当进行所述通常固件的更新处理时,在所述更新处理之前将下次启动目标设定为所述紧急用固件,执行所述更新处理,在所述更新处理之后将下次启动目标设定为所述通常固件。
2.根据权利要求1所述的固件更新装置,其特征在于,所述非易失性存储器具有用于暂时存储更新前的文件的暂时退避区域、和存储更新文件的更新数据区域,所述运算处理部将更新前的文件存储在所述暂时退避区域中,在执行了所述更新处理之后,从所述暂时退避区域删除所述暂时退避区域中存储的所述更新前的文件,并且替换成对应的所述更新文件并存储在所述更新数据区域中。
3.根据权利要求1所述的固件更新装置,其特征在于,所述非易失性存储器具有记载了更新过程的更新过程记载区域、和记载了与构成所述通常固件的各文件有关的更新状况的更新状况记载区域,所述运算处理部按照所述更新过程执行所述更新程序,将更新的日志记述在所述更新状况记载区域中。
4.根据权利要求3所述的固件更新装置,其特征在于,对于构成所述通常固件的各文件,所述更新过程含有当更新处理结束时是否需要重新起动的信息,所述运算处理部在所述更新处理结束后,对需要重新起动的文件进行重新起动。
5.根据权利要求1所述的固件更新装置,其特征在于,所述运算处理部,当起动了所述紧急用固件时,检查所述通常固件的启动中需要的文件有无破损,在执行了所述更新处理之后,将下次启动目标设定为所述通常固件。
6.根据权利要求1所述的固件更新装置,其特征在于,所述运算处理部,在起动了所述紧急用固件时,判断所述通常固件是否能够起动,当能够起动时,将下次启动目标设定为所述通常固件。
7.根据权利要求2所述的固件更新装置,其特征在于,所述运算处理部,当起动了所述紧急用固件时,判断所述通常固件是否能够起动,当不能起动时,使用所述暂时退避区域中存储的更新前的文件来修复所述通常固件使其成为能够起动的状态,然后将下次启动目标设定为所述通常固件。
8.一种固件更新方法,用于在嵌入有固件的嵌入式装置中更新所述固件,其特征在于, 所述嵌入式装置具备运算处理部,其按照更新程序,以文件为单位执行固件的更新处理;易失性存储器,其暂时保存数据;以及非易失性存储器,其持续地保存数据,所述非易失性存储器保持通常时工作的通常固件、和在包括该通常固件改写失败时的紧急时工作的紧急用固件,所述紧急用固件大小比所述通常固件小,所述紧急用固件仅具有如下功能使所述更新程序成为能够执行的状态,所述固件更新方法具备如下步骤所述运算处理部,当进行所述通常固件的更新处理时,在所述更新处理之前将下次启动目标设定为所述紧急用固件,执行所述更新处理,在所述更新处理之后将下次启动目标设定为所述通常固件。
9.根据权利要求8所述的固件更新方法,其特征在于,所述非易失性存储器具有用于暂时存储更新前的文件的暂时退避区域、和存储更新文件的更新数据区域,所述固件更新方法具备如下步骤所述运算处理部将更新前的文件存储在所述暂时退避区域中,在执行了所述更新处理之后,从所述暂时退避区域删除所述暂时退避区域中存储的所述更新前的文件,并且替换成对应的所述更新文件并存储在所述更新数据区域中。
10.根据权利要求8所述的固件更新方法,其特征在于,所述非易失性存储器具有记载了更新过程的更新过程记载区域、和记载了与构成所述通常固件的各文件有关的更新状况的更新状况记载区域,所述固件更新方法具备如下步骤所述运算处理部按照所述更新过程执行所述更新程序,将更新的日志记述在所述更新状况记载区域中。
11.根据权利要求10所述的固件更新方法,其特征在于,对于构成所述通常固件的各文件,所述更新过程含有当更新处理结束时是否需要重新起动的信息,所述固件更新方法具备如下步骤所述运算处理部在所述更新处理结束后,对需要重新起动的文件进行重新起动。
12.根据权利要求8所述的固件更新方法,其特征在于,具备如下步骤所述运算处理部,当起动了所述紧急用固件时,检查所述通常固件的启动中需要的文件有无破损,在执行了所述更新处理之后,将下次启动目标设定为所述通常固件。
13.根据权利要求8所述的固件更新方法,其特征在于,具备如下步骤所述运算处理部,在起动了所述紧急用固件时,判断所述通常固件是否能够起动,当能够起动时,将下次启动目标设定为所述通常固件。
14.根据权利要求9所述的固件更新装置,其特征在于,具备如下步骤所述运算处理部,当起动了所述紧急用固件时,判断所述通常固件是否能够起动,当不能起动时,使用所述暂时退避区域中存储的更新前的文件来修复所述通常固件使其成为能够起动的状态,然后将下次启动目标设定为所述通常固件。
全文摘要
提供一种固件更新装置,其能够将固件保存用的非易失性存储器容量抑制地较小,同时能够应对更新中的故障,并且伴随更新的系统停止时间较短。该固件更新装置构成为能够从通常固件和紧急用固件这两者访问更新需要的数据,具备在将更新期间下次启动目标设定为紧急用固件的单元、把更新前的文件退避到更新文件原先占有的区域的单元、确认在紧急用固件起动中检查通常固件的启动时所需的文件没有破损或者通过虚拟环境能实际起动的单元、通过退避后的更新前文件和根据更新过程使操作内容反转而自动生成的新的更新过程来返回更新前的状态的单元、在更新过程中针对每个更新文件记录必要的重新起动的对象的单元。
文档编号G06F11/00GK102165422SQ20098013747
公开日2011年8月24日 申请日期2009年8月21日 优先权日2008年9月24日
发明者中村雄一, 大浜伸之 申请人:日立系统解决方案有限公司

最新回复(0)