CN1635473A - 判断存储器模块中程序码正确性的方法 - Google Patents

判断存储器模块中程序码正确性的方法 Download PDF

Info

Publication number
CN1635473A
CN1635473A CN 200310124345 CN200310124345A CN1635473A CN 1635473 A CN1635473 A CN 1635473A CN 200310124345 CN200310124345 CN 200310124345 CN 200310124345 A CN200310124345 A CN 200310124345A CN 1635473 A CN1635473 A CN 1635473A
Authority
CN
China
Prior art keywords
condition
value
particular address
code
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN 200310124345
Other languages
English (en)
Inventor
陈炳盛
吴松阳
林晏丞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
MediaTek Inc
Original Assignee
MediaTek Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by MediaTek Inc filed Critical MediaTek Inc
Priority to CN 200310124345 priority Critical patent/CN1635473A/zh
Publication of CN1635473A publication Critical patent/CN1635473A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明公开了一种用于一电子装置中判断一存储器模块中程序码之正确性的方法,该存储器模块包含有一普通固件码区段,该方法包含有:将至少一特定地址所储存之值设定为符合一第一条件;提供一检查指令;以及利用该检查指令检查该至少一特定地址所储存之值;其中,该电子装置在启动时依据该检查指令,检查该至少一特定地址之值是否符合该第一条件,以判断该普通固件码区段中之程序码的正确性。

Description

