用于更新固件的方法以及固件更新装置的制作方法

文档序号:6469768阅读:157来源:国知局
专利名称:用于更新固件的方法以及固件更新装置的制作方法
技术领域
本发明是关于固件(firmware),特别是关于用于更新储存于存储器中的固 件的方法及固件更新装置。背暈技术存储器(例如,非易失性计算机存储器)可以被电擦斷erase)以及重新编程 (reprogram)。存储器技术最初被用于记忆卡以及通用串行总线(Universal Serial Bus, USB)驱动器中,例如,大姆指驱动器(thumb drive),手持驱动器,以及 记忆棒(memory stick)。因为存储器的价格远低于电可擦除可编程只读存储器 (EEPROM)的价格,在需要大量非易失、固态储存的地方,存储器技术是一项 应用很广泛的技术。具有控制器的电子装置通常包括储存固件的存储器,其中,固件可以操 作控制器。当修改电子装置使其具有新功能时,必须更新电子装置中储存于 存储器中的固件。电子装置所需的存储器容量将非常复杂地增加。固件越大, 则更新的时间越长。因此,非常需要提高固件的更新效能。通过多个区块(block)的操作,可以将存储器分割,擦除以及编程。图1 为用于更新储存于存储器中的固件的传统的方法流程图。变量N指示存储器 中的目标区块,在步骤102中,将变量N初始为1。因此,存储器的第一区 块被选择以作为目标区块。在步骤104,将变量M设置为存储器的最大区块 数。接着,在步骤106中,比较变量N以及变量M。如果变量N小于或等于 变量M,则表示并不是所有的存储器区块都完成更新。因此,在步骤108,目 标区块,即存储器中的第N区块被擦除,且在步骤110,将固件的新的影像
版本写入至目标区块中。在完成步骤110将新的数据写入至自前目标区块后, 于步骤112,增加变量N,使N-N+1,以选择下一区块作为目标区块。接着, 返回步骤106,将增加后的变量N与变量M相比较。如果变量N小于或等于 变量M,则重复步骤106至步骤112以处理存储器的其它区块。如果变量N 大于变量M,则存储器的所有区块都完成更新,且方法100结束。不论是否所有的区块都需要被更新,传统的方法100都需要将存储器的 所有区块擦除以及编程。因此,所有存储器区块都被处理,且更新过程所需 的时间与存储器的大小是成比例的。但是,目前的固件与新的固件数据可能仅有很微小的不同。如果仅需要将储存的固件数据与的新的影像版本数据不 同的部分区块进行更新,则更新过程所需的时间将大大减少。例如,如果存 储器包括M个区块,且仅有X个区块需要被更新,则所需的更新时间将减少 (M-X)/M的比例。因此,需要一种快速更新储存于存储器中的固件的方法。发明内容为了快速更新储存于存储器中的固件,本发明提供了一种用于更新固件 的方法以及固件更新装置。本发明提供了一种用于更新固件的方法,该固件储存于存储器中,其中, 该存储器被分割为多个区块,以及该固件将被更新为新的影像版本,该方法 包括(a)由该新的影像版本中获得第一数据区块,以及由该存储器选择出的 目标区块中获得第二数据区块;(b)检查该第一数据区块是否不同于该第二数 据区块;(c)当该第一数据区块不同于该第二数据区块时,将该第一数据区块 写入至该目标区块;以及(d)重复步骤(a)至(c)直到所有该多个区块均被处理。本发明另提供了一种用于更新固件的方法,该固件储存于存储器中,其 中,该存储器被分割为多个区块,以及该固件将被更新为新的影像版本,该 方法包括(a)由该新的影像版本中获得第一数据区块的第一标记,以及由该 存储器中选择的目标区块中获得第二数据区块的第二标记,其中,该第一标 记表示该第一数据区块的特性,以及该第二标记表示该第二数据区块的特性; (b)检查该第二标记是否不同于该第一标记;(c)当该第一标记不同于该第二标 记时,将该第一数据区块写入至该目标区块;以及(d)重复步骤(a)至(c)直到所有该多个区块均被处理。本发明另提供了一种用于更新固件的方法,该固件储存于存储器中,其 中,该存储器被分割为多个区块,以及该固件将被更新为新的影像版本,该方法包括(a)擦除由该多个区块中选择出的目标区块;(b)由该新的影像版本 中获得用以更新该目标区块的数据区块;(c)检查该数据区块是否完全由多个 十六进制数"0xFF"组成;(d)当该数据区块包括不同于"0xFF"的十六进制 数时,将该数据区块写入至该目标区块;以及(e)重复步骤(a)至(d)直到所有该 多个区块均被处理。本发明提供了一种固件更新装置,包括存储器,被分割为多个区块, 储存将被更新为新的影像版本的固件;以及控制器,耦接于该存储器,仅更 新储存的数据不同于新的影像版本的相应数据部分的该多个区块。本发明另提供了一种固件更新装置,包括存储器,被分割为多个区块, 储存将被更新为新的影像版本的固件;以及控制器,耦接于该存储器,通过 检査相应数据部分是否完全由多个十六进制数"0xFF"组成来擦除该存储器。本发明提供的用于更新固件的方法以及固件更新装置,将储存于存储器 区块中的旧的内容与对应的新的更新数据进行比较,并根据比较结果判断是 否需要更新存储器区块,因为固件的变化很小,所以此方法可以大大降低更 新过程所需的总时间。


