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

文档序号:6574438阅读:172来源:国知局
专利名称:更新固件的方法及装置的制作方法
技术领域
本发明是有关于一种具有微控制器的装置,特别是关于一种用来更新微控制器的固件的方法及装置。
背景技术
在我们现代化的高科技社会中,各式各样的计算机及电子装置种类是很丰富的。很多这些装置的核心部分都是一个微控制器,其可被视为这些装置的“大脑”。一般而言,微控制器是根据机器码(machine code)(或称为固件代码(firmware code))以执行所需的运作。固件是为一设置在微控制器中的电子指令集(electronic instruction set),用来使微控制器执行所需功能并达到其设计目标。举例来说,基本的电子表中的固件较简单,主要是用来追踪时间并处理使用者所需的闹钟及铃声等功能。移动电话的固件则较为复杂,能提供使用者界面、移动电话传送/接收协议、音频处理算法及其它功能等等。
对于更为复杂的电子装置而言,往往需要定期地更新固件。这类固件不仅包含正常运作所需的指令集,也包含使用者设定及内建的较次要数据。因此经由更新固件便可以更新某些特性或前述的各种数据,改变装置的设置,同时也可以修复机器码中所存在的错误(或称为“臭虫(bug)”)。一般来说,固件是储存在电子装置的非易失性内存(non-volatile memory)中,并可从非易失性内存中被读取。使用非易失性内存的主要原因是非易失性内存可以保证当装置重新启动后,储存在内部的固件及相关设置仍能保存完好而不致因断电而消失,但是非易失性内存比易失性内存昂贵。因此大多数的装置会采用非易失性内存来储存固件,而采用易失性内存来储存其它次要的程序。
图1为用来更新固件相关技术的微控制器架构100的示意图。如图所示,一个典型的用以更新微控制器固件的架构100是包括微控制器110、易失性内存120、非易失性内存130、闪存更新(flash update)控制器140及多工器150。一般而言,固件代码是经由多工器150从非易失性内存130中读出,Update_enable信号最初被选取以允许非易失性内存130所储存的数据(亦即固件)被送至微控制器110中。同时,微控制器110所执行的次要的程序会被储存在易失性内存120中;Data_in信号及Data_out信号分别代表用来存取非易失性内存130的数据流的数据输入路径及数据输出路径。
图2为使用图1所示的微控制器架构100来进行固件更新程序的流程图。当固件需要被更新时(步骤210),通过发出Data_path_stop信号可以中止易失性内存120的数据传输路径(步骤220),如此一来,所有其它的软件程序都不能对易失性内存120进行存取。接着,微控制器110会读取非易失性内存130中的固件代码,并将固件代码复制到易失性内存120中(步骤230)。然后,微控制器110会通过改变多工器150的Update_enable信号来将固件读取来源(firmware fetching source)由非易失性内存130改为易失性内存120(步骤240),以将易失性内存120视为新的固件读取来源。接着,微控制器110会将控制信号送至闪存更新控制器140。当闪存更新控制器140接收到控制信号时,会对非易失性内存130进行固件代码更新(步骤250),同时,微控制器110会重新开始程序。亦即,当固件更新完成后,微控制器110会将固件读取来源改回非易失性内存130(步骤260),并恢复易失性内存120的数据传输。
图2所示的程序虽然可以用来更新固件,但是此种作法仍具有一些缺点。
首先,此种作法需要使用到一个易失性内存120,而且在更新程序中需要对易失性内存120进行独占存取。在更新程序期间,易失性内存120的数据传输路径会被中止,以避免其它程序对易失性内存120进行存取,并且对微控制器110执行固件更新造成潜在的影响。若在更新程序期间,还有其它组件需要使用到易失性内存120,则会导致系统的整体效能大幅降低。
其次,现有的固件代码是自非易失性内存130被复制到易失性内存120中,而在更新程序期间自易失性内存120中读出。因此在更新程序期间,易失性内存120必须分配一部分特定空间来储存固件代码。使得微控制器110的其它程序无法使用到易失性内存120的完整空间,因此减少了易失性内存120的有效使用空间。更且,将固件由一个内存复制到另一个内存的操作本身是一个麻烦又耗时的步骤,并且需要占用微处理器的数个机器码步骤或频率周期才能执行完毕。这些额外增加的程序或机器码步骤本身即具有相当的困难度,因此更容易造成整体系统的不稳定或死机。
再次,某些程序必须将使用者的某些特定数据储存在非易失性内存130中,然而在更新程序期间,微控制器110存取却无法非易失性内存130,如此一来,可能会使这些程序产生错误,进而降低系统的性能,甚至导致系统死机。

