专利名称:软件更新方法
技术领域:
本发明涉及电子设备的软件更新方法。
背景技术:
电子设备(例如个人计算机、智能型手机、平板计算机等)中的操作系统或应用程序等软件的功能越来越多元化,而为了维护电子设备中的软件或是增进功能,供货商及开发团队常会提供软件的更新版本或升级版本,让使用者能将电子设备的软件更新到最新或最稳定的版本。·一般而言,软件更新分为两个阶段。第一个阶段是通过某些公定协议或私定协议将存放在远端的软件文件下载到电子设备的储存装置上,例如闪存(Flash)或SD存储卡(Secure Digital Memory Card)。第二个阶段为通过各电子设备自定的更新机制,藉由相关的Flash读写工具将下载的软件文件更新至Flash上,因此,当使用者下次重新启动电子设备时,就能从Flash载入更新过的软件文件以使用更新或更稳定的软件版本。但是,当软件更新失败时,电子设备很有可能会因此无法启动,甚至无法回复而必须送修。而更新失败最常发生在上述第二阶段,也就是各电子设备自定义的更新机制,因此,需要一种安全的更新机制以确保不论使用者如何更新软件,都不会因为更新失败的影响而使得电子设备无法继续使用。
发明内容
有鉴于此,本发明提供一种安全且可回复的软件更新方法,以使电子设备不会被更新失败影响后续使用。本发明的一实施例提供一种软件更新方法,适用于具有闪存的电子设备,该方法包括在该闪存的一目前开机分区之外,切割出一预备更新分区,该目前开机分区为该电子设备目前开机时所挂载的分区;下载一软件更新文件;更新该软件更新文件至该预备更新分区;验证该软件更新文件是否能正常运作;以及若正常运作则将该预备更新分区设置为该电子设备往后开机时所挂载的分区,否则仍维持以该目前开机分区为该电子设备往后开机时所挂载的分区。其中该预备更新分区与该开机分区大小相同。本发明的另一实施例提供一种计算机可读取介质,储存一程序,一电子设备载入该程序以执行一软件更新方法,该方法包括下列步骤在该闪存的一目前开机分区之外,切割出一预备更新分区,该目前开机分区为该电子设备目前开机时所挂载的分区;下载一软件更新文件;更新该软件更新文件至该预备更新分区;验证该软件更新文件是否能正常运作;以及若正常运作则将该预备更新分区设置为该电子设备往后开机时所挂载的分区,否则仍维持以该目前开机分区为该电子设备往后开机时所挂载的分区。其中该预备更新分区与该开机分区大小相同。其中,该方法还包括使该电子设备执行重新开机;以及挂载该预备更新分区并进行开机程序,以验证该预备更新分区中的该软件更新文件。
其中,该方法还包括若该软件更新文件不能正常运作,则使该电子设备执行重新开机,并将该目前开机分区作为重新开机时所挂载的分区。其中,该方法还包括分割出一参数分区于该闪存;以及记录一第一参数、一第二参数、一第三参数与一第四参数于该参数分区;其中该第一参数、该第二参数、该第三参数以及该第四参数的大小为一位;其中该第一参数记录该目前开机分区,初始值为一第一值;其中该第二参数记录该预备更新分区,初始值为该第一值;其中该第三参数记录开机时要挂载哪个分区的依据,初始值为该第一值;其中该第四参数记录是否更新该软件更新文件至该预备更新分区,初始值为该第一值。其中,该方法还包括若该目前开机分区为该闪存的一第一分区,则该第一参数设定为该第一值;以及若该目前开机分区为该闪存的一第二分区,则该第一参数设定为一第二值。
其中,该方法还包括当下载该软件更新文件时,执行开机升级,该步骤包括若该目前开机分区为该第一分区,则更新该软件更新文件至该第二分区,并将该第二参数设定为该第二值、该第三参数设定为该第二值且该第四参数设定为该第二值;以及若该目前开机分区为该第二分区,则更新该软件更新文件至该第一分区,并将该第二参数设定为该第一值、该第三参数设定为该第二值且该第四参数设定为该第二值。其中,该方法还包括当执行重新开机时,执行开机检查,该步骤包括若该第三参数为该第二值,则从该第二参数所记录的分区开机若该第二参数为该第二值,则挂载该第二分区以从该第二分区进行开机流程并将该第三参数设定为该第一值;若该第二参数为该第一值,则挂载该第一分区以从该第一分区进行开机流程并将该第三参数设定为该第一值;若该第三参数为该第一值,则从该第一参数所记录的分区开机若该第一参数为该第一值,则载入该第一分区以从该第一分区进行开机流程;若该第一参数为该第二值,则挂载该第二分区以从该第二分区进行开机流程;若该第四参数为该第二值,则将该第四参数设定为该第一值并将该第二参数设定为该第一参数所记录的值。其中,该方法还包括当从该第二参数所记录的分区开机成功并执行到主程序时,执行开机完成,该步骤包括若该第四参数为该第二值,则将该第一参数设定为该第二参数所记录的值并将该第四参数设定为该第一值。本发明的软件更新方法可以确保电子设备不会因软件升级失败而有影响,且不管经过几次软件更新,本发明的软件更新方法仍然有效。
图I所示为公知的Flash存储器分区切割示意图;图2所示为根据本发明一实施例的Flash存储器分区切割示意图;图3所示为根据本发明一实施例的软件更新方法流程图;图4所示为根据本发明一实施例的Flash存储器分区切割示意图;图5所示为根据本发明一实施例的软件更新方法流程图;图6所示为根据本发明一实施例的软件更新方法流程图。主要组件符号说明A、N、F、C 参数S501、S502、…S509 步骤
K-l、FS-l、K-2、FS-2 分区 S601、S602、…S609 步骤S301、S302、... S306 步骤
具体实施例方式以下说明是本发明的实施例。其目的是要举例说明本发明一般性的原则,不应视为本发明的限制,本发明的范围应当以权利要求书的范围所界定者为准。图I所示为公知的Flash存储器分区(Partition)切割示意图。在电子设备的一般开机流程中,当电子设备启动时,硬件系统会载入开机载入程序(Boot Loader)到电子设备的主存储器上,然后开机载入程序会将储存在Flash存储器上的操作系统(OperatingSystem, OS)载入到主存储器中,并且进入操作系统的核心(Kernel)执行,接着初始化硬件及相关资源。在初始化完成之后,便会从Flash存储器挂载另一分区以载入其中的文件系统(File System)。在文件系统里储存了与使用者界面沟通的相关程序及使用者数据等。 当文件系统的分区被挂载后,操作系统便会执行里面的程序以执行相关功能或提供互动界面与使用者沟通。图2所示为根据本发明一实施例的Flash存储器分区切割示意图。图3所示为根据本发明一实施例的软件更新方法流程图。在本实施例中,电子设备目前开机时所挂载的分区为图2中的分区K-I及FS-1,其中分区K-I为操作系统的核心,分区FS-I为文件系统。在步骤S301中,在Flash存储器的目前开机分区K-I和FS-I之外,切割出预备更新分区K-2和FS-2,其中分区K-2和FS-2的大小分别与分区K-I和FS-I相同。在步骤S302中,通过OTA协议或其他协议方式将准备要升级的软件更新文件下载至电子设备。然后在步骤S303中,藉由Flash工具等将软件更新文件更新至预备更新分区中。例如将分区K-I的核心的软件更新文件更新至分区K-2中,将分区FS-I的文件系统的软件更新文件更新至分区FS-2中。接着在步骤S304中验证软件更新文件是否能正常运作。在软件更新文件更新至Flash存储器的分区后电子设备会重新开机,并挂载储存有软件更新文件的分区以从储存有软件更新文件的分区进行开机流程。若从储存有软件更新文件的分区进行的开机流程可以顺利进入主程序,则代表软件更新文件能正常运作,也就是更新成功。但若从储存有软件更新文件的分区进行开机流程在进入主程序之前因系统突然没电、当机(crash)等原因而使得电子设备又再度重新开机,则软件更新文件不能正常运作,也就是更新失败。若软件更新文件能正常运作,则在步骤S305中将预备更新分区设置为电子设备往后开机时所挂载的分区,例如若图2中分区K-2和分区FS-2的软件更新文件能正常运作,则往后开机时就挂载分区K-2和分区FS-2而不挂载分区K-I和分区FS-1。如此一来,软件升级便成功由原来的分区K-I和分区FS-I切换到分区K-2和分区FS-2。若软件更新文件不能正常运作,则在步骤S306中维持以目前开机分区为电子设备往后开机时所挂载的分区,例如维持以图2中分区K-I和分区FS-I为电子设备往后开机时所挂载的分区。因此,即使更新失败电子设备仍可回复到原先的开机分区,电子设备还是可以正常使用而不会受更新失败所影响。图4所示为根据本发明一实施例的Flash存储器分区切割示意图,其与图2的差别在于图4中切割出一个参数分区,参数分区记录四个永久且不会被使用者改变的参数,分别为参数A(Active)、N (Now)、F (First)、C (Check)。参数A记录目前开机分区,参数N记录预备更新分区,参数F记录开机时要挂载哪个分区的依据,参数C记录是否更新软件更新文件至预备更新分区。在一例子中,四个参数的大小皆为I位,且初始值皆为“O”。图5所示为根据本发明一实施例的软件更新方法流程图。在本实施例中,电子设备目前开机时所挂载的分区为图4中的K-I及FS-1,其中分区K-I为操作系统的核心,分区FS-I为文件系统。在图5的步骤旁显示的是图4中的参数分区的参数,由左而右分别是参数A、N、F、C。在步骤S501中,在Flash存储器的目前开机分区K-I和FS-I之外,切割出预备更新分区K-2和FS-2以及参数分区,其中分区K-2和FS-2的大小分别与分区K-I和FS-I相同,参数分区记录大小皆为I位且初始值皆为“O”的参数A、N、F、C。在步骤S502中,通过OTA协议或其他协议方式将准备要升级的软件更新文件下载至电子设备。然后在步骤S503中,藉由Flash工具等将软件更新文件更新至预备更新分区中,例如将分区K-I的核心的软件更新文件更新至分区K-2中,将分区FS-I的文件系统的 软件更新文件更新至分区FS-2中。并且将参数N、F、C设定为“I”。此时参数A为“O”代表目前开机所挂载的分区为第一分区群组K-I和FS-I,而参数N为“ I”代表预备更新分区为第二分区群组K-2和FS-2。在步骤S503中,将软件更新文件更新至预备更新分区后,电子设备执行步骤S504的重新开机。在重新开机到开机载入程序的阶段时,在步骤S505执行开机检查,也就是检查参数分区当中的参数。此时由于参数F为“1”,代表要从预备更新分区执行开机流程,也就是要挂载参数N所记录的分区以从参数N所记录的分区进行开机流程,由于此时参数N为“1”,因此挂载第二分区群组K-2和FS-2以从第二分区群组K-2和FS-2进行开机流程,并且将参数F改为“O”。在步骤S506中判断开机是否成功,若从预备更新分区进行开机流程可以进入主程序则代表开机成功,反之则是开机失败。若开机成功,则代表软件更新成功,因此在步骤S507中由主程序执行开机完成,由于此时参数C为“ I ”,代表要将参数A的值改为参数N的值,也就是将参数A改为“ I ”,代表从今以后的目前开机分区为更新过后的第二分区群组,并且将参数C改为“0”,代表更新结束。执行开机完成之后参数A、N、F、C分别为“1”、“1”、“0”、“0”,因此往后开机执行开机检查时,由于参数F为“0”,便从参数A所记录的分区进行开机流程,也就是从第二分区群组K-2和FS-2进行开机流程,此时便成功地从第一开机群组K-I和FS-I切换到第二分区群组K-2和FS-2进行开机流程,也就是完成软件更新。若开机失败,则在步骤S508中再次重新开机,并在步骤S509中再次执行开机检查。此时由于参数F为“O”且参数C为“1”,代表有更新软件更新文件至Flash存储器但是更新失败,因此要从目前开机分区执行开机流程,也就是要挂载参数A所记录的分区以从参数A所记录的分区进行开机流程,由于此时参数A为“0”,因此挂载第一分区群组K-I和FS-I以从第一分区群组K-I和FS-I进行开机流程,并且将参数C改为“0”,将参数N的值改为参数A的值。第一分区群组K-I和FS-I为确定可以开机成功的分区,因此电子设备回复到原先的目前开机分区,由于此时参数A、N、F、C分别为“0”、“0”、“0”、“0”,因此往后开机执行开机检查时,由于参数F为“ 0”,便从参数A所记录的分区进行开机流程,也就还是从第一分区群组K-I和FS-I进行开机流程,因此即使软件升级失败,仍可回复到原先的目前开机分区。图6所示为根据本发明一实施例的软件更新方法流程图。当具备图4的Flash存储器的电子设备先前已经升级过至少一次并成功地让目前开机分区为图4的第二分区群组K-2和FS-2,则此时参数A、N、F、C分别为“1”、“1”、“0”、“0”,也就是和步骤S507之后的参数状态一样。因此此时电子设备的目前开机分区为第二分区群组K-2和FS-2。在步骤S602中,通过OTA协议或其他协议方式将准备要升级的软件更新文件下载至电子设备。然后在步骤S603中,藉由Flash工具等将软件更新文件更新至预备更新分区中,由于此时目前开机分区为第二分区群组K-2和FS-2,则预备更新分区便为第一分区群组K-I和FS-I。并且将参数N设定为“0”,参数F、C设定为“I”。此时参数A为“I”代表目前开机所挂载的分区为第二分区群组K-2和FS-2,而参数N为“O”代表预备更新分区为第一分区群组K-I和FS-I。 在步骤S603中,将软件更新文件更新至预备更新分区后,电子设备执行步骤S604的重新开机。在重新开机到开机载入程序的阶段时,在步骤S605执行开机检查,也就是检查参数分区当中的参数。此时由于参数F为“1”,代表要从预备更新分区执行开机流程,也就是要挂载参数N所记录的分区以从参数N所记录的分区进行开机流程,由于此时参数N为“0”,因此挂载第一分区群组K-I和FS-I以从第一分区群组K-I和FS-I进行开机流程,并且将参数F改为“O”。在步骤S606中判断开机是否成功,若从预备更新分区进行开机流程可以进入主程序则代表开机成功,反之则是开机失败。若开机成功,则代表软件更新成功,因此在步骤S607中由主程序执行开机完成,由于此时参数C为“1”,代表要将参数A的值改为参数N的值,也就是将参数A改为“0”,代表从今以后的目前开机分区为更新过后的第一分区群组,并且将参数C改为“0”,代表更新结束。执行开机完成之后参数A、N、F、C分别为“0”、“0”、“0”、“0”,因此往后开机执行开机检查时,由于参数F为“0”,便从参数A所记录的分区进行开机流程,也就是从第一分区群组K-I和FS-I进行开机流程,此时便成功地从第二开机群组K-2和FS-2切换到第一分区群组K-I和FS-I进行开机流程,也就是完成软件更新。若开机失败,则在步骤S608中再次重新开机,并在步骤S609中再次执行开机检查。此时由于参数F为“O”且参数C为“1”,代表有更新软件更新文件至Flash存储器但是更新失败,因此要从目前开机分区执行开机流程,也就是要挂载参数A所记录的分区以从参数A所记录的分区进行开机流程,由于此时参数A为“ I ”,因此挂载第二分区群组K-2和FS-2以从第一分区群组K-2和FS-2进行开机流程,并且将参数C改为“0”,将参数N的值改为参数A的值。第二分区群组K-2和FS-2为确定可以开机成功的分区,因此电子设备回复到原先的目前开机分区,由于此时参数A、N、F、C分别为“1”、“1”、“0”、“0”,因此往后开机执行开机检查时,由于参数F为“ 0”,便从参数A所记录的分区进行开机流程,也就还是从第二分区群组K-2和FS-2进行开机流程,因此即使软件升级失败,仍可回复到原先的目前开机分区。经由上述实施例可以得知,本发明的软件更新方法可以确保电子设备不会因软件升级失败而有影响,且不管经过几次软件更新,本发明的软件更新方法仍然有效。
本发明的方法,或特定形态或其部分,可以以程序代码的形态存在。程序代码可以包含于实体介质,如软盘、光盘片、硬盘、或是任何其他机器可读取(如计算机可读取)储存介质,亦或不限于外在形式的计算机程序产品,其中,当程序代码被机器,如计算机载入且执行时,此机器变成用以参与本发明的装置。程序代码也可以通过一些传送介质,如电线或电缆、光纤、或是任何传输形态进行传送,其中,当程序代码被机器,如计算机接收、载入且执行时,此机器变成用以参与本发明的装置。当在一般用途处理单元实践时,程序代码结合处理单元提供一操作类似于应用特定逻辑电路的独特装置。 虽然本发明已以较佳实施例公开如上,然而其并非用以限定本发明,任何本领域普通技术人员,在不违背本发明精神和范围的情况下,可作些许变动与替代,因此本发明的保护范围应当视所附的权利要求书的范围所界定者为准。
权利要求
1.一种软件更新方法,适用于具有闪存的电子设备,该方法包括 在该闪存的一目前开机分区之外,切割出一预备更新分区,该目前开机分区为该电子设备目前开机时所挂载的分区; 下载一软件更新文件; 更新该软件更新文件至该预备更新分区; 验证该软件更新文件是否能正常运作;以及 若正常运作则将该预备更新分区设置为该电子设备往后开机时所挂载的分区,否则仍维持以该目前开机分区为该电子设备往后开机时所挂载的分区。
2.如权利要求I所述的软件更新方法,还包括 使该电子设备执行重新开机;以及 挂载该预备更新分区并进行开机程序,以验证该预备更新分区中的该软件更新文件。
3.如权利要求2所述的软件更新方法,还包括 若该软件更新文件不能正常运作,则使该电子设备执行重新开机,并将该目前开机分区作为重新开机时所挂载的分区。
4.如权利要求3所述的软件更新方法,还包括 分割出一参数分区于该闪存;以及 记录一第一参数、一第二参数、一第三参数与一第四参数于该参数分区; 其中该第一参数、该第二参数、该第三参数以及该第四参数的大小为一位; 其中该第一参数记录该目前开机分区,初始值为一第一值; 其中该第二参数记录该预备更新分区,初始值为该第一值; 其中该第三参数记录开机时要挂载哪个分区的依据,初始值为该第一值; 其中该第四参数记录是否更新该软件更新文件至该预备更新分区,初始值为该第一值。
5.如权利要求4所述的软件更新方法,还包括 若该目前开机分区为该闪存的一第一分区,贝1J该第一参数设定为该第一值;以及 若该目前开机分区为该闪存的一第二分区,则该第一参数设定为一第二值。
6.如权利要求5所述的软件更新方法,还包括 当下载该软件更新文件时,执行开机升级,该步骤包括 若该目前开机分区为该第一分区,则更新该软件更新文件至该第二分区,并将该第二参数设定为该第二值、该第三参数设定为该第二值且该第四参数设定为该第二值;以及若该目前开机分区为该第二分区,则更新该软件更新文件至该第一分区,并将该第二参数设定为该第一值、该第三参数设定为该第二值且该第四参数设定为该第二值。
7.如权利要求6所述的软件更新方法,还包括 当执行重新开机时,执行开机检查,该步骤包括 若该第三参数为该第二值,则从该第二参数所记录的分区开机 若该第二参数为该第二值,则挂载该第二分区以从该第二分区进行开机流程并将该第三参数设定为该第一值; 若该第二参数为该第一值,则挂载该第一分区以从该第一分区进行开机流程并将该第三参数设定为该第一值;若该第三参数为该第一值,则从该第一参数所记录的分区开机 若该第一参数为该第一值,则载入该第一分区以从该第一分区进行开机流程; 若该第一参数为该第二值,则挂载该第二分区以从该第二分区进行开机流程; 若该第四参数为该第二值,则将该第四参数设定为该第一值并将该第二参数设定为该第一参数所记录的值。
8.如权利要求7所述的软件更新方法,还包括 当从该第二参数所记录的分区开机成功并执行到主程序时,执行开机完成,该步骤包括 若该第四参数为该第二值,则将该第一参数设定为该第二参数所记录的值并将该第四参数设定为该第一值。
全文摘要
本发明提供一种软件更新方法。该软件更新方法适用于具有闪存的电子设备,该方法包括在该闪存的一目前开机分区之外,切割出一预备更新分区,该目前开机分区为该电子设备目前开机时所挂载的分区;下载一软件更新文件;更新该软件更新文件至该预备更新分区;验证该软件更新文件是否能正常运作;以及若正常运作则将该预备更新分区设置为该电子设备往后开机时所挂载的分区,否则仍维持以该目前开机分区为该电子设备往后开机时所挂载的分区。本发明的软件更新方法可以确保电子设备不会因软件升级失败而有影响,且不管经过几次软件更新,本发明的软件更新方法仍然有效。
文档编号G06F9/445GK102880478SQ20111019845
公开日2013年1月16日 申请日期2011年7月15日 优先权日2011年7月15日
发明者陈智文, 郭奕新, 洪于玉, 陈楙仕 申请人:启碁科技股份有限公司