通讯装置及其固件更新方法

文档序号:7930164阅读:173来源:国知局
专利名称:通讯装置及其固件更新方法
技术领域
本发明涉及计算机技术,尤其涉及一种通讯装置的固件更新。
背景技术
路由器(router)、个人数字助理(personal digital assistant,简称PDA)、或手机等 通讯装置其主要的执行程序如开机程序、及硬件配置设定数据等皆包含在其固件,它的功 能及效率影响了装置的整体表现。因此,软件工程尽相当大的努力在固件的开发与除错。
在一种产品上市后的一段时间,软件工程师通常仍会持续地对固件做修改。此修改通常 包括执行效率的改进、程序代码的除错、新功能的加入、及针对客户需求所做的更动。 一旦 固件改变量达到一定的程度,软件工程师就会发行一套新版的固件,让使用者更新其装置。 更新时先取得新版固件,然后将此新固件烧录到装置的闪存上。由于闪存的特性,此烧录过 程不可被中断, 一旦中断了,整区的数据将无法使用。
然而在实际应用中,烧录过程及有可能被各种因素打断,如突然的停电、插头被踢掉、 或装置莫名的死机等。倘若只有一份固件在闪存上,且复写过程被中断,将导致此装置无法 再次开机。此装置因此就须送修,维修人员必须卸下闪存,用专门的烧录器做重烧的补救动 作。如此将造成使用者的不便,及维修成本的增加。
美国专利公开号20040068334,标题为"Method for updating firmware of computer device" 的专利文件及美国专利号6, 023, 620,标题为"Method for downloading control software to a cellular tel印hone"的专利各提出了不同的固件更新中断的问题的解决方 法。但是这些方法仍有一些固件更新时的问题未克服。20040068334的方法多了一个固件备 份的工作,实为多余、耗时、没有效率。另外,即使运用了这些方法,如果不慎装置被升级 的固件版本有问题,导致装置在开机过程会死机,仍然会使此装置无法使用。

发明内容
为了改善装置的固件的更新作业,本发明提供一种固件更新方法及使用所述方法的通讯 装置。
一种通讯装置的实施方式包括非挥发性内存、更新模块、加载模块及原固件。上述非 挥发性内存包含第一旗标用以指定所述通讯装置开机用的固件,第二旗标用以指定是否要进 行开机能力测试,以及第一区域用以储存所述通讯装置的原固件。上述更新模块取得新固件,并储存所述新固件于所述非挥发性内存中的第二区域。当完成储存所述新固件时,上述更 新模块利用所述第一旗标用以指定所述开机用的固件为所述新固件,并利用所述第二旗标致 能所述开机能力测试。上述加载模块在判定所述新固件是否能顺利运行以前,利用所述第一 旗标以指定开机用的固件为所述新固件以外的另一固件,并且响应所述装置的开机动作,加 载并运行所述新固件。其中,若所述新固件能运行,使所述装置符合条件,则所述通讯装置 判定所述新固件通过所述开机能力测试,更动所述第一旗标的值,以指定所述新固件为开机 用的固件。若所述新固件未通过所述开机能力测试,则所述通讯装置维持所述第一旗标的值
一种固件更新方法的实施方式执行于具有非挥发性内存的通讯装置。所述非挥发性内存 包含第一旗标用以指定所述通讯装置开机用的固件、第二旗标用以指定是否要进行开机能力 测试、以及第一区域用以储存所述通讯装置的原固件。首先,取得新固件,并储存所述新固 件于所述非挥发性内存中的第二区域。当完成储存所述新固件时,利用所述第一旗标用以指 定所述开机用的固件为所述新固件,并利用所述第二旗标致能所述开机能力测试。在判定所 述新固件是否能通过所述开机能力测试以前,利用所述第一旗标以指定开机用的固件为所述 新固件以外的另一固件。响应所述装置的开机动作,加载并运行所述新固件。其中,若所述 新固件能运行,使所述装置符合条件,则所述通讯装置判定所述新固件通过所述开机能力测 试,更动所述第一旗标的值,以指定所述新固件为开机用的固件。若所述新固件未通过所述 开机能力测试,则所述通讯装置不更动所述第一旗标的值。
另一种固件更新方法的实施方式执行于具有非挥发性内存的装置中。所述装置的原固件 储存于所述非挥发性内存中的第一区域。首先,取得新固件,并储存所述固件于所述非挥发 性内存中的第二区域。当完成储存所述新固件时,进行开机能力测试。所述开机能力测试还 包含在判定所述新固件是否能通过所述开机能力测试以前,利用旗标,以指定所述新固件 以外的另一固件为所述装置开机用的固件;响应所述装置的开机动作,加载并运行所述新固 件;若所述新固件能运行,使所述装置符合条件,则判定所述新固件通过所述开机能力测试 ,并更动所述旗标的值,以指定所述新固件为所述开机用的固件;以及若所述新固件未通过 所述开机能力测试,则维持所述旗标的值。
利用所述的固件更新方法可以避免固件版本或设计错误所造成的开机问题。