判断存储器模块中程序码正确性的方法
技术领域
本发明涉及一种判断存储器模块中程序码正确性的方法,尤指一种用于在电子装置中判断存储器模块中程序码正确性的方法。
背景技术
微处理器与存储器等电子元件在现今信息化世界中占有极为重要之角色,并已被广泛的应用在各种不同领域的电子产品上。以DVD Player及个人电脑用之CD-ROM、CD-RW、DVD-ROM光盘机等电子产品为例,其运作方式皆是以一微处理器执行一储存于非挥发性(Non-Volatile)存储器(如FLASH、ROM)上之程序码(Program Code),并配合特殊设计之应用集成电路(Application Specific Integrated Circuit,ASIC)来处理储存于一挥发性(Volatile)存储器(如DRAM、SRAM)中的一般数据。
微处理器以执行程序码(Program Code)来维持系统之运作,而储存于该非挥发性存储器上之程序码又称为固件程序码(Firmware Code)。许多应用产品之固件码基于功能增加、改良或除错之故,可能需要不定期更新,此更新之动作通称为固件更新(Firmware Update)。
固件更新时最大的风险是当进行固件更新动作时,可能因断电或不当操作等原因而造成更新动作失败。而固件更新动作失败有可能造成系统无法正常运作,甚至于无法通过再次进行固件更新的动作来恢复系统正常功能。为防止上述情形发生,公知技术在更新固件时多使用一种通称为“系统引导码防护”(Boot Code Protection)的方法来解决。公知技术通常将一非挥发性存储器分成两个部份,一是引导码区段(Boot Code Section),用来存放系统引导码(Boot Code),另一部份则是普通固件码区段(NormalFirmware Section),用来存放其它固件码。系统引导码是固件程序码的一部份,每次系统启动(Power on)或重开机(Reboot)时,固件码当中最先被执行的一段程序码便是系统引导码。一般而言,固件更新时是更新该普通固件码区段中的程序码,而不会变更该引导码区段中的系统引导码。
倘若固件更新失败,则在重开机(Reboot)后经过特定的固件码判断程序,系统便会执行系统引导码区段当中的系统引导码,完成开机所需的指令。如此一来,即使固件更新失败,系统仍可通过执行系统引导码的方式重新启动,以重新进行固件更新的程序。
然而,在公知技术中,固件码的判断程序不是通过电路的接脚设计来判断,便是预先在非挥发性存储器内复制一份相同的比对程序码,并于重开机后检查固件程序码的校验和(Checksum),并与该比对程序码的校验和进行比对。通过比对两者的校验和是否相同,以判断更新后的固件码之正确性。
由上述可知,公知技术的固件码正确性之判断程序,需要额外的存储器空间存放供比对用的固件码,增加了硬件的成本。而且系统每次判断时都需要计算与比对现有固件程序码与比对程序码两者的校验和,不仅影响系统启动的效率,校验和检查法的正确性也不够完善。
发明内容
因此,本发明的目的在于提供一种用于在电子装置中判断存储器模块中程序码正确性的方法,通过检查至少一特定地址所储存之值是否符合一预设条件的方式,判断该存储器模块当中程序码的正确性,以解决上述问题。
本发明提供一种用于在电子装置中判断一存储器模块中程序码正确性的方法,该存储器模块包含有一普通固件码(Normal Firmware Code)区段,该方法包含有:将至少一特定地址所储存之值设定为符合一第一条件;提供一检查指令;以及利用该检查指令检查该至少一特定地址之值;其中该电子装置于启动时系依据该检查指令,检查该至少一特定地址之值,若该至少一特定地址所储存之值符合一第二条件,表示该普通固件码区段中之程序码有误;若该至少一特定地址所储存之值符合该第一条件,表示该普通固件码区段中之程序码正确无误。
本发明判断该存储器模块中程序码之正确性的方法之一优点,在于该电子装置不需要额外的存储器空间来储存另一份比对用的固件程序码,因而可降低系统对存储器空间的需求以及电路成本。
本发明判断该存储器模块中程序码之正确性的方法之另一优点,在于可提升该电子装置判断其固件程序码正确性的效率与精确性,而可依设计的需要弹性地调整判断的条件。
本发明的另一目的在于,提供一种用于在电子装置中更新存储器模块中程序码的方法,该存储器模块包含有一普通固件码区段,该方法包含有:将至少一特定地址所储存之值设定为符合一第二条件;以一第二程序码取代该普通固件码区段当中所包含之一第一程序码;以及将该至少一特定地址所储存之值设定为符合一第一条件。
本发明之电子装置更新该存储器模块中之程序码的方法之优点在于,该电子装置进行程序码更新的过程中,仅需对该至少一特定地址作简单的设定,不需备份比对用的程序码,亦不需复杂的程序码更新程序。
本发明的又一目的为,提供一种用于一电子装置启动时执行一存储器模块中之程序码的方法,该存储器模块包含有一普通固件码区段,该方法包含有:利用该电子装置检查至少一特定地址所储存之值;若该至少一特定地址所储存之值符合一第二条件,该电子装置会执行一引导码区段内之程序码而不执行该普通固件码区段内之程序码;以及若该至少一特定地址所储存之值符合一第一条件,该电子装置会执行该普通固件码区段内之程序码。
本发明之电子装置启动时执行该存储器模块中之程序码的方法之优点,在于该电子装置仅需检查该至少一特定地址之值,而不需要对该普通固件码区段之程序码作校验和的运算与比对,具有简单、迅速的特性。
附图说明
图1为本发明之一非挥发性存储器的示意图。
图2为本发明用于电子装置更新固件程序码的方法之一实施例流程图。
图3为本发明之另一非挥发性存储器的示意图。
图4为本发明用于在电子装置中判断固件程序码之正确性的流程图。
图5为本发明用于在电子装置启动时执行固件程序码的方法之流程图。
附图标记说明
100、300        非挥发性存储器
110、310         引导码区段
120、320         普通固件码区段
130、330、340    数据
具体实施方式
在实作上,本领域技术人员可利用包含有一个以上非挥发性存储器的存储器模块来储存固件程序码,而为了方便说明本发明之实施例,以下以将固件程序码储存于单一非挥发性存储器中为例。本领域技术人员可依据以下本发明的技术公开,应用一包含有多个非挥发性存储器的存储器模块来达成本发明之功效。
请参考图1。图1为本发明用以储存固件程序码之一非挥发性存储器的示意图100。非挥发性存储器100中的存储器空间包含有一引导码区段110,用以储存系统引导码(Boot Code);以及一普通固件码区段120,用以储存其它的固件程序码。普通固件码区段120中包含有位于第一地址的第一内容130,该第一地址是可预先选定的普通固件码区段120中的任何地址。第一内容130的数据长度并不限定于某一特定长度,只要能达成本发明之目的,任何长度(包括一位)的第一内容130均属于本发明之应用范围。不过第一内容130的数据长度越长就会占用普通固件码区段120越多的存储器空间。在本发明之一较佳实施例中,第一内容130的数据长度仅需使用一个字节。本发明之判断固件程序码正确性的方法将于稍后讨论,以下先以流程图方式说明本发明于一电子装置(例如电脑、光盘机、刻录器、影音播放器、数码相机、印表机、扫描器、其它外围设备或具有固件程序码之电子元件,例如数字信号处理器(Digital Signal Processor)等更新固件程序码的方法。
请参考图2,图2为本发明于一电子装置更新固件程序码的方法之一实施例流程图200。流程图200中包含有以下步骤:
步骤202:开始。电子装置准备以更新用的程序码取代普通固件码区段中原先的第一程序码Program_X。
步骤204:将至少一特定地址之值设定为符合一第二条件。
步骤206:以该更新用的程序码取代普通固件码区段中之该第一程序码Program_X。
步骤208:将该至少一特定地址之值调整为符合一第一条件。
步骤210:结束。该电子装置完成固件更新的动作。
以下以流程图200说明本发明之一较佳实施例之运作方式,在此假设步骤208中所谓的该第一条件,为表示非挥发性存储器100之普通固件码区段120中第一地址所储存之第一内容130为预设值,例如01;而步骤204中所谓的该第二条件,为表示该第一地址所储存之第一内容130为该预设值(01)以外的值,例如02、03、或FF等等。
当该电子装置以一更新用的第二程序码Program_A取代普通固件码区段120中原先之该第一程序码Program_X前,位于该第一地址之第一内容130的初始值,可以是任意值,亦可为一符合该第一条件之值。在本发明之一较佳实施例中,第一内容130之初始值,在该第二程序码Program_A取代该第一程序码Program_X前,符合该第一条件之要求,亦即第一内容130为01。
在步骤204中,该电子装置在利用该第二程序码Program_A取代该第一程序码Program_X前,会先清除该第一地址所储存之第一内容130,使第一内容130变成FF以符合该第二条件的要求。同理,该电子装置亦可以写入除了该预设值(01)以外之一特定值(例如AA)至该第一地址的方式,将第一内容130变成AA,以符合该第二条件的要求。
接下来在步骤206中,该电子装置便会以该第二程序码Program_A取代该第一程序码Program_X,以更新普通固件码区段120中的程序码内容。
完成步骤206的程序码取代动作后,该电子装置会写入01至普通固件码区段120中之该第一地址,使第一内容130满足该第一条件的要求,以完成整个固件更新的程序。
换言之,本发明之固件更新方法于进行固件更新程序之初,便将原先符合该第一条件的第一内容130变更成符合该第二条件,亦即将第一内容130所储存之值由01变更成01以外的值(如FF或AA);并于固件更新程序的最后一个步骤中,将第一内容130的值变更成01。如此一来,在完成固件更新的程序后,第一内容130又会符合该第一条件的要求。
由前述流程图200的运作说明可知,在本发明之固件更新方法中,普通固件码区段120中该第一地址所储存之第一内容130,为提供一状态纪录的功能。因此,第一内容130所纪录之值便可作为判断固件更新程序是否成功的依据。
倘若在进行固件更新的程序中因任何原因造成固件更新失败,则该电子装置重新启动后,仅需检查普通固件码区段120中之第一内容130是否符合该第一条件,便可迅速地判断出普通固件码区段120中的固件更新程序是否完成。若第一内容130不符合该第一条件而系符合该第二条件,亦即第一内容130并非01,而是FF、AA或其它01以外的值,则表示普通固件码区段120的固件更新程序失败,因而推定普通固件码区段120中的程序码可能有错误。反之,若第一内容130符合该第一条件,亦即第一内容130所储存的值为01,则推定普通固件码区段120中的程序码没有错误。
一旦该电子装置推定普通固件码区段120中的程序码可能有误,则该电子装置会仅执行引导码区段110中的程序码,亦即系统引导码,来执行开机所需的指令,而不会执行普通固件码区段120中的程序码,以避免造成装置故障或不能运作的情形。如此一来,该电子装置便可重新进行步骤204至步骤208的固件更新程序。
请注意,在一般进行固件更新的过程中,会将更新用的固件程序码,亦即前述的该第二程序码Program_A,先暂存于一缓冲存储器(如一DRAM),然后再写到非挥发性存储器100之普通固件码区段120中,以取代该第一程序码Program_X。
因此,步骤208的实际进行方式,可在该电子装置将该缓冲存储器中的该第二程序码Program_A载入到非挥发性存储器100之后进行。在本发明的固件更新方法的另一实施例中,可将该缓冲存储器中相对应于该第一地址的值(01)先备妥,然后随着该第二程序码Program_A一同载入到非挥发性存储器100中。如此一来,流程图200中的步骤208便相当于是与步骤206一起进行。
甚至,在该更新用的程序码Program_A的原始码Source_A中,便可附加欲写入普通固件码区段120之该第一地址的值01至该原始码Source_A后端的适当位置。如此一来,当该电子装置将该原始码编译后所产生的第三程序码Program_A1写入非挥发性存储器100时,便会一并将普通固件码区段120中之第一内容130的值变更为符合该第一条件,而不需以另外的数据写入步骤将01的值写入到该第一地址以变更第一内容130。
如前所述,在步骤204中该电子装置系可以清除该第一地址所储存之第一内容130,使第一内容130变成FF以符合该第二条件的要求,或是写入除了该预设值01以外的一特定值(例如AA)至该第一地址的方式,将第一内容130变成AA以符合该第二条件的要求。
另外,若该电子装置以写入一特定值(例如AA)至该第一地址的方式,将第一内容130变成AA以符合该第二条件的要求,则该电子装置亦可在该第二程序码Program_A尚暂存于该缓冲存储器中,还未载入到普通固件码区段120前,先将该缓冲存储器中相对于该第一地址之值变更为该特定值AA。如此一来,相当于步骤204与步骤206可结合成单一步骤。亦即该电子装置可一并将该特定值AA与该第二程序码Program_A载入至普通固件码区段120中,而不需要分成两个步骤进行。
同理,本发明之固件更新方法亦可于编译该原始码Source_A时,将该特定值AA置于该原始码Source_A前端的适当位置,并一并编译成一第四程序码Program_A2。如此一来,当该电子装置将该第四程序码Program_A2载入普通固件码区段120时,便会同时将该第一内容130变更成符合该第二条件的状况。相当于步骤204与步骤206可结合成单一步骤。
更进一步来说,于本发明之固件更新方法之另一实施例中,亦可将该特定值AA置于该原始码Source_A前端的适当位置,并将该预设值01置于该原始码Source_A后端的适当位置,然后将三者(该特定值AA、该原始码Source_A及该预设值01)一并编译成一第五程序码Program_A3。很明显地,在该电子装置以该第五程序码Program_A3取代该第一程序码Program_X的过程之初,普通固件码区段120中该第一地址所纪录的第一内容130,会先由符合该第一条件的01变成符合该第二条件的AA;而在该电子装置以该第五程序码Program_A3取代该第一程序码Program_X的之最后过程中,第一内容130又会由符合该第二条件的AA变更为符合该第一条件的01。
最后,当该电子装置成功完成本发明所公开的固件更新程序后,普通固件码区段120中该第一地址所纪录的第一内容130,会是符合该第一条件的01。
因此,不论前述第一内容130之值,是由一更新用的程序码(例如前述之Program_A1、Program_A2或Program_A3)所设定,亦或是该电子装置在载入一更新用的程序码(例如前述之Program_A、Program_A1或Program_A2)至普通固件码区段120之前或之后所设定,只要在固件更新的过程中应用普通固件码区段120中的至少一特定位置,以纪录与固件更新状态有关的一特定值或一变数,均涵盖于于本发明之固件更新方法的架构之中。
以上说明本发明之固件更新方法的过程中,是以普通固件码区段120中一特定地址所储存之值(亦即该第一地址所储存之第一内容130)为例,说明于固件更新的过程中该特定地址所储存之值的变化情形。请注意,本发明之固件更新方法并不限定于仅能使用一特定地址所储存之值来代表固件更新时的状态。在实际应用上,亦可使用两个或两个以上的特定地址,来储存相同长度或不同长度的数据,以提供关于固件更新状态的相关信息。理所当然,此时该第一条件与该第二条件的设定也要随之作对应的修改。
请参考图3。图3为本发明用以储存固件程序码之另一非挥发性存储器的示意图300。非挥发性存储器300中的存储器空间包含有一引导码区段310,用以储存系统引导码;以及一普通固件码区段320,用以储存其它的固件程序码。普通固件码区段320中包含有位于第二地址的第二内容330,以及位于第三地址的第三内容340,该第二地址与该第三地址是可预先选定的普通固件码区段320中的任何地址。另外,第二内容330与第三内容340的数据长度可以相同,亦可以不同。在这样的情况下,该第一条件与该第二条件的设定需要作适当的修改。
在本发明之一实施例中,系设定该第一条件为第二内容330与第三内容340两者之内容均为相同的预设值,例如01;而该第二条件系为第二内容330与第三内容340两者之值中有一个不是该预设值。在这样的条件设定下,不论将第二内容330与第三内容340均变更为第二值,例如BB,或是仅将第二内容330与第三内容340两者的其中之一变更为该第二值BB,都符合该第二条件的要求。甚至,将第二内容330变更为该第二值BB,而将第三内容340变更为第三值CC的情况,亦符合该第二条件之要求。
在本发明之另一实施例中,设定该第一条件为第二内容330与第三内容340两者之内容系为相同之任何值,例如两者均为11或均为22;而该第二条件系为第二内容330与第三内容340两者之值不相同,例如第二内容330为11,而第三内容340为22。很明显地,在这样的条件设定下,若将第二内容330与第三内容340均变更为该第二值BB,则会符合该第一条件而不符合该第二条件。
请注意,本发明之固件更新方法对于该第一条件与该第二条件之设定方式,并不限定于上述两种方式。在本发明之固件更新方法中,该第一条件或该第二条件亦可设定为对第二内容330与第三内容340进行运算后的结果。在实际应用上,只要将该第一条件与该第二条件作相对应的设定,以利用普通固件码区段120中一个以上的特定地址所储存之值,来提供关于固件更新状态的相关信息,均属于本发明之固件更新方法的应用范围。甚至,在本发明之一较佳实施例中,亦可于设定该第一条件之要求后,单纯地将该第二条件设定为该第一条件之互斥条件。亦即,除了该第一条件所设定之要求以外的状况均属于该第二条件之范围。
由于本发明之固件更新方法应用于使用非挥发性存储器300的电子装置时所进行的步骤,与本发明之方法应用于使用非挥发性存储器100的电子装置时相类似。因此,同样以流程图200说明本发明之固件更新方法应用于使用非挥发性存储器300之该电子装置时的运作情形。
如前所述,在本发明之一较佳实施例中,设定该第一条件为第二内容330与第三内容340两者都为相同的预设值,而该第二条件为该第一条件之互斥条件,亦即该第二条件为第二内容330与第三内容340并非均为该预设值。该预设值可以是任意值,在以下的说明中举01为例。
当该电子装置以一更新用的第六程序码Program_B取代普通固件码区段320中原先之该第一程序码Program_X前,位于该第二地址之第二内容330与位于该第三地址之第三内容340两者之初始值,可以是任意组合,亦可符合该第一条件之要求。为了说明上的方便,以下假设第二内容330与第三内容340之初始值,在该更新用的程序码Program_B取代该第一程序码Program_X前,符合该第一条件之要求,亦即两者均为01。
在步骤204中,该电子装置于使用该第六程序码Program_B取代该第一程序码Program_X前,会先将第二内容330与第三内容340的值变更为符合该第二条件。此时,该电子装置可以只将第二内容330与第三内容340的其中之一变更成01以外的值,亦可将两者均变更为01以外的值。接下来该电子装置便会进行步骤206,以该第六程序码Program_B取代该第一程序码Program_X。
当该第六程序码Program_B完全取代该第一程序码Program_X后,该电子装置会进行步骤208,将第二内容330与第三内容340的值变更为符合该第一条件,亦即使两者均成为01。
同理,在步骤204中,该电子装置将第二内容330与第三内容340的值变更为符合该第二条件的方式,亦不限定于必须在载入该第六程序码Program_B至普通固件码区段320前,写入01以外的值至该第二地址或该第三地址。实际上,该电子装置可将该缓冲存储器中相对应于该第二地址的值先变更为01,然后随着该第六程序码Program_B一同载入到非挥发性存储器300中。
甚至,本发明之固件更新方法亦可在编译该更新用的第六程序码Program_B之原始码Source_B时,将01以外的任意值(例如AA)置于该原始码Source_B前端的适当位置,并一并编译成一第七程序码Program_B1。如此一来,当该电子装置将该第七程序码Program_B1载入普通固件码区段320时,便会同时将该第二内容330变更成AA以符合该第二条件的状况。相当于步骤204与步骤206可结合成单一步骤。
同样地,在步骤208中,该电子装置将第二内容330与第三内容340的值变更为符合该第一条件的方式,亦不限定于必须在载入该第六程序码Program_B至普通固件码区段320后,写入01至该第二地址及该第三地址。实际上,该电子装置可将该缓冲存储器中相对应于该第二和第三地址的值先变更为01,然后随着该第六程序码Program_B一同载入到非挥发性存储器300中。如此一来,在该第六程序码Program_B取代该第一程序码Program_X前,符合该第二条件之第二内容330与第三内容340,在该第六程序码Program_B取代该第一程序码Program_X之后,又会变成符合该第一条件。
在本发明之另一实施例中,该电子装置在步骤204中系清除该第三地址所储存之值,使第三内容340变为FF,并可在编译该更新用的第六程序码之原始码Source_B时,将数值01置于该原始码Source_B后端的适当位置,并一并编译成一第八程序码Program_B2。如此一来,当该电子装置将该第八程序码Program_B2载入普通固件码区段320时,便会同时将该第三内容340变更成01以符合该第一条件的状况。
另外,在实作上亦可选择普通固件码区段320中最前端的位置作为该第二地址,而最后端的位置作为该第三地址,并且利用第二内容330与第三内容340来记录普通固件码区段320中该第一程序码Program_X之版本信息。此时,本发明之固件更新方法可设定该第一条件为第二内容330与第三内容340两者之内容均为相同之任何值,而该第二条件为第二内容330与第三内容340两者之值不相同。而固件厂商在编译该更新用之程序码的原始码Source_B时,便可在该原始码Source_B之前后分别附加该原始码Source_B的版本信息,然后将该原始码Source_B与附加的版本信息一并编译成一第九程序码Program_B3。
如此一来,该电子装置在进行固件更新时,仅需以该第九程序码Program_B3取代该第一程序码Program_X,便可达成本发明之目的。
由上述可知,本发明之固件更新方法的一项重要技术特征,在于进行固件更新的过程中,会改变非挥发性存储器中至少一特定地址所储存之值,使得该至少一特定地址所储存之值,在固件更新的过程中与固件更新完成后会符合不同的条件状况,以提供一种关于固件更新状态的参考信息。
请注意,在前述说明中利用非挥发性存储器100(或300)之普通固件码区段120(或320)中的至少一特定地址,来说明本发明之不同实施例,此仅为了方便说明,而非限定本发明之应用范围。在本发明之实际应用上,本领域的技术人员亦可利用该电子装置中,除了非挥发性存储器100(或300)之外的一个或一个以上额外的非挥发性存储器(如FLASH或EEPROM等等),来记录固件更新过程中的相关信息。亦即,该至少一特定地址可均位于该额外的非挥发性存储器之存储器空间中。甚至,本发明之固件更新方法亦可同时利用非挥发性存储器100(或300)之普通固件码区段120(或320)中的部分存储器地址,以及除了非挥发性存储器100(或300)之外的一个或一个以上额外的非挥发性存储器(如FLASH或EEPROM等等)中的部分存储器地址,来共同记录关于固件更新状态的参考信息。
相较于公知技术,本发明所提出之电子装置更新固件码的方法的优点,在于该电子装置进行固件更新的过程中,仅需对该至少一特定地址作简单的设定,不需备份一份比对用的程序码,亦不需复杂的固件码更新程序。
请参考图4。图4为本发明于一电子装置中判断固件程序码之正确性的流程图400。流程图400包含有以下步骤:
步骤402:开始。
步骤404:提供一检查指令于引导码区段中。
步骤406:利用该电子装置执行引导码区段中之该检查指令。
步骤408:判断至少一特定地址之值是否符合一预设条件。
步骤410:结束。
如前所述,在实作上可利用包含有一个以上非挥发性存储器之一存储器模块来储存该电子装置之固件程序码,而为了方便说明流程图400的运作情形,以下举图3中的非挥发存储器300作为储存固件程序码的例子。本领域的技术人员可将本发明应用于一包含有多个非挥发性存储器的存储器模块。
由前述关于本发明之固件更新方法的说明中可以发现,倘若该电子装置于进行固件更新的过程中发生错误,以致于固件更新的动作不完全,因而导致普通固件码区段320中的部分内容已经被该更新用的程序码所取代,但有部分内容仍为该第一程序码Program_X原先的内容。在这样的情况下,只要检查普通固件码区段320中该第二地址所储存之第二内容330与该第三地址所储存之第三内容340系符合该第一条件或该第二条件,便可判断出上一次进行的固件更新动作是否完全,进而判断出普通固件码区段320中程序码的正确性。
因此,在步骤404中,固件厂商便可加入一检查指令至非挥发性存储器300中,用以检查普通固件码区段320中之该第二地址与该第三地址所储存之内容(即第二内容330与第三内容340),系符合一预设的条件(例如该第一条件)或其它的条件(例如该第二条件)。在本发明之一较佳实施例中,该第二条件被设定为该第一条件之互斥条件。为了避免该检查指令在固件更新的过程中受到破坏,在本发明之一较佳实施例中,在系统引导码(Boot Code)中加入该检查指令。
在步骤406中,该电子装置可在每次启动时、固件更新失败后重新开机时、固件更新动作完成时、或其它情况下需要时执行该检查指令,以检查普通固件码区段320中该第二地址所储存之值(第二内容330)与该第三地址所储存之值(第三内容340)。
接着在步骤408中,该电子装置会判断第二内容330与第三内容340是否符合该第一条件,若是,则推定前一次所进行的固件更新动作是成功的,亦即普通固件码320中的程序码是正确的;反之,若第二内容330与第三内容340系符合该第二条件,则推定上一次进行的固件更新动作不完全,亦即普通固件码320中的程序码有错误。
如前所述,若该电子装置应用前述本发明之固件更新方法进行固件更新时,仅使用了单一特定地址(例如图1中之该第一地址)作为纪录固件新状态之用,则在本发明之固件正确性的判断方法中,步骤404所提供之该检查指令亦仅需检查该第一地址所纪录之值便可。
因此,该检查指令所欲检查的地址数目与查核的条件内容,均视该固件的设计而定,并不限定于前述说明中所举例的使用一个或两个地址的情况。在实际应用上亦可使用两个以上的地址来储存所欲查核的内容。
请注意,由于本发明可利用除了非挥发性存储器300以外的一个或一个以上额外的非挥发性存储器(如FLASH或EEPROM等等),来记录固件更新过程中的相关信息。或是同时利用非挥发性存储器300之普通固件码区段320中的部分存储器地址,以及除了非挥发性存储器300之外的一个或一个以上额外的非挥发性存储器(如FLASH或EEPROM等等),来共同记录关于固件更新状态的参考信息。因此,固件厂商于步骤404中所提供的该检查指令之内容,系可依据该电子装置预设的固件程序码更新方式而调整。
例如,该电子装置在进行固件程序码的更新过程中,若同时利用非挥发性存储器300之普通固件码区段320中的部分存储器地址,以及除了非挥发性存储器300之外的一个或一个以上额外的非挥发性存储器(如FLASH或EEPROM等等),来共同记录关于固件更新状态的参考信息,则该检查指令所指定的检查内容,便会包含非挥发性存储器300中的部分存储器地址以及该额外的非挥发性存储器。如此一来,该电子装置于步骤408中,会依据该检查指令检查分属普通固件码区段320以及该额外的非挥发性存储器中的该至少一特定地址之值,是否符合该预设条件,以作为判断该固件之正确性的依据。
相较于公知技术判断一固件码之正确性时,由于需对该固件之程序码进行校验和的计算,并将计算所得之结果与一比对固件码之校验和相比较,因而判断的效率与固件程序码的长度成反比。很明显地,本发明之固件正确性的判断方法比公知技术更为简单也更有效率。若固件码的容量越大,则公知技术计算校验和的时间也就会相对增加,与本发明所提出之判断方法两者间的效率差距亦会越明显。
而且,本发明所公开的判断一固件码之正确性的方法,由于不需要额外的存储器空间储存另一份比对用的普通固件码,故可降低对存储器空间的需求以及电路成本。
一般而言,固件正确性的判断并不仅于固件更新后进行,而是该电子装置每一次启动时都需要进行,以依据判断的结果选择该电子装置该次启动时所应执行的固件码。因此,本发明亦提出一种在一电子装置启动时执行一固件的方法。
请参考图5。图5为本发明在一电子装置启动时执行一固件程序码的方法之流程图500。流程图500中包含有以下步骤:
步骤502:开始。
步骤504:检查至少一特定地址之值。
步骤506:判断该至少一特定地址之值是否符合一预设条件。若是,则进行步骤508;若否,则进行步骤510。
步骤508:该电子装置可执行普通固件码区段之程序码。
步骤510:该电子装置会执行引导码区段之程序码,而不会执行普通固件码区段之程序码。
步骤512:结束。该电装置依据所执行之程序码进行启动程序。
本发明之电子装置执行固件码的方法与前述本发明之判断固件码正确性的方法很类似。亦即,实作上该至少一特定地址可均位于用来储存该固件程序码之一非挥发性存储器模块中,或均位于除了该非挥发性存储器模块之外的一个或一个以上额外的非挥发性存储器(如FLASH或EEPROM等等)中。甚至,该至少一特定地址亦可包含有该存储器模块之普通固件码区段中的部分存储器地址以及该额外的非挥发性存储器中的存储器地址。为方便说明流程图500的运作情形,以下同样举图3中的非挥发存储器300作为例子。
在步骤504中,该电子装置于启动时会检查普通固件码区段320中该第二地址与该第三地址之值。于本发明之一较佳实施例中,该电子装置系于启动时执行引导码区段310中之一检查指令,并依据该检查指令检查普通固件码区段320中该第二地址与该第三地址之值。步骤504之说明与前述步骤406相似,为简洁起见,在不影响本发明之技术揭露下,不予赘述。
同理,该检查程式之内容亦可为检查普通固件码区段320中单一特定地址所储存之值是否符合一预设条件。于实际应用上,该检查指令所欲检查的地址数目与查核的条件内容,端视该固件的设计而定。
接着,在步骤506中,该电子装置会判断第二内容330与第三内容340是否符合该第一条件,若是,则推断前一次所进行的固件更新动作是成功的,亦即普通固件码320中的程序码是正确的,则该电子装置会进行步骤508;反之,若第二内容330与第三内容340不符合该第一条件,则推断上一次进行的固件更新动作不完全,亦即普通固件码320中的程序码有错误,则该电子装置会进行步骤510。
在步骤508中,由于该电子装置依据该检查指令判断后,推定普通固件码320中的程序码系正确无误,因此,该电子装置可执行普通固件码区段320中之程序码,以进行正常启动程序。
在步骤510中,由于该电子装置推定普通固件码320中的程序码有误,因此,该电子装置仅会执行引导码区段310中的系统引导码进行启动程序,而不会执行普通固件码区段320中之程序码。因此,在本发明所公开的在电子装置启动时执行固件的方法中,该电子装置便可避免因为误执行普通固件码区段320中有错误的程序码,而造成该电子装置进一步毁损的情形。更重要的是由于该电子装置可藉由执行引导码区段310中的系统引导码而启动,使得该电子装置可重新进行一次固件更新的程序,以修正普通固件码区段320中程序码错误的情形。
相较于公知技术中,一电子装置于启动时需对其固件码进行计算校验和之演算,不但会影响系统执行的效率,亦可能因为校验和演算法的不精确,使得该电子装置因为误执行了有误的程序码,而造成进一步损坏甚至无法重新进行固件更新的情形。很明显地,本发明所公开的在电子装置启动时执行一固件码之方法的优点,在于该电子装置仅需检查该至少一特定地址之值,而不需要对该普通固件码区段之程序码作校验和的运算与比对,具有简单、迅速的特性,可提升该电子装置启动时的效率。
以上所述仅为本发明之较佳实施例,凡依本发明申请专利范围所做之均等变化与修饰,皆应属本发明专利的涵盖范围。

Claims (42)

1.一种用于在电子装置中更新存储器模块中的程序码的方法,该存储器模块包含有一普通固件码区段,该方法包含步骤:
将至少一特定地址所储存的值设定为符合一第二条件;
以一第二程序码取代该普通固件码区段当中所包含的第一程序码;以及
设定该至少一特定地址所储存的值,以使该普通固件码区段中的程序码更新完成时该至少一特定地址所储存的值符合一第一条件。
2.如权利要求1所述之方法,其中,所述至少一特定地址所储存的值,是作为判断所述普通固件码区段中程序码更新后之正确性的依据。
3.如权利要求1所述之方法,其中,所述第一条件为:
所述至少一特定地址所储存的值为一第一值。
4.如权利要求1所述之方法,其中,所述第一条件为:
所述至少一特定地址所储存的值为一特定组合。
5.如权利要求1所述之方法,其中,所述第一条件为:
所述至少一特定地址所储存的值均为相同的值。
6.如权利要求1所述之方法,其中,所述第一条件为:
所述至少一特定地址所储存的值经运算后为一特定值。
7.如权利要求1所述之方法,其中,所述第二条件为该第一条件之互斥条件。
8.如权利要求1所述之方法,其中,所述至少一特定地址为包含有至少一非挥发性存储器中的部分存储器地址。
9.如权利要求1述之方法,其中,所述至少一特定地址为包含有所述普通固件码区段中的部分存储器地址。
10.如权利要求1所述之方法,其中,所述至少一特定地址为包含有除了该存储器模块外的至少一非挥发性存储器以及所述普通固件码区段中的部分存储器地址。
11.如权利要求1所述之方法,其中,所述电子装置为一光盘机。
12.一种用于电子装置启动时执行存储器模块中的程序码的方法,该存储器模块包含有一普通固件码区段,该方法包含有:
利用该电子装置检查至少一特定地址所储存之值;
若该至少一特定地址所储存之值符合一第二条件,则该电子装置执行引导码区段内的程序码而不执行该普通固件码区段内的程序码;以及
若该至少一特定地址所储存之值符合一第一条件,则该电子装置执行该普通固件码区段内的程序码。
13.如权利要求12所述之方法,其中,还包含利用所述电子装置执行一检查指令,以检查所述至少一特定地址所储存之值。
14.如权利要求13所述之方法,其中,所述检查指令储存在该存储器模块的所述引导码区段中。
15.如权利要求12所述之方法,其中,所述至少一特定地址所储存之值若符合所述第二条件,则表示所述固件的所述普通固件码区段中的程序码有误。
16.如权利要求12所述之方法,其中,所述至少一特定地址所储存之值若符合所述第一条件,则表示所述固件的所述普通固件码区段中的程序码正确无误。
17.如权利要求12所述之方法,其中,所述第一条件为:
所述至少一特定地址所储存之值为一第一值。
18.如权利要求12所述之方法,其中,所述第一条件为:
所述至少一特定地址所储存之值为一特定组合。
19.如权利要求12所述之方法,其中,所述第一条件为:
所述至少一特定地址所储存之值均为相同之值。
20.如权利要求12所述之方法,其中,所述第一条件为:
所述至少一特定地址所储存之值经运算后为一特定值。
21.如权利要求12所述之方法,其中,所述第二条件为所述第一条件之互斥条件。
22.如权利要求12所述之方法,其中,所述至少一特定地址包含有至少一非挥发性存储器中的部分存储器地址。
23.如权利要求12所述之方法,其中,所述至少一特定地址包含有所述普通固件码区段中的部分存储器地址。
24.如权利要求12所述之方法,其中,所述至少一特定地址包含有除了该存储器模块外的至少一非挥发性存储器以及该普通固件码区段中的部分存储器地址。
25.如权利要求12所述之方法,其中,所述电子装置为一光盘机。
26.一种用于在电子装置中判断存储器模块中程序码正确性的方法,该存储器模块包含有一普通固件码区段,该方法包含有:
将至少一特定地址所储存之值设定为符合一第一条件;
提供一检查指令;以及
利用该检查指令检查该至少一特定地址之值;
其中,该电子装置在启动时依据该检查指令,检查该至少一特定地址之值,若该至少一特定地址所储存之值符合一第二条件,表示该普通固件码区段中之程序码有误;若该至少一特定地址所储存之值符合该第一条件,表示该普通固件码区段中之程序码正确无误。
27.如权利要求26所述之方法,其中,还包含储存该检查指令于该存储器模块之一引导码区段中。
28.如权利要求26所述之方法,其中,还包含有:
若所述普通固件码区段中之程序码有误,则所述电子装置执行所述存储器模块的一引导码区段内的程序码,而不执行该普通固件码区段内的程序码。
29.如权利要求26所述之方法,其中,还包含有:
若所述普通固件码区段中之程序码正确无误,则该电子装置执行该普通固件码区段内之程序码。
30.如权利要求26所述之方法,其中,还包含有:
在进行该存储器模块中的程序码更新动作时,利用该电子装置以一第二程序码取代所述普通固件码区段当中所包含之一第一程序码。
31.如权利要求30所述之方法,其中,所述存储器模块之一引导码区段当中的程序码,在该存储器模块中的程序码更新的过程中,并不会被变更。
32.如权利要求30所述之方法,其还包含有:
在进行该存储器模块中的程序码更新动作之初,将所述至少一特定地址所储存之值设定为符合该第二条件。
33.如权利要求32所述之方法,其还包含有:
设定所述至少一特定地址所储存之值,以使该至少一特定地址所储存之值在所述存储器模块中的程序码更新完成时符合所述第一条件。
34.如权利要求26所述之方法,其中,所述第一条件为:所述至少一特定地址所储存之值为一第一值。
35.如权利要求26所述之方法,其中,所述第一条件为:所述至少一特定地址所储存之值为一特定组合。
36.如权利要求26所述之方法,其中,所述第一条件为:所述至少一特定地址所储存之值均为相同之值。
37.如权利要求26所述之方法,其中,所述第一条件为:所述至少一特定地址所储存之值经运算后为一特定值。
38.如权利要求26所述之方法,其中,所述第二条件系为所述第一条件之互斥条件。
39.如权利要求26所述之方法,其中,所述至少一特定地址包含有至少一非挥发性存储器中之部分存储器地址。
40.如权利要求26所述之方法,其中,所述至少一特定地址包含有所述普通固件码区段中的部分存储器地址。
41.如权利要求26所述之方法,其中,所述至少一特定地址包含有除了所述存储器模块外的至少一非挥发性存储器以及所述普通固件码区段中之部分存储器地址。
42.如权利要求26所述之方法,其中,所述电子装置为一光盘机。
CN 200310124345 2003-12-30 2003-12-30 判断存储器模块中程序码正确性的方法 Pending CN1635473A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 200310124345 CN1635473A (zh) 2003-12-30 2003-12-30 判断存储器模块中程序码正确性的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200310124345 CN1635473A (zh) 2003-12-30 2003-12-30 判断存储器模块中程序码正确性的方法

Publications (1)

Publication Number Publication Date
CN1635473A true CN1635473A (zh) 2005-07-06

Family

ID=34844994

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200310124345 Pending CN1635473A (zh) 2003-12-30 2003-12-30 判断存储器模块中程序码正确性的方法

Country Status (1)

Country Link
CN (1) CN1635473A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103136005A (zh) * 2011-11-28 2013-06-05 英业达科技有限公司 更新固件的方法
CN104615449A (zh) * 2013-11-01 2015-05-13 慧荣科技股份有限公司 固件载入系统以及其固件载入方法
CN107102851A (zh) * 2014-01-06 2017-08-29 威盛电子股份有限公司 存储器芯片与数据保护方法
CN112820341A (zh) * 2021-03-03 2021-05-18 群联电子股份有限公司 存储器检查方法、存储器检查装置及存储器检查系统
TWI764581B (zh) * 2021-02-22 2022-05-11 群聯電子股份有限公司 記憶體檢查方法、記憶體檢查裝置及記憶體檢查系統

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103136005A (zh) * 2011-11-28 2013-06-05 英业达科技有限公司 更新固件的方法
CN104615449A (zh) * 2013-11-01 2015-05-13 慧荣科技股份有限公司 固件载入系统以及其固件载入方法
CN104615449B (zh) * 2013-11-01 2018-07-24 慧荣科技股份有限公司 固件载入系统以及其固件载入方法
CN107102851A (zh) * 2014-01-06 2017-08-29 威盛电子股份有限公司 存储器芯片与数据保护方法
CN107102851B (zh) * 2014-01-06 2020-06-16 威盛电子股份有限公司 存储器芯片与数据保护方法
TWI764581B (zh) * 2021-02-22 2022-05-11 群聯電子股份有限公司 記憶體檢查方法、記憶體檢查裝置及記憶體檢查系統
CN112820341A (zh) * 2021-03-03 2021-05-18 群联电子股份有限公司 存储器检查方法、存储器检查装置及存储器检查系统
CN112820341B (zh) * 2021-03-03 2024-05-07 群联电子股份有限公司 存储器检查方法、存储器检查装置及存储器检查系统

Similar Documents

Publication Publication Date Title
US7870378B2 (en) Electronic system with NAND flash memory storing boot code and highly reliable boot up method
CN1940878A (zh) 引导和自动更新软件和从更新错误中恢复的方法和系统
US8259498B2 (en) Continuous address space in non-volatile-memories (NVM) using efficient management methods for array deficiencies
CN1277211C (zh) 一种计算机操作系统的修复方法
CN109189405B (zh) 一种验证程序Flash数据一致性的方法及系统
US8595716B2 (en) Failsafe firmware updates
CN1749963A (zh) 一种Boot软件升级方法和一种Boot软件恢复方法
EP1416379A2 (en) Power down management block for use in a non-volatile memory system
US20130268746A1 (en) System-on-chip and booting method thereof
CN104239082A (zh) 嵌入式系统的热补丁实现方法
CN111562934B (zh) 一种基于热补丁的软件系统升级方法、终端及存储介质
CN102479121A (zh) 独立磁盘冗余阵列实现及测试方法
CN105930184A (zh) 系统升级方法及装置
CN1635473A (zh) 判断存储器模块中程序码正确性的方法
CN1794205A (zh) 用于文件信息写处理的方法和程序
CN1297891C (zh) 交叉式固件升级方法和系统
CN1659513A (zh) 把数据写入非易失性存储器的方法和设备
CN1276350C (zh) 经由缓冲区更新基本输入输出系统的系统及方法
CN1567232A (zh) 嵌入式系统的测试装置及测试方法
CN111290765B (zh) 一种固件快速烧录方法、系统及存储介质
CN104751881B (zh) 快闪存储器烧录方法
US8140896B2 (en) System and method for downloading system program
US7519765B2 (en) Method of downloading main code to flash memory
CN1667580A (zh) 具多重基本输入输出系统存储区的计算机系统及操作方法
CN116543828B (zh) Ufs协议测试方法、装置、可读存储介质及电子设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication

Open date: 20050706