发明内容
为解决以上技术问题,本发明提供了一种具有可更新的固件的装置及更新固件的方法。
本发明提供了一种具有可更新的固件的装置,包括一非易失性内存,用以储存固件;一频率使能控制器,用以在一频率非使能信号未被发送时,根据一频率来源信号产生一频率信号,并且当频率非使能信号被发送时将频率信号暂停;一微控制器,耦接至非易失性内存,用以根据固件及频率信号来执行装置运作,并且发送一触发信号以初始固件的一更新程序;以及一更新控制器,耦接至微控制器、频率使能控制器及非易失性内存,用以发送频率非使能信号,并用以在触发信号被发送时,更新固件。
本发明提供了一种用以更新固件的方法,方法包括提供一非易失性内存,用以储存固件;当一频率非使能信号未被发送时,根据一频率来源信号产生一频率信号;当频率非使能信号被发送时,将频率信号暂停;提供一微控制器,用以根据固件及频率信号来执行装置运作;利用微控制器发送一触发信号以初始固件的一更新程序;利用一更新控制器发送频率非使能信号以暂停频率信号,因此在触发信号被发送时,暂停微控制器的装置运作;以及在频率非使能信号被发送之后,更新固件。
本发明提供的一种具有可更新的固件的装置及更新固件的方法,通过固件的一更新程序将微控制器的频率信号暂停于微控制器的完整指令周期的结束时间点,可以避免微控制器产生的时序错误或程序错误。在更新程序中不需要使用到易失性内存,因此不会对易失性内存进行独占存取,增加了易失性内存的有效使用空间,提高了整体系统的效能及系统的稳定性。