图1A为本发明通讯装置的实施方式的结构方块图。
图1B为本发明通讯装置的另一实施方式的结构方块图,其更新模块整合于加载模块。图1C为本发明通讯装置的另一实施方式的结构方块图,其更新模块整合于固件中。 图1D为本发明通讯装置的另一实施方式的结构方块图,其更新模块单独存在于通讯装置中。
图2为本发明通讯装置与服务器的示意图。 图3为本发明通讯装置的固件更新的实施方式流程图。 图4为本发明通讯装置之中切换「主区」及「备区」的实施方式流程图。 图5为本发明通讯装置之中加载模块的操作流程图。
图6为本发明通讯装置成功完成开机之后的「主区」及「备区」切换的操作流程图。 图7为本发明通讯装置未成功完成开机之前,为了避免意外重新开机的错误的「主区」 及「备区」切换的操作流程图。
具体实施例方式
以下说明中的各模块可以是计算机可执行的程序或电路。
图1A为本发明通讯装置100的实施方式的结构方块图。在本实施方式中,通讯装置100包 括处理器l、非挥发性内存2、通讯单元3、输入单元4及主存储器5。
非挥发性内存2可以是闪存(flash memory)或电子可抹除可程序化只读存储器 (Electrically Erasable Programmable ROM,简称EEPR0M)。图1A中的非挥发性内存2是简化 的示意图,而非挥发性内存2实际上可以由单个或多个的内存芯片构成。
通讯单元3用来传送及接收数据。输入单元4可以包含用来启动及关闭通讯装置100的电 源的开关。通讯装置100的固件可以包含其操作系统、应用程序、设定参数及其它信息。
所述通讯装置100的加载模块(Loader)10储存于所述非挥发性内存2中的区域20,原固件 11储存于所述非挥发性内存2中的区域21。区域22可以用来储存新的固件。非挥发性内存2包 含二个旗标BF及BC。旗标BF用以指定要供所述通讯装置开机用的固件,旗标BC用以指定是否 要进行开机能力测试。开机用的固件所在区域可以称为「主区」,用来储存新固件的区域可 以称为「备区」。旗标BF可用以指定非挥发性内存中的「主区」。举例来说,目前区域21为 「主区」,而区域22为「备区」。需要了解的是,在上述通讯装置的其它实施方式中,其非 挥发性内存可以有二个或更多的「备区」。
举例来说,区域21与22分别为非挥发性内存2的二个分割区(partition),且分别以分割 区识别码"0"及"1"代表。旗标BF可以用一位(bit)记录分割区识别码"0"或"1"以指 示用来开机的「主区」。在其它的实施方式中区域21与22何者为「主区」可以用储存于旗标 BF中的内存位置或其它信息来识别。上述内存位置可以是区域21或22的开始地址或固件的所
8在地址。旗标BF及旗标BC可以各包含一比特(bit),但非限定于此。
通讯装置100具有更新模块13,用来从通讯装置100的外部取得新固件,并储存所述新固 件于非挥发性内存2中的「备区」。当「备区」中有旧版的固件时,上述的新固件可以覆写 上述旧版的固件。上述更新模块13可以被包含在加载模块10或任一固件(如固件11)中,或单 独储存于非挥发性内存2中的一个位置。图1B至图1D中的通讯装置100B、 IOOC及IOOD各为通 讯装置100的实施方式。更新模块13B、 13C及13D为更新模块13的实施方式。图1B中的更新模 块13B整合于加载模块10;图1C中的更新模块13C整合于固件11;图1D中的更新模块13D单独 存在于通讯装置100中。当更新模块13完成储存所述新固件时,上述更新模块13利用所述旗 标BF用以指定所述开机用的固件为所述新固件,利用所述旗标BC指定是否要进行所述开机能 力测试。
加载模块10在通讯装置100启动(开机)时加载旗标BF所指定的用来使通讯装置100开机的 固件。
通讯装置100可以包含各种客户端设备(consumer premise equipment),例如机上盒 (set-top box)、数字用户线(Digital Subscriber Line,简称DSL)调制解调器或有线电视 调制解调器(cable modem)等整合式存取装置(Integrated access device)。通讯装置IOO可 与另一装置通讯并从特定的服务器下载固件。参照图2,通讯装置100通过网络101通讯连接 服务器120。服务器120储存多个固件于数据库121。通讯装置100可从服务器120下载新的固 件。以下说明通讯装置100的固件更新流程。
假设旗标BF在目前记录O,意指区域21为「主区」。参照图3,通讯装置100中的上述更 新模块13首先从服务器120取得新固件12(步骤S300),判断旗标BF中的「主区」为分割区O或 1(步骤S302)。若「主区」为分割区O,即区域21,则上述更新模块13储存固件12于「备区」 分割区l,即区域22(步骤S304)。若「主区」为分割区l,即区域22,则上述更新模块13储存 固件12于「备区」分割区O,即区域21(步骤S314)。
在步骤S306中,上述更新模块13判别上述新固件12的储存动作是否成功(步骤S306)。如 否,上述更新模块13标示「备区」的固件更新失败(步骤S308)。如是,上述更新模块13利用 旗标BF以切换「主区」及「备区」(步骤S310),并利用旗标BC指定要进行所述开机能力测试 (步骤S312)。举例来说,在本实施方式中旗标BC的值为1表示开机能力测试的致能状态 (enabled);值为O表示开机能力测试的禁能状态(disabled)。然而,旗标BC可以利用不同的 信息指示是否要进行所述开机能力测试。最后由上述更新模块13结束固件更新动作。
在步骤S316中,上述更新模块13判别上述新固件12的储存动作是否成功(步骤S316)。如否,上述更新模块13标示「备区」的固件更新失败(步骤S318)。如是,则执行步骤S310及 S312。
步骤S310中切换「主区」及「备区」的实施方式显示于图4。首先,判别旗标BF的值(步 骤S400)。当旗标BF的值为O时,将旗标BF的值变更为1(步骤S404)。当旗标BF的值为1时,将 旗标BF的值变更为0(步骤S402)。
通过输入单元4的操作,通讯装置100重新开机。请参照图5及图6。通讯装置100开机时 ,处理器I执行加载模块IO以进行以下各步骤(步骤S500)。加载模块10判别旗标BF以辨识开 机用的固件。在步骤S502中,加载模块10以一个变量(以下称为BF—TEMP)记录旗标BF的值( 步骤S502),并判别旗标BC以判断是否要进行开机能力测试。在本实施方式中,BF—TEMP目前 记录的分割区为l,即区域22。在步骤S504中,加载模块10判别旗标BC是否在致能状态(BC等 于l)(步骤S504)。如否,加载模块10直接执行步骤S508。如是,加载模块10切换「主区」 及「备区」(步骤S506),并接着执行步骤S508。步骤S508中,加载模块10加载并执行所述变 量BF—TEMP所记录的区域中的固件以进行后续的开机程序(步骤S508)。在本实施方式中,此 时被加载并执行的为固件12。判别执行的固件是否成功完成开机程序(步骤S510)。如是,则 所述固件继续执行图6中开机成功的后续步骤(步骤S512)。如否,所述固件造成开机失败(步 骤S514),可以通过输入单元4的操作,让通讯装置100重新开机。
若在步骤S514之后,通讯装置100重新开机,由于在步骤S506已切换「主区」及「备区 」,所以处理器l会加载并执行原固件ll,而非新固件12。
图5的步骤S510中,若所述新固件12能运行,使通讯装置100符合预定条件,则通讯装置 IOO判定所述新固件能顺利运行。举例来说,上述预定条件包含多个特定的任务(task),处 理器1执行固件12时,判别上述多个特定的任务是否已加载至通讯装置100的主存储器5,如 是,则判定通讯装置100通过开机能力测试,成功完成开机。上述多个特定的任务为多个软 件模块或程序,当执行时通讯装置100提供特定功能,例如命令行(command line)、超文件 传送协议(HyperText Transfer Protocol,简称HTTP)、动态主机配置协议(Dynamic Host Configuration Protocol,简称DHCP )、 telnet、系统记录(System Log)、网络地址变换 (Network Address Translation, NAT )、 通用随插艮卩用(Universal Plug and Play, UPnP)协议的处理功能。通讯装置IOO可以接收远程服务器的请求让所述远程服务器设置通讯 装置100的设定值。上述任务提供的功能更可以包含与所述远程服务器的互动的功能,例如 用户认证、数据传输及加解密等。
图6中,所述固件成功的完成开机程序后继续执行(步骤S600)并判别开机能力测试是否仍在致能状态。在步骤S602中,判别旗标BC的值是否等于0(步骤S602)。如是,则不需修改 旗标BC(步骤S610)。如否,则变更旗标BC的值为O,将开机能力测试从致能状态切换为禁能 状态(步骤S606),并再次执行「主区」及「备区」的切换(步骤S608)。
在本实施方式中,如果新固件12成功的完成开机程序,在步骤S608中,固件12所在的区 域22会再次被切换为「主区」。若在步骤S608之后,通讯装置100重新开机,由于在步骤 S608已切换「主区」及「备区」,所以处理器1会加载并执行新固件12,而非原固件ll。若 所述新固件12不能顺利运行,则不会执行步骤S608,因此通讯装置100维持所述旗标BF的值 为0,固件11所在的区域21仍然为「主区」。
由上述说明可知,加载模块10在判定所述新固件12是否能顺利运行以前,利用所述旗标 BF以指定开机用的固件为所述新固件以外的原固件ll,或另一固件,并且响应所述装置的开 机动作,加载并运行所述新固件12。若非挥发性内存2具有三个或三个以上的固件,加载模 块10在判定所述新固件12是否能顺利运行以前,利用所述旗标BF以指定开机用的固件为所述 新固件12以外的任一固件,并且响应所述装置的开机动作,加载并运行所述新固件12。
为了避免新固件12运行过程中,未完成图6中的步骤S608以前,输入单元4触发通讯装置 IOO重新开机而产生错误,处理器1可以侦测输入单元4以执行图7的程序。在图7中,处理器 1可以侦测通讯装置100是否被触发重新开机或关机(步骤S700)。如是,处理器l响应所述触 发事件以执行下列步骤。处理器l判别开机能力测试是否仍在致能状态。在步骤S702中,判 别旗标BC的值是否等于0(步骤S702)。如是,表示开机能力测试被禁能,则不需修改旗标BF( 步骤S708)。如否,表示开机能力测试被致能,则维持旗标BC的值为1 (步骤S704),并再次 修改旗标BF以执行切换「主区」及「备区」(步骤S706)。最后,通讯装置100关机或重新开 机(步骤S710)。这样,通讯装置100重新开机后,新固件12能够再被测试一次。
步骤S700中可能由输入单元4触发通讯装置100重新开机或关机,或由停电或其它的意外 事故造成的。通讯装置100可以具有备用电源,使处理器1在测得通讯装置100将要被重新开 机或关机之后,仍然可以执行图7中的步骤。通讯装置100的备用电源可以由电容或电池构成
在某些实施方式中,图3至图7可以由加载模块10执行。在某些实施方式中,图3、 4、 6 及7可以由固件12执行。
由上述说明可知,上述通讯装置在运行新固件以判定新固件是否能顺利运行以前,就利 用旗标BF以指定开机用的固件为所述新固件以外的旧版固件。因此,即使新固件有问题造成 所述通讯装置无法动作时,重新开机后的所述通讯装置会直接以旗标BF指定的旧版固件开机
11,无需另外的操作来改变通讯装置的开机设定。
权利要求
1.一种通讯装置,其特征在于,包括非挥发性内存,包含第一旗标用以指定所述通讯装置开机用的固件,第二旗标用以指定是否要进行开机能力测试,以及第一区域用以储存所述通讯装置的原固件;更新模块,用于取得新固件,并储存所述新固件于所述非挥发性内存中的第二区域,当完成储存所述新固件时,利用所述第一旗标用以指定所述开机用的固件为所述新固件,并利用所述第二旗标致能所述开机能力测试;以及加载模块,用于在判定所述新固件是否能顺利运行以前,利用所述第一旗标指定开机用的固件为所述新固件以外的另一固件,并且响应所述装置的开机动作,加载并运行所述新固件;其中,若所述新固件能运行,使所述装置符合条件,则所述通讯装置判定所述新固件通过所述开机能力测试,更动所述第一旗标的值,以指定所述新固件为开机用的固件;以及若所述新固件未通过所述开机能力测试,则所述通讯装置维持所述第一旗标的值。
2.如权利要求l所述的通讯装置,其特征在于,所述第一及第二区域为所述非挥发性内存的不同分割区。
3.如权利要求l所述的通讯装置,其特征在于,所述装置是否符合所述条件的判别方式即所述通讯装置判别所述新固件是否已启动多个预定的软件程序,如是,则判定所述通讯装置符合所述条件,如否,则判定所述通讯装置不符合所述条件。
4.如权利要求3所述的通讯装置,其特征在于,所述多个预定的软件程序包含处理至少下列功能的其中一者的软件程序命令行、超文件传送协议、动态主机配置协议、telnet、系统记录、网络地址变换及通用随插即用协议的处理功能。
5.如权利要求3所述的通讯装置,其特征在于,所述多个预定的软件程序的其中一者用来接收远程服务器的请求,让所述远程服务器设置所述通讯装置的设定值
6.如权利要求l所述的通讯装置,其特征在于,若所述新固件通过所述开机能力测试,修改所述第二旗标以禁能所述开机能力测试。
7.如权利要求6所述的通讯装置,其特征在于,所述通讯装置侦测所述是否被触发重新开机或关机,如是,判别所述开机能力测试是否已被致能,如开机能力测试已被致能,则在所述通讯装置重新开机或开机以前,修改所述第一旗标以指定所述新固件为所述开机用的固件,如开机能力测试已被禁能,则在所述通讯装置重新开机或开机以前,维持所述第一旗标。
8.如权利要求7所述的通讯装置,其特征在于,所述通讯装置还包含备用电源,用于提供所述通讯装置执行侦测到上述重新开机或关机的触发之后的动作
9.如权利要求l所述的通讯装置,其特征在于,所述非挥发性内存为闪存。
10.如权利要求l所述的通讯装置,其特征在于,所述通讯装置为网络通讯装置。
11.如权利要求l所述的通讯装置,其特征在于,所述新固件以外的另一固件为所述原固件。
12.一种固件更新方法,执行于具有非挥发性内存的通讯装置,所述非挥发性内存包含第一旗标用以指定所述通讯装置开机用的固件、第二旗标用以指定是否要进行开机能力测试、以及第一区域用以储存所述通讯装置的原固件,其特征在于,所述的固件更新方法包括取得新固件,并储存所述新固件于所述非挥发性内存中的第二区域;当完成储存所述新固件时,利用所述第一旗标用以指定所述开机用的固件为所述新固件,并利用所述第二旗标致能所述开机能力测试;以及在判定所述新固件是否能通过所述开机能力测试以前,利用所述第一旗标以指定开机用的固件为所述新固件以外的另一固件;响应所述装置的开机动作,加载并运行所述新固件;其中,若所述新固件能运行,使所述装置符合条件,则所述通讯装置判定所述新固件通过所述开机能力测试,更动所述第一旗标的值,以指定所述新固件为开机用的固件;以及若所述新固件未通过所述开机能力测试,则所述通讯装置不更动所述第一旗标的值。
13.如权利要求12项所述的固件更新方法,其特征在于,所述装置是否符合所述条件的判别方式包含判别所述新固件是否已启动多个预定的软件程序;如是,则判定所述通讯装置符合所述条件;以及如否,则判定所述通讯装置不符合所述条件。
14 如权利要求13项所述的固件更新方法,其特征在于,所述多个预 定的软件程序包含处理至少下列功能的其中一者的软件程序命令行、超文件传送协议、动 态主机配置协议、telnet、系统记录、网络地址变换及通用随插即用协议的处理功能。
15 如权利要求13项所述的固件更新方法,其特征在于,所述多个预 定的软件程序的其中一者用来接收远程服务器的请求,让所述远程服务器设置所述通讯装置 的设定值。
16 如权利要求12项所述的固件更新方法,其特征在于,所述的固件 更新方法还包含若所述新固件通过所述开机能力测试,修改所述第二旗标以禁能所述开机能力测试。
17 如权利要求16项所述的固件更新方法,其特征在于,所述的固件 更新方法还包含其中所述通讯装置侦测所述是否被触发重新开机或关机; 如是,判别所述开机能力测试是否已被致能;如开机能力测试已被致能,则在所述通讯装置重新开机或开机以前,修改所述第一旗 标以指定所述新固件为所述开机用的固件;如开机能力测试已被禁能,则在所述通讯装置重 新开机或开机以前,维持所述第一旗标。
18 如权利要求17项所述的固件更新方法,其特征在于,所述的固件 更新方法还包含利用所述通讯装置的备用电源以提供所述通讯装置执行侦测到上述重新开机或关机的 触发之后的动作。
19 如权利要求12项所述的固件更新方法,其特征在于,所述新固件 以外的另一固件为所述原固件。
20 一种固件更新方法,执行于具有非挥发性内存的装置中,所述装 置的原固件储存于所述非挥发性内存中的第一区域,其特征在于,所述的固件更新方法包括 下列步骤取得新固件,并储存所述固件于所述非挥发性内存中的第二区域;当完成储存所述新固件时,进行开机能力测试; 所述开机能力测试还包含在判定所述新固件是否能通过所述开机能力测试以前,利用旗标,以指定所述新固件以外的另一固件为所述装置开机用的固件;响应所述装置的开机动作,加载并运行所述新固件;若所述新固件能运行,使所述装置符合条件,则判定所述新固件通过所述开机能力测 试,并更动所述旗标的值,以指定所述新固件为所述开机用的固件;以及若所述新固件未通过所述开机能力测试,则维持所述旗标的值。
21.如权利要求20所述的固件更新方法,其特征在于,所述的固件更 新方法还包含当完成储存所述新固件时,指定所述新固件为所述装置的开机用的固件。
全文摘要
一种固件更新方法,执行于具有非挥发性内存的装置。所述装置的原固件储存于所述内存中的第一区域。首先,取得并储存新固件于所述内存中的第二区域。当完成固件储存时,测试开机能力。所述开机能力测试还包含在判定所述新固件是否能通过所述测试以前,利用旗标以指定所述新固件以外的另一固件为所述装置开机用的固件;响应所述装置的开机动作,加载并运行所述新固件;若新固件能运行,使所述装置符合预设的条件,则判定所述新固件通过所述开机能力测试,并更动所述旗标值,指定新固件供下次开机用;以及若所述新固件未通过所述开机能力测试,则维持所述旗标值。利用所述的固件更新方法可以避免固件版本或设计错误所造成的开机问题。
文档编号H04N5/00GK101526903SQ20081030049
公开日2009年9月9日 申请日期2008年3月7日 优先权日2008年3月7日
发明者陈建华 申请人:鸿富锦精密工业(深圳)有限公司;鸿海精密工业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1