专利名称:更新光盘系统固件的方法
技术领域:
本发明涉及光盘系统,特别是涉及一种在一光盘系统中用以更新该光盘系统的固件的方法。
背景技术:
近来光盘系统在使用上显著的普及化,由于光盘系统的持续发展,各种改良方式也持续的产生。然而,这些改进并不只限于研发出新的光盘系统,有时可能可以经由一固件更新去增加现存的光盘系统的功能,或是改进现存光盘系统原有的功能。如美国专利第6,170,043号,「Method forcontrolling an optic disk」,Hu披露了一种已知技术的仪器与方法,用以更新一光盘系统中的固件。在已知技术中,更新后的固件数据储存于无论是一光盘片上或是一计算机上,已知技术的装置均可使用该更新后的固件数据以更新该光盘系统的固件。
请参照图1,图1为已知技术的光盘系统与其外围单元的方块图。在图1中,一光盘系统控制芯片200被用以更新固件信息,该固件信息被储存于一存储器210,例如一闪速存储器210或是一电可擦除可编程只读存储器(EEPROM)。系统控制芯片200包含一外加存储器202,例如一动态随机存取存储器(dynamic random access memory,简称为DRAM),系统控制芯片200还包含一微处理器204、一译码器206与一控制器208。微处理器204分别耦接于外加存储器202、译码器206、控制器208与闪速存储器210,以便直接控制控制器208与译码器206,以及直接存取闪速存储器210与外加存储器202。译码器206与控制器208彼此耦接。控制器208被用以接收外部控制讯号与信息,例如从一射频(radio-frequency,简称为RF)放大器与控制器110来的控制讯号,以及经由该射频放大器与控制器110储存在一光盘片上的信息,该光盘片是指例如一数字式多功能激光视盘(digitalversatile disk,简称为DVD)或是一CD光盘片100。译码器206耦接于一缓冲存储器212,缓冲存储器212为系统控制芯片200的外部存储器。缓冲存储器212可以是一DRAM,可经由一主机板接口214与一计算机216沟通。主机板接口214可以是一IDE(integrated drive electronics)接口、一EIDE接口、一小型计算机系统接口(small computer system interface,简称为SCSI接口)、一RS232接口、一通用序列总线(universal serial bus,简称为USB)接口,或是一IEEE 1394接口。
当该光盘系统在一正常模式运作时,并不需要去更新固件信息,微处理器204经由一数据总线读取被储存在闪速存储器210的信息,在图1里,该数据总线藉由连接到每一单元的线路来表示。该数据总线提供在每一单元彼此间所需要的耦接。在正常模式运作时,闪速存储器210被提供给一系统程序作为一存储器空间使用,用以储存所有的执行指令。外加存储器202被当作一存储器空间使用以储存一般信息,例如从光盘片100来的信息。
一般而言,当计算机216被开启或是重设时,微处理器204首先会初始化该光盘系统,然后停留在队列状态以接受从计算机216来的一命令,以开始从光盘片100读取信息。当计算机216送出该命令要求一读取,微处理器204会接着送出所需要的参数以控制控制器208与译码器206以驱动一马达与一光学读取头(未显示)去读取光盘片100的信息。若有需要,光盘片100的信息会被译码器206译码与改正,然后被储存在缓冲存储器212。经由主机板接口214与译码器206,计算机216因此可以读取储存在缓冲存储器212内的该信息。在此阶段,外加存储器202被用以储存一般信息,闪速存储器210被用以储存该系统程序,该系统程序被用以执行光盘系统的运作。
在一软件更新模式时,该光盘系统需要去更新固件信息。一更新程序可藉由下列两种方式被安装在该光盘系统藉由从光盘片100读取该更新程序,或是藉由执行已被下载至计算机216的特殊的安装软件下载该更新程序。该更新程序包含一程序代码与一软件更新例程。该程序代码被视为是要被更新的数据。该更新程序通常将会发出一闪速存储器命令以更新闪速存储器210,在此更新模式中,外加存储器202被用以储存该软件更新例程,该程序代码数据最初先被储存于缓冲存储器212。
微处理器204从外加存储器202读取之后并且执行存在于该软件更新例程中的指令。储存于缓冲存储器212的该程序代码数据被相继的写入闪速存储器210,闪速存储器210被当作是给该程序代码数据的一存储器空间。于此,该程序代码被视为是要被更新的该固件信息的数据。从缓冲存储器212中得到的该程序代码数据的一加总核对码(checksum)被计算出以及被拿来与另一加总核对码作比较,而另一加总核对码是一被写进闪速存储器210的该程序代码的加总核对码,比较这两个加总核对码以确认在该写入过程中有无错误发生。在闪速存储器210中的该固件被更新后,在该固件中的该系统程序信息被执行。
上述的简要说明,请参照图2,图2为已知技术的固件更新程序的流程图。
步骤300决定该更新后的固件是存在于光盘片100或是在一外部来源,例如计算机216;若该固件在光盘片100,则进行至步骤302;若否,则进行至步骤304;步骤302从光盘片100复制该程序代码至缓冲存储器212,从光盘片100复制该软件更新例程至外加存储器202;在此时,微处理器204将闪速存储器210视为数据存取存储器,而将外加存储器202视为执行程序存储器;进行至步骤306;步骤304从该外部来源复制该程序代码至缓冲存储器212,从该外部来源复制该软件更新例程至外加存储器202;在此时,微处理器204将闪速存储器210视为数据存取存储器,而将外加存储器202视为执行程序存储器;以及步骤306执行储存于外加存储器202的该软件更新例程;此步骤将储存于缓冲存储器212的该程序代码写入闪速存储器210,以更新储存于闪速存储器210的该固件信息;闪速存储器210被视为是执行程序存储器,外加存储器202被视为是数据存取存储器,而存在于闪速存储器210的该系统程序信息被执行。
请参照图3,图3为已知技术的一切换过程的方块图,该切换过程是指从储存于外部存储器202的一软件更新例程的执行,切换至储存于闪速存储器210的该系统程序信息的执行。如同刚才在步骤306中所陈述的,微处理器204去执行储存于外加存储器202的该软件更新例程,以将储存于缓冲存储器212的该程序代码写入闪速存储器210。在成功的执行该软件更新例程之后,闪速存储器210内的该固件会被更新,然后微处理器204从储存于外部存储器202的该软件更新例程的执行,切换到执行被储存于闪速存储器210的该系统程序信息。
在该切换之后,不幸的是,微处理器204的一程序计数器可能会包含一数值,该数值将使得微处理器204无法从执行位于外加存储器202的该软件更新例程顺利地切换至执行位于闪速存储器210的该系统程序,且微处理器204可能会开始执行位于闪速存储器210的问题区域。若储存于闪速存储器210的新的固件信息的长度异于旧有的固件信息的长度,则上述的问题可能发生。举例来说,假设在紧接着更新闪速存储器210的该固件之后,微处理器204在该固件中应该会执行一“jump”(跳跃)或“return”(传回)的陈述式,然而,既然该固件已被更新,一“if”(如果)陈述式现在存在于该跳跃或传回陈述式该存在的地方。闪速存储器210内的该已被改变的区域被标示成图3中的问题区域260,微处理器204将从该区域开始执行。该区域紧邻在被标示为核心区域250的该问题区域之前。当微处理器204执行位于问题区域260内的固件指令,可能会发生未知的执行结果,而微处理器204可能无法正确的执行。
发明内容
因此,本发明的主要目的在于提供一种用以更新一光盘系统的固件信息的方法,以解决上述已知的问题。
本发明披露了一种更新方法,在一光盘系统中被用以更新储存于一固件存储器的固件信息。该方法包含以下步骤从一更新来源撷取出程序代码与一软件更新例程;储存该程序代码至一第一缓冲区,储存该软件更新例程至一第二缓冲区;执行储存于该第二缓冲区的该软件更新例程;利用该软件更新例程将储存于该第一缓冲区的该程序代码写入该固件存储器,以更新该固件信息;改变该微处理器的程序计数器的数值,以使得该微处理器去执行位于该固件存储器的该预设地址的程序代码,而非执行在该程序代码中的下一指令,该指令位于该程序计数器的目前地址之后,继而使用该程序代码作为更新后固件信息以控制该光盘系统。
本发明的一优点为改变该微处理器的程序计数器的数值,以便该微处理器可以执行位于该固件存储器的该预设地址的程序代码,而非执行该下一指令。如此将可避免该微处理器去执行位于该新的更新后固件当中的未知的指令,而允许该微处理器从该固件中已知的地址开始执行。因为若执行该新的更新后固件当中的未知的指令,可能会导致该微处理器停止正确的运作。
图1为已知技术的光盘系统与其外围单元的方块图。
图2为已知技术的固件更新程序的流程图。
图3为已知技术的一切换过程的方块图,该切换是从储存于一外部存储器的一软件更新例程的执行,切换至储存于一闪速存储器的该系统程序信息的执行。
图4为本发明的光盘系统的方块图。
图5为本发明的更新光盘系统内的固件的方法流程图。
图6为本发明的光盘系统的控制电路的方块图,该控制电路被用以提供一重置讯号给该光盘系统的微处理器。
图7为表示用于控制电路中的控制讯号彼此间的关系的时序图。
附图符号说明100光盘片110射频放大器与控制器200光盘系统控制芯片 202外加存储器204微处理器 206译码器208控制器210闪速存储器212缓冲存储器214主机板接口216计算机500控制电路具体实施方式
请参照图4,图4为本发明的光盘系统的方块图。除了图4中的光盘系统里新增一控制电路500,图4与图1中的光盘系统是完全相同的。控制电路500被连接到微处理器204以协助控制微处理器204的运作,细节部分将会在之后被完整详细的解释。既然所有其它的构成要件是相同的,图4中与接下来的叙述中的所用的参考编号会与图1中所用到的编号相同。
请参照图5,图5为本发明的更新光盘系统内的固件的方法流程图。请注意到除了一新步骤408之外,在该流程图中的所有步骤均与图2中的已知技术的方法中的所有步骤相同。
步骤400决定该更新后的固件是存在于光盘片100或是一外部来源,例如计算机216;若该固件在光盘片100,则进行至步骤402;若否,则进行至步骤404;步骤402将该程序代码从光盘片100复制到缓冲存储器212,将该软件更新例程从光盘片100复制到外加存储器202;在此时,微处理器204将闪速存储器210视为数据存取存储器,并将外加存储器202视为执行程序存储器;进行至步骤406;步骤404将该程序代码从该外部来源复制到缓冲存储器212,将该软件更新例程从该外部来源复制到外加存储器202;在此时,微处理器204将闪速存储器210视为数据存取存储器,并将外加存储器202视为执行程序存储器;进行至步骤406;步骤406执行储存于外加存储器202的该软件更新例程;此步骤将储存于缓冲存储器212的该程序代码写入闪速存储器210,以更新储存于闪速存储器210的该固件信息;然后闪速存储器210被视为是执行程序存储器,而外加存储器202被视为是数据存取存储器;以及步骤408改变微处理器204的程序计数器的一数值,使得微处理器204去执行储存于闪速存储器210的一预设地址的该程序代码,而非执行在该程序代码中的下一指令,该指令位于该程序计数器的目前地址之后;执行存在于闪速存储器210的该预设地址的该系统程序信息,以控制该光盘系统。
如同图5的流程图中,本发明方法新增一步骤(步骤408)至已知技术的固件更新方法。该步骤包含改变微处理器204的程序计数器的数值,最好以下述方式完成在成功的将该更新后的固件存入闪速存储器210之后,重设微处理器204。重设微处理器204将会自动的将微处理器204的程序计数器重设回一默认值,而将允许微处理器204从一预设起始地址开始执行该固件内的指令。
除了重设微处理器204之外,另一改变微处理器204的程序计数器的数值的方式是藉由让微处理器204执行一跳跃或传回陈述式,如此将会把微处理器204的程序计数器重设回一默认值,而该默认值亦可以与若微处理器204被重设时所用的默认值相同。在将微处理器204的该程序来源从外加存储器202切换至闪速存储器210之后,藉由执行该跳跃或传回陈述式,微处理器204可从该固件的一预设起始地址去执行指令。然而只有当在外加存储器202中的该跳跃或陈述式的地址与该跳跃或传回陈述式位于闪速存储器210内的地址相同(亦即这两个程序计数器拥有同样的数值)时,才能执行上述方法。关于在本发明中的该跳跃或传回陈述式的使用的考虑,与已知技术中的考虑是相同的。既然已知技术没有使用该硬件上的方法将该程序计数器改成该默认值,该固件必须使用该跳跃或传回的方法。此外,研发该固件的程序设计师必须要留意此问题,否则,在将微处理器204的该程序来源从外加存储器202切换至闪速存储器210之后,该程序计数器将会包含一无法预期的数值。一般而言,程序设计师应该在更新闪速存储器210里的该固件之后,去确认核心区域250与外加存储器202内的该程序是相同的。前述方式是用以确认该跳跃或传回陈述式在外加存储器202内与闪速存储器210内的地址为相同的方法中最容易的一种。
这些用以改变微处理器204的该程序计数器的数值的每一技术,都将避免已知技术方法的问题发生。亦即,在该固件被更新后,微处理器204并不执行在闪速存储器210内的未知指令,相反的,微处理器204可开始执行从该更新后固件的一已知的预设地址的指令。另一方面,已知技术方法需要使用该跳跃或传回的方法,而程序设计师在撰写该软件更新子例程时需要特别的小心注意。因此,藉由使用本发明方法,即使在一成功的固件更新之后,该软件更新子例程与储存于固件存储器210中的核心区域250内的该信息不同,微处理器204将不会因为执行了未知的指令而停止正确的运作。
请参照图6和图7,图6为本发明的光盘系统的控制电路的方块图,控制电路500被用以提供一重置讯号Reset_MicroP给微处理器204。图7为表示用于控制电路500中的控制讯号彼此间的关系的时序图。两个控制讯号被用以触发该Reset_MicroP讯号,该Reset_MicroP讯号是被用以重设微处理器204,该二控制讯号中,其一为一Select_External_Flash讯号,另一为一Reboot_From_Zero讯号。每次当微处理器204存取闪速存储器210以及每次当微处理器204将更新后固件写入闪速存储器210内时,该Select_External_Flash讯号是处于主动态(active)的。
如图7所示,在时间t0,当微处理器204开始将更新后的固件写入闪速存储器210时,一CPU_Flash_Download讯号是处于主动态的,而在每当微处理器204去存取闪速存储器210以将该新的固件写入闪速存储器210时,该Select_External_Flash讯号会被触发。该Reboot_From_Zero讯号会自动被于更新过程中被微处理器204所执行的该软件更新例程触发而处于主动态。在下面两种情况,该Reboot_From_Zero讯号值可被指定为“1”(1)在第n次对闪速存储器210存取之后,该Select_External_Flash讯号给出的指示时;或者(2)在该更新固件的过程时,该微处理器对闪速存储器210做最后一次存取时。
如图6所示,控制电路500包含一与门电路(AND gate)502,与门电路502接收该Select_External_Flash讯号与该Reboot_From_Zero讯号。当这两个讯号的值皆为1时,该与门电路502会输出一数值“1”至一触发器(flip-flop)506。如图7所示,在时间t1时,当触发器506的一时钟输入(clock input)接收了该Select_External_Flash讯号的一负缘(negative edge),则触发器506接收该输入值,然后触发器506输出该Reset_MicroP讯号,该Reset_MicroP讯号被用以重设微处理器204。
除了Select_External_Flash和Reboot_From_Zero这两个输入讯号之外,其它输入讯号亦可被用在控制电路500上。如图6所示,其它逻辑电路504可被用以接收其它控制讯号Other_Inputs与一时钟讯号(clock)CLK。藉由使用其它的逻辑电路504,可使用额外的条件(additional conditions)与控制电路来产生该Reset_MicroP讯号以重设微处理器204。在此使用该时钟讯号CLK使得控制电路500的设计成为一同步(synchronous)设计。相反的,藉由替换该时钟讯号CLK为一交握(handsha king)讯号,该控制电路可变为异步(asynchronous)设计,在此种设计下,微处理器204使用该交握讯号与闪速存储器210进行交握(handshake)。
与一光盘系统的更新固件信息的已知技术方法比较,本方法藉由无论是重设该微处理器或是藉由执行一跳跃或传回陈述式的方式来确保该光盘系统的该微处理器在更新后将可以正常运作。在每一种情况,该微处理器的程序计数器将会开始执行储存于该闪速存储器的该固件的一预设地址的程序代码,而将不会如同已知技术一样的开始执行未知的程序代码。
以上所述仅为本发明的较佳实施例,凡依本发明权利要求所做的均等变化与修饰,皆应属本发明专利的涵盖范围。
权利要求
1.一种在一光盘系统中用以更新固件信息的更新方法,该固件信息被储存于一固件存储器内,该更新方法使用一微处理器,其中该固件存储器作为该微处理器的内部执行程序存储器,该方法包含以下步骤从一更新来源撷取一程序代码与一软件更新例程;储存该程序代码至一第一缓冲存储器,储存该软件更新例程至一第二缓冲存储器,其中该微处理器将该固件存储器当作一数据存取存储器来存取,并将该第二缓冲存储器当作一执行程序存储器来存取;执行储存于该第二缓冲存储器内的该软件更新例程,并且使用该软件更新例程将储存于该第一缓冲存储器内的该程序代码写入到该固件存储器以更新该固件信息;将该固件存储器当作一内部执行程序存储器来存取,而将该第二缓冲存储器当作一内部数据存取存储器来存取;改变该微处理器的程序计数器的数值,以使得该微处理器去执行位于该固件存储器的该预设地址的该程序代码,而非执行在该程序代码中的下一指令,该指令位于该程序计数器的目前地址之后;使用该程序代码作为更新后的固件信息,以控制该光盘系统。
2.如权利要求1所述的方法,其中藉由重设该微处理器以改变该微处理器的程序计数器的数值,此重设的步骤会将该微处理器的程序计数器重设成一默认值。
3.如权利要求1所述的方法,其中藉由执行在该更新后的固件信息中的该程序代码的一跳跃陈述式以改变该微处理器的该程序计数器,该跳跃陈述式将会把该微处理器的程序计数器重设成一默认值。
4.如权利要求1所述的方法,其中作为该程序代码的撷取来源的该更新来源是被该光盘系统读取的一光盘片,而该软件更新例程是从被该光盘系统读取的该光盘片或是从该闪速存储器的原始内容中被撷取出。
5.如权利要求4所述的方法,其中该光盘片为一CD或DVD光盘,而该光盘系统为一CD或DVD光驱。
6.如权利要求1所述的方法,其中作为该程序代码的撷取来源的该更新来源是经由一接口耦接于该光盘系统的一外围装置,而该软件更新例程是从经由该接口连结到该光盘系统的该外围装置或是从该闪速存储器的原始内容中被撷取出。
7.如权利要求6所述的方法,其中该外围装置是一计算机,该程序代码与该软件更新例程已从一软件来源被下载至该外围装置。
8.如权利要求6所述的方法,其中该接口联结为一IDE接口、一EIDE接口、一SCSI接口、一RS232接口、一USB接口,或是一IEEE 1394接口。
9.如权利要求1所述的方法,其中该固件存储器为一闪速存储器。
10.如权利要求1所述的方法,其中该固件存储器为一电可擦除可编程只读存储器。
11.一光盘系统控制芯片,其被使用在一光盘系统中以更新固件信息,该控制芯片包含有一微处理器,耦接于一数据总线,其中该数据处理器亦经由该数据总线耦接于一固件存储器,该固件存储器被用来储存该固件信息;一译码器,经由该数据总线耦接于该微处理器,其中该译码器亦耦接于一第一缓冲存储器,该译码器从一更新来源接收到更新后的固件信息;一控制器,耦接于该译码器,亦经由该数据总线耦接于该微处理器,其中该控制器用来接收一控制讯号与一般的数据;以及一第二缓冲存储器,经由该数据总线耦接于该微处理器;其中当该光盘系统在一更新模式运作时,该微处理器将该固件存储器作为一数据存取存储器存取,将该第二缓冲存储器作为一执行程序存储器存取,而在该固件被完全更新后,该第二缓冲存储器被当作数据存取存储器来存取,而该固件存储器被当作执行程序存储器来存取,而该微处理器的程序计数器的数值会被改变,以使得该微处理器执行储存于该固件存储器中一预设地址的程序代码,而非执行在该程序代码中的下一指令,该指令位于该程序计数器的目前地址之后。
12.如权利要求11项所述的控制芯片,其中该控制芯片还包含有一控制电路,用来产生一重置讯号,并藉由该控制电路发出该重置讯号到该微处理器以改变该微处理器的该程序计数器的该数值,如此则会将该微处理器的该程序计数器重设为一默认值。
13.如权利要求11项所述的控制芯片,其中藉由下述方式来改变该微处理器的该程序计数器的该数值执行在该更新后固件信息的该程序代码中的一跳跃陈述式,而该跳跃陈述式会将该微处理器的该程序计数器重设为一默认值。
14.如权利要求11项所述的控制芯片,其中作为该更新后固件信息的撷取来源的该更新来源为一经由该光盘系统所读取的一光盘片。
15.如权利要求14项所述的控制芯片,其中该光盘片为一CD或DVD光盘,该光盘系统为一CD或DVD光驱。
16.如权利要求11项所述的控制芯片,其中作为该更新后固件信息的撷取来源的该更新来源为一外围装置,该外围装置经由一接口连结到该光盘系统。
17.如权利要求16项所述的控制芯片,其中该外围装置是一计算机,该程序代码与该软件更新例程已从一软件来源被下载至该外围装置。
18.如权利要求16项所述的控制芯片,其中该接口联结为一IDE接口、一EIDE接口、一SCSI、一RS232接口、一USB接口,或是一IEEE 1394接口。
19.如权利要求11项所述的控制芯片,其中该固件存储器为一闪速存储器。
20.如权利要求11项所述的控制芯片,其中该固件存储器为一电可擦除可编程只读存储器。
全文摘要
本发明提供一种于光盘系统中更新储存于一固件存储器中的固件信息的方法,该方法包含以下步骤(1)从一更新来源撷取一程序代码与一软件更新例程;(2)储存该程序代码至一第一缓冲区,储存该软件更新例程至一第二缓冲区;(3)执行储存于该第二缓冲区的该软件更新例程;(4)将储存于该第一缓冲区的该程序代码写进该固件存储器,以更新该固件信息;以及(5)改变该微处理器的程序计数器的数值,以使得该微处理器去执行位于该固件存储器的该预设地址的程序代码,而非执行在该程序代码中的下一指令,该指令位于该程序计数器的目前地址之后。
文档编号G06F9/445GK1497447SQ20031010274
公开日2004年5月19日 申请日期2003年10月23日 优先权日2002年10月23日
发明者陈炳盛, 郭弘政 申请人:联发科技股份有限公司