图1为用于更新储存于存储器中的固件的传统的方法流程图。 图2A为依据本发明一实施例的用于更新储存于存储器中的固件的方法 的流程图。 图2B为本发明一实施例的通过比较数据区块标记来更新固件的方法的 流程图。图3为本发明一实施例的通过检测写入数据是否为"0xFF"以更新固件 的方法的流程图。图4A为本发明一实施例的用于更新储存于存储器中的固件的方法的流 程图。图4B为本发明另一实施例的用于更新储存于存储器中的固件的方法的 流程图。图5为本发明一实施例的固件更新装置的方框图。
具体实施方式
图2A为依据本发明一实施例的用于更新储存于存储器中的固件的方法 200的流程图。储存固件的存储器被分割为多个区块。方法200可以由具有控 制器的装置实施,以更新固件。装置以新的影像版本更新储存于存储器中的 固件。在一实施例中,装置为可以更新其固件的装置,例如,光盘驱动器或 手持装置。在另一实施例中,装置为用于更新其它装置的固件的个人计算机。首先,于步骤202,控制器将变量N初始为1,其中,变量N指示存储 器的目标区块。因此,存储器的第一区块被选择以作为目标区块。于步骤204, 控制器将变量M设置为存储器的最大区块数。接着,于步骤206,控制器比 较变量N以及变量M。如果变量N小于或等于变量M,则控制器没有完成所 有存储器区块的更新,且固件更新将继续。接着,于步骤208,控制器读取新 的影像版本以获得用于更新目标区块的数据区块Sl。于步骤210,为了比较 数据区块Sl与目标区块的数据内容,控制器读取目标区块(存储器的第N区 块),以获得储存于目标区块中的数据区块S2。接着,于步骤212,控制器接着比较新的影像版本的数据区块S1以及储 存于存储器的目标区块中的数据区块S2。如果数据区块Sl不同于数据区块S2,则于步骤214,控制器擦除目标区块,即擦除存储器中的第N区块,旦 于步骤216,将新的影像版本的数据区块S1写入至存储器的目标区块。否则, 如果数据区块Sl与数据区块S2—致,则目标区块不需要被更新,且控制器 跳过正在写入的目标区块。在目标区块的固件更新完成后,于步骤218,控制 器将变量N的值增加1。因此,目前的目标区块的下一区块被选择以作为新 的目标区块。接着,控制器再次执行步骤206至步骤218以进行新的目标区 块的固件更新。步骤206至步骤218在存储器的不同的区块重复,直到于步 骤206中变量N大于变量M。当步骤206中的变量N大于变量M时,所有 的存储器区块都根据方法200完成更新。虽然通过方法200,固件更新所需的时间减少了,但是于步骤208以及 210,控制器必须读取数据区块S1以及数据区块S2的所有比特,以于步骤212 比较对应于数据区块S1以及数据区块S2的比特。读取整个数据区块是非常 耗时的。因此,可根据数据区块的内容特性产生数据区块的标记(signature), 且于固件被写入到存储器之前,先将数据区块的标记写入到存储器的区块中。 标记可以是相应数据区块的校验和(checksum)或版本序列号(version serial immber),用以指示数据区块是否被改变。图2B为本发明一实施例的通过比较数据区块标记来更新固件的方法250 的流程图。除了步骤258、步骤260以及步骤262外,图2B中的方法250与 图2A中的方法200相似。因为数据区块标记表现出了数据区块内容的特性, 所以于步骤258,固件更新装置的控制器直接读取数据区块Sl的标记K1以 更新固件。于步骤260,控制器也直接读取储存于存储器的目标区块的数据区 块S2的标记K2。因为标记仅包括很少的比特,所以方法250的步骤258以 及260读取标记所需的时间少于方法200的步骤208以及210读取整个数据 区块所需的时间。当控制器需要判断储存于存储器的目标区块的数据区块Sl 是否不同于对应的新影像版本的数据区块S2时,于步骤262,控制器可以仅 比较数据区块Sl的标记Kl以及数据区块S2的标记K2,而不是比较整个数
据区块si以及s2。因此,通过方法250更新固件戶;f需的时间远小于通过图2A中方法200更新固件所需的时间。在擦除存储器的区块后(例如,图2A、图2B的步骤214),所有储存于区 块中的数据被转换为十六进制数"0xFF"以指示没有数据储存。在传统的方 法中,例如,图1的方法100,当储存于存储器中的固件被更新,控制器写入 数据至存储器的所有区块中。存储器的大小大于新的影像版本的大小。但是, 在新的影像版本已经被写入到存储器后,控制器仍然会将十六进制数"0xFF" 写入到存储器的剩余区块。因此,固件更新所需的时间会增加。因此,图3 所提供的方法300可以改进这个缺点。图3为本发明一实施例的通过检测写 入数据是否为"0xFF"以更新固件的方法300的流程图。首先,于步骤302,装置的控制器将变量N初始为1,其中,变量N指 示存储器的目标区块。接着,于步骤304,控制器将变量M设置为存储器的 最大区块数。接着,于步骤306,控制器比较变量N以及变量M。如果变量 N小于或等于变量M,则控制器没有完成整个存储器区块的更新,且固件更 新将继续。接着,于步骤308,控制器擦除目标区块,即擦除存储器中的第N 区块,且于步骤310读取新的影像版本以获得用于更新目标区块的数据区块 Sl。接着,于步骤312,控制器检测数据区块S1是否完全由"OxFF"组成。如果数据区块S1不是完全由"OxFF"组成,则于步骤314,控制器直接 将数据区块S1写入至存储器的目标区块。否则,如果新的影像版本已经完全 写入至存储器,则于步骤310,没有数据可以从新的影像版本中读取,且所获 得的数据区块S1由"OxFF"填充。因为于步骤308目标区块被擦除,则目标 区块的内容为"OxFF",且不需要再次写入内容至目标区块。因此,控制器跳 过正在写入的目标区块。在目标区块的固件更新完成后,于步骤316,控制器 将变量N增加1。因此,目前的目标区块的下一区块被选择以作为新的目标 区块。接着,对存储器的不同区块重复步骤306至316,直到步骤306中的变 量N大于变量M。此时,根据方法300,所有的存储器区块完成更新。
图4A将图3的方法300以及图2A的方法200相结合以更新固件。图4A 为本发明一实施例的用于更新储存于存储器中的固件的方法400的流程图。 除了步骤418以及420,方法400与方法200相似。于步骤412,如果新的影 像版本的数据区块Sl不同于储存于存储器的目标区块的数据区块S2,则于步 骤414,控制器擦除目标区块,即擦除存储器中的第N区块。接着,于步骤 418,控制器检测数据区块Sl是否完全由"OxFF"组成。如果不是,则于步 骤420,控制器将数据区块S1写入至目标区块。否则,控制器跳过正在写入 的目标区块,且更新时间进一步减少。图4B将图3的方法300以及图2B的方法250相结合以更新固件。图4B 为本发明另一实施例的用于更新储存于存储器中的固件的方法450的流程图。 除了步骤458, 460以及462,方法450与图4A所示的方法400相似。于步 骤458,控制器直接读取数据区块S1的标记K1以更新固件。于步骤460,控 制器也直接读取储存于存储器的目标区块的数据区块S2的标记K2。因为标 记仅包括很少的比特,所以方法450的步骤458以及460读取标记所需的时 间小于方法400的步骤208以及210读取整个数据区块所需的时间。当控制 器需要判断储存于目标区块的数据区块Sl是否不同于相应的新的影像版本的 数据区块S2时,于步骤462,控制器仅需要比较标记K1以及标记K2,而不 需要比较整个数据区块S1以及S2。于步骤466,在新的影像版本中读取数据 区块S1。因此,通过方法450更新固件所需的时间远小于通过图4A的方法 更新固件所需的时间。图5为本发明一实施例的固件更新装置500的方框图。固件更新装置500 包括存储器504以及控制器502,存储器504被分割为多个区块,控制器502 耦接于存储器504。存储器504储存将被新的影像版本更新的固件。控制器 502控制储存于存储器504中的固件的更新过程,且仅更新储存的数据不同于 新的影像版本的相应数据部分的区块。在一实施例中,控制器502执行方法200以更新储存于存储器504中的
固件,且直接比较新的影像版本以及将要被更新的周件中对应的数据区块,以判断对应的数据区块是否相同。控制器502读取新的影像版本以获得第一 数据区块S1,读取存储器504的区块中选择的目标区块以获得第二数据区块 S2,判断第一数据区块Sl是否不同于第二数据区块S2,以及当第一数据区 块Sl不同于第二数据区块S2时,将第一数据区块Sl写入至存储器504的目 标区块。在一实施例中,控制器502结合方法200以及方法400以更新储存于存 储器504中的固件。因此,当控制器502将第一数据区块S1写入至目标区块 时,控制器502擦除存储器504的目标区块,判断第一数据区块Sl是否完全 由十六进制数"OxFF"组成,且当第一数据区块Sl并非完全由十六进制数 "OxFF"组成时,将第一数据区块Sl写入至存储器504的目标区块。在另一实施例中,控制器502执行方法250以更新储存于存储器504中 的固件,且比较新的影像版本以及将要被更新的固件中对应的数据区块的标 记,以判断对应的数据区块是否相同,其中,标记表现出了数据区块内容的 特性。控制器502由新的影像版本中读取第一数据区块Sl的第一标记Kl, 读取储存于目标区块的第二数据区块S2的第二标记K2,其中,目标区块是 由区块中选择而来,判断第二标记K2是否不同于第一标记K1,以及当第二 标记K2不同于第一标记Kl时,将第一数据区块Sl写入至存储器504的目 标区块。在一实施例中,控制器502结合方法250以及方法450以更新储存于存 储器504中的固件。因此,当控制器502将第一数据区块Sl写入到目标区块, 控制器502擦除存储器504的目标区块,由新的影像版本中读取第一数据区 块Sl,判断第一数据区块Sl是否完全由十六进制数"OxFF"组成,且当第 一数据区块Sl并非完全由十六进制数"OxFF"组成时,将第一数据区块Sl 写入至存储器504的目标区块。在另一实施例中,控制器502执行方法300以更新储存于存储器504中
的固件,以及通过检查相应的数据部分是否完全由十六进制数"0xFF"组成 来擦除存储器504。因此,控制器502擦除由存储器504的区块中选出的目标 区块,读取新的影像版本以获得用于更新目标区块的第一数据区块Sl,判断 第一数据区块Sl是否完全由十六进制数"OxFF"组成,且当第一数据区块 Sl包括不同于"OxFF"的十六进制数时,将第一数据区块Sl写入至存储器 504的目标区块。本发明提供了一种用于更新储存于存储器中的固件的方法。将储存于存 储器区块中的旧的内容与对应的新的更新数据进行比较。如果对应的新的更 新数据与旧的内容一致,则不需要更新,且新的数据不需要写入到区块中。 因为固件的变化很小,所以此方法可以大大降低更新过程所需的总时间。虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明,任何 所属技术领域中的技术人员,在不脱离本发明的范围内,可以做一些改动, 因此本发明的保护范围应以权利要求所界定的范围为准。
权利要求
1. 一种用于更新固件的方法,其中,所述固件储存于存储器中,所述存储器被分割为多个区块,以及所述固件将被更新为新的影像版本,其特征在于,所述方法包括(a)由所述新的影像版本中获得第一数据区块,以及由所述存储器选择出的目标区块中获得第二数据区块;(b)检查所述第一数据区块是否不同于所述第二数据区块;(c)当所述第一数据区块不同于所述第二数据区块时,将所述第一数据区块写入至所述目标区块;以及(d)重复步骤(a)至(c)直到所有所述多个区块均被处理。
2. 根据权利要求1所述的用于更新固件的方法,其特征在于,在所述歩 骤(b)中,当所述第一数据区块与所述第二数据区块一致时,则直接执行所述 步骤(d)。
3. 根据权利要求1所述的用于更新固件的方法,其特征在于,所述步骤C。包括(Cl)擦除所述目标区块;(c2)检查所述第一数据区块是否完全由多个十六进制数"0xFF"组成;以及 (c3)当所述第一数据区块并非完全由所述多个十六进制数"0xFF"组成时, 将所述第一数据区块写入至所述目标区块。
4. 一种用于更新固件的方法,其中,所述固件储存于存储器中,所述存 储器被分割为多个区块,以及所述固件将被更新为新的影像版本,其特征在于,所述方法包括(a)由所述新的影像版本中获得第一数据区块的一第一标记,以及由所述 存储器中选择的一目标区块中获得第二数据区块的第二标记,其中,所述第 一标记表示所述第一数据区块的特性,以及所述第二标记表示所述第二数据 区块的特性; (b)检査所述第二标记是否不同于所述第一标记;(C)当所述第一标记不同于所述第二标记时,将所述第一数据区块写入至 所述目标区块;以及(d)重复步骤(a)至(c)直到所有所述多个区块均被处理。
5. 根据权利要求4所述的用于更新固件的方法,其特征在于,在所述步 骤(b)中,当所述第一标记与所述第二标记一致时,则直接执行所述步骤(d)。
6. 根据权利要求4所述的用于更新固件的方法,其特征在于,所述第一 标记是所述第一数据区块的校验和,以及所述第二标记是所述第二数据区块 的校验和。
7. 根据权利要求4所述的用于更新固件的方法,其特征在于,所述第一 标记为所述第一数据区块的版本序列号,以及所述第二标记为所述第二数据 区块的版本序列号。
8. 根据权利要求4所述的用于更新固件的方法,其特征在于,所述步骤 (c)包括(Cl)擦除所述目标区块;(c2)检查所述第一数据区块是否完全由多个十六进制数"0xFF"组成;以及 (c3)当所述第一数据区块并非完全由所述多个十六进制数"0xFF"组成时, 将所述第一数据区块写入至所述目标区块。
9. 一种用于更新固件的方法,其中,所述固件储存于存储器中,所述存 储器被分割为多个区块,以及所述固件将被更新为新的影像版本,其特征在 于,所述方法包括(a) 擦除由所述多个区块中选择出的目标区块;(b) 由所述新的影像版本中获得用以更新所述目标区块的数据区块;(c) 检查所述数据区块是否完全由多个十六进制数"OxFF"组成;(d) 当所述数据区块包括不同于"OxFF"的十六进制数时,将所述数据区 块写入至所述目标区块;以及 (e)重复步骤(a)至(d)直到所有所述多个区块均被处理。
10. 根据权利要求9所述的用于更新固件的方法,其特征在于,在所述步 骤(c)中,当所述第一数据区块完全由所述多个十六进制数"0xFF"组成时, 则直接执行所述步骤(e)。
11. 一种固件更新装置,其特征在于,所述固件更新装置包括-存储器,被分割为多个区块,储存将被更新为新的影像版本的固件;以及 控制器,耦接于所述存储器,仅更新储存的数据不同于新的影像版本的 相应数据部分的所述多个区块。
12. 根据权利要求11所述的固件更新装置,其特征在于,所述控制器读 取所述新的影像版本以获得第一数据区块,读取由所述多个区块中选择出的 目标区块以获得第二数据区块,判断所述第一数据区块是否不同于所述第二 数据区块,以及当所述第一数据区块不同于所述第二数据区块时,将所述第 一数据区块写入至所述目标区块。
13. 根据权利要求12所述的固件更新装置,其特征在于,当所述控制器 将所述第一数据区块写入至所述目标区块时,所述控制器擦除所述存储器的 所述目标区块,判断所述第一数据区块是否完全由多个十六进制数"0xFF" 组成,以及当所述第一数据区块并非完全由所述多个"0xFF"组成时,将所 述第一数据区块写入至所述目标区块。
14. 根据权利要求11所述的固件更新装置,其特征在于,所述控制器由 所述新的影像版本中读取第一数据区块的第一标记,读取第二数据区块的第 二标记,其中,所述第二数据区块是储存于由所述多个区块中选择出的目标 区块中,判断所述第二标记是否不同于所述第一标记,以及当所述第一标记 不同于所述第二标记时,将所述第一数据区块写入至所述存储器的所述目标 区块,其中,所述第二标记表示所述第二数据区块的特性,以及所述第一标 记表示所述第一数据区块的特性。
15. 根据权利要求14所述的固件更新装置,其特征在于,当所述第一标 记与所述第二标记一致时,所述控制器不会将所述第一数据区块写入至所述 目标区块。
16. 根据权利要求14所述的固件更新装置,其特征在于,所述第一标记 为所述第一数据区块的校验和,以及所述第二标记为所述第二数据区块的校 验和。
17. 根据权利要求14所述的固件更新装置,其特征在于,所述第一标记 为所述第一数据区块的版本序列号,以及所述第二标记为所述第二数据区块 的版本序列号。
18. 根据权利要求14所述的固件更新装置,其特征在于,当所述控制器 将所述第一数据区块写入至所述目标区块时,所述控制器擦除所述存储器的 所述目标区块,由所述新的影像版本中读取所述第一数据区块,判断所述第 一数据区块是否完全由多个十六进制数"0xFF"组成,以及当所述第一数据 区块并非完全由"0xFF"组成时,将所述第一数据区块写入至所述目标区块。
19. 一种固件更新装置,其特征在于,所述固件更新装置包括-存储器,被分割为多个区块,储存将被更新为新的影像版本的固件;以及 控制器,耦接于所述存储器,通过检查相应数据部分是否完全由多个十六进制数"0xFF"组成来擦除所述存储器。
20. 根据权利要求19所述的固件更新装置,其特征在于,所述控制器擦 除由所述多个区块中选择的目标区块,读取所述新的影像版本以获得用于更 新所述目标区块的数据区块,判断所述数据区块是否完全由所述多个十六进 制数"OxFF"组成,以及当所述数据区块包括不同于"0xFF"的十六进制数 时,将所述数据区块写入至所述目标区块。
全文摘要
本发明提供了一种用于更新固件的方法以及固件更新装置。该固件储存于存储器中,该存储器被分割为多个区块,且固件将被更新为新的影像版本。首先,由新的影像版本中获得第一数据区块,且由存储器中选择的目标区块中获得第二数据区块。接着,检查第一数据区块是否不同于第二数据区块。当第一数据区块不同于第二数据区块时,将第一数据区块写入至目标区块。最后,重复以上步骤直到所有区块均被处理。本发明提供的用于更新固件的方法以及固件更新装置,将储存于存储器区块中的旧的内容与对应的新的更新数据进行比较,并根据比较结果判断是否需要更新存储器区块,因为固件的变化很小,所以此方法可以大大降低更新过程所需的总时间。
文档编号G06F9/445GK101398765SQ20081021041
公开日2009年4月1日 申请日期2008年8月15日 优先权日2007年9月24日
发明者庄志良, 萧榕里, 陈英珠 申请人:联发科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1