图1为更新固件的相关技术的微控制器架构的示意图。
图2为图1所示的微控制器架构的固件更新程序的流程图。
图3为本发明一实施例的更新固件的装置的示意图。
图4为一微控制器的操作时序图。
图5为本发明一实施例的更新固件的方法的流程图。
具体实施例方式
为了解决上述的问题,本发明揭露了一种用来更新固件的方法及装置。请参照图3,其为本发明一实施例的更新固件的装置300的示意图。如图所示,装置300包括一微控制器310、一频率使能控制器320、一更新控制器330及一非易失性内存(non-volatile memory)340。接下来将说明装置300中每一个元件及相关的运作。
请参阅图3,微控制器310耦接至非易失性内存340,并根据位于非易失性内存340中的固件来执行装置运作。微控制器310仅在频率信号产生时才会执行装置运作,而在其它情形下,暂停(pause)运作。当频率非使能(disable)信号未被发送(unasserted)时,频率使能控制器320会接收一频率来源信号并产生一频率信号至微控制器310。当频率非使能信号被发送(asserted)时,频率使能控制器320会暂停频率信号,从而使得微控制器310的运作暂停。更新控制器330是耦接至微控制器310、频率使能控制器320及非易失性内存340。更新控制器330是用来发送频率非使能信号,并在触发信号被微控制器310发送时,更新非易失性内存340中的固件。
以下将进一步地详细说明使用装置300进行固件更新的整个过程。在通过发送触发信号以开始固件的更新程序之前,微控制器310会将已更新的固件代码经由设定信号的传输线发送至更新控制器330。这是因为在固件的更新过程中,微控制器310的所有运作都会被暂停,并且更新控制器330必须具有已更新的固件代码才能将非易失性内存340中的固件加以更新。因此在触发信号被发送以开始固件的更新程序之前,更新控制器330就必须先接收到已更新的固件代码。
在微控制器310接收到关于固件更新的要求(request)并发送已更新的固件代码至更新控制器330之后,微控制器310会通过发送触发信号以通知更新控制器330来开始进行固件的更新程序。更新控制器330接收到由微控制器310所传来的触发信号后,便会发送一频率非使能信号至频率使能控制器320。如上所述,频率使能控制器320将根据频率非使能信号发送一频率信号到微控制器310。当不发送频率非使能信号时,频率信号被发送至微控制器310,当发送频率非使能信号时,频率信号不会被发送至微控制器310,因此微控制器310的运作便被暂停。如此一来,一旦触发信号被微控制器310发送,微控制器310的运作便会因为其相关的频率信号被停止而暂停。
当微控制器310暂停运作时,更新控制器330会更新非易失性内存340中的固件。更新控制器330是经由一数据总线(data bus)而耦接至非易失性内存340,并使用已更新的固件代码来将非易失性内存340中的固件加以更新,已更新的固件代码是由先前微控制器310经由相关信号线所提供的。当非易失性内存340中的固件的更新程序完成时,更新控制器330不再发送频率非使能信号。使得频率使能控制器320可以再次提供频率信号至微控制器310,进而使得微控制器310能再次接收到频率信号并且可以重新开始正常的装置运作,如此一来,微控制器310便可以使用非易失性内存340中已经被更新的固件来运作。
在本发明的一实施例中,为了避免微控制器310的运作在机器码(machinecode)执行步骤中突然被停止,将在微控制器310的一个完整指令周期(complete command cycle)的结束时间点暂停频率信号,如此一来,可以避免当微控制器310再次接收到频率信号并恢复运作时所可能产生的任何时序错误或程序错误。举例来说,假使某一个指令需占用四个机器码步骤来完成,而固件的更新程序却在第二个机器码步骤中被初始,则频率信号将被延迟至第四个机器码步骤完成后,即整个指令完成后才会被暂停。
图4为本发明实施例的微控制器310的操作时序图。如图所示,此实施例中,一个指令将在四个频率周期(亦即四个机器码步骤)内被执行并完成;读写信号在频率周期c1至c2间开始被发送,直到闩锁信号在周期c2所产生的负缘(falling edge)后的下一个频率周期,读写信号才被停止发送。在时间点402,在读写信号被闩锁(latch)之前,触发信号在周期c2间被发送。照理说,触发信号会导致频率信号的暂停,然而由于微控制器310仍在执行目前的指令,因此频率信号必须等到读写信号经由闩锁而完成之后才会被暂停。当触发信号在时间点404被释放后,频率使能控制器320会开始等待一个适当的时间点来将频率信号暂停,而读写信号会保持目前的状态直到下一个周期c2,读写信号最终在时间点406被闩锁。在读写信号已经被闩锁后,机器码步骤被完成,频率使能控制器320便可以在时间点408暂停频率信号,亦即第4个频率周期c4的结束时间点。而微控制器310将会由时间点408(亦即下一个周期c1的开始时点)起开始恢复运作并准备接受下一个指令的机器码步骤。
根据本发明的不同实施例,可以有多种不同作法来保证频率信号被暂停于微控制器310的一完整指令周期的结束时间点。举例来说,在一实施例中,频率使能控制器320可用来将频率信号暂停于一完整指令周期的结束时间点,而在另一实施例中,微控制器310可以在完整指令周期的结束时间点发出触发信号,在又一实施例中,更新控制器330在一频率非使能检查单元检测到微控制器310的完整指令周期的结束时间点时,发出频率非使能信号。上述几种作法皆可以实现将频率信号暂停于适当时间点(亦即微控制器的完整指令周期的结束时间点),并且,本领域的技术人员在理解上述作法的原理后所设计出来的其它可能作法都应属于本发明的范围。
图5为本发明一实施例的更新固件的方法的流程图。请注意,假若能达成相同的结果,图5所示的更新固件的步骤并不一定要依循图标中的顺序来执行,且相邻的两个步骤不一定是连续的(亦即,可以在任何相邻的两个步骤中插入其它的步骤)。如图所示,在此实施例中,更新固件的方法是包括以下步骤步骤510根据频率来源信号产生频率信号;步骤520提供一微控制器以根据固件及频率信号来执行装置运作;步骤530发送触发信号以初始固件的更新程序;步骤540发送频率非使能信号以将频率信号暂停,从而暂停微控制器的装置运作;步骤550更新固件;步骤560将频率信号使能以恢复微控制器的运作。
与相关技术相比,本发明更新固件的装置300提供了较为简单但非常完整的流程来更新固件。由于在本发明中固件不会由非易失性内存中被复制,因此本发明的装置中便不需要易失性内存;另一方面,若本发明的装置中具有易失性内存,则在进行固件更新程序时,装置中其它的组件仍然能够对易失性内存进行存取,换句话说,因为本发明的更新方法不需要用到易失性内存,因此在进行固件更新程序时,便不需要中止易失性内存的数据传输路径,亦不需要更改固件的读取来源。在本发明中,由于易失性内存不需要分配任何空间给更新程序来使用,因此微控制器中其它的程序便可以使用到易失性内存的完整空间。
在本发明中,微控制器的运作在固件的更新程序中会被暂停,如此一来,可以提供许多相关技术所没有的优点。在相关技术中,微控制器在固件的更新程序中仍会继续执行其运作,因此若此时微控制器突然终止或死机,由于更新程序仍须根据微控制器的运作来进行,因此固件的更新程序将无法顺利完成。在相关技术中,由于更新控制器在更新程序进行时将独占整个易失性内存,因此微控制器在更新程序进行时便无法对易失性内存进行存取。再者,在相关技术中,微控制器在固件更新操作中依据最新的固件所执行的程序将无法顺利完成,因为其仍会根据易失性内存中先前版本的固件来进行,即便非易失性内存中的固件最后已完成更新。
而在本发明中,更新控制器是可以在微控制器自暂停运作到恢复运作的这段时间内完成固件的更新程序,如此一来,便可以避免微控制器在更新程序进行时突然终止或死机。再者,由于微控制器的运作在更新程序进行时会被临时暂停,因此微控制器便不需要对非易失性内存进行存取,因此与相关技术相比,本发明可以大幅减少固件在更新时整体装置所产生的错误。在本发明中,当固件的更新程序完成时,微控制器便可以使用最新版本的固件来恢复其运作。更且,与相关技术相比,本发明提供了一个步骤较少且较简单的固件更新程序,因此本发明的执行效率将大幅提升,同时由于本发明中微控制器所需进行的程序较少,因而使得在更新固件时,整体装置所产生的错误及死机状况可以大幅减少。
上述实施例仅用于说明本发明,而非用于限定本发明。
权利要求
1.一种具有可更新的固件的装置,其特征在于,该装置包括一非易失性内存,用以储存所述的固件;一频率使能控制器,用以在一频率非使能信号未被发送时,根据一频率来源信号产生一频率信号,并且当所述的频率非使能信号被发送时,将所述的频率信号暂停;一微控制器,耦接至所述的非易失性内存,用以根据所述的固件及所述的频率信号来执行装置运作,并且发送一触发信号以初始所述的固件的一更新程序;以及一更新控制器,耦接至所述的微控制器、所述的频率使能控制器及所述的非易失性内存,用以发送所述的频率非使能信号,并用以在所述的触发信号被发送时,更新所述的固件。
2.如权利要求1所述的装置,其特征在于,所述的微控制器进一步在所述的触发信号被发送之前提供已更新的固件代码至所述的更新控制器,且所述的更新控制器进一步在所述的频率非使能信号被发送后,根据所述的已更新的固件代码来更新所述的固件。
3.如权利要求1所述的装置,其特征在于,所述的频率使能控制器进一步当所述的频率非使能信号被发送时,在所述的微控制器的一完整指令周期的一结束时间点暂停所述的频率信号。
4.如权利要求1所述的装置,其特征在于,所述的微控制器进一步在所述的微控制器的一完整指令周期的一结束时间点发送所述的触发信号,以初始所述的固件的更新程序。
5.如权利要求1所述的装置,其特征在于,所述的更新控制器进一步用以检测所述的微控制器的一完整指令周期的一结束时间点,并用以当所述的触发信号被发送时,在所述的完整指令周期的所述的结束时间点发送所述的频率非使能信号。
6.一种用以更新固件的方法,其特征在于,该方法包括提供一非易失性内存,用以储存所述的固件;当一频率非使能信号未被发送时,根据一频率来源信号产生一频率信号;当所述的频率非使能信号被发送时,暂停所述的频率信号;提供一微控制器,用以根据所述的固件及所述的频率信号来执行装置运作;利用所述的微控制器发送一触发信号以初始所述的固件的一更新程序;利用一更新控制器发送所述的频率非使能信号以暂停所述的频率信号,因此在所述的触发信号被发送时,暂停所述的微控制器的装置运作;以及在所述的频率非使能信号被发送后,更新所述的固件。
7.如权利要求6所述的方法,其特征在于,该方法进一步包括利用所述的微控制器在所述的触发信号被发送之前,提供已更新的固件代码至所述的更新控制器,以及在所述的频率非使能信号被发送之后,根据所述的已更新的固件代码来更新所述的固件。
8.如权利要求6所述的方法,其特征在于,该方法进一步包括在所述的频率非使能信号被发送之后,在所述的微控制器的一完整指令周期的一结束时间点暂停所述的频率信号。
9.如权利要求6所述的方法,其特征在于,该方法进一步包括在所述的微控制器的一完整指令周期的一结束时间点,发送所述的触发信号,以初始所述的固件的更新程序。
10.如权利要求6所述的方法,其特征在于,该方法进一步包括当所述的触发信号被发送时,在所述的微控制器的一完整指令周期的一结束时间点发送所述的频率非使能信号。
全文摘要
本发明揭露了一种具有可更新的固件的装置,装置包括一非易失性内存,用以储存固件;一频率使能控制器,用于一频率非使能信号未被发送时,根据一频率来源信号产生一频率信号,并且当频率非使能信号被发送时,将频率信号暂停;一微控制器,耦接至非易失性内存,用以根据固件及频率信号来执行装置运作,并且发送一触发信号以初始固件的一更新程序;以及一更新控制器,耦接至微控制器、频率使能控制器及非易失性内存,用以发送频率非使能信号,并用以在触发信号被发送时,更新固件。本发明提供的装置及其更新方法,可在固件更新时避免微控制器产生的时序错误或程序错误;在更新程序中不需要使用到易失性内存,提高了整体系统的效能及稳定性。
文档编号G06F9/445GK101034360SQ200710086138
公开日2007年9月12日 申请日期2007年3月2日 优先权日2006年3月6日
发明者叶裕隆 申请人:联发科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1