检查程序内容确保固件更新相容性的固件更新方法及装置的制作方法

文档序号:6442007阅读:216来源:国知局
专利名称:检查程序内容确保固件更新相容性的固件更新方法及装置的制作方法
技术领域
本发明提供一种固件更新的方法及相关装置,尤指一种在固件更新前检查更新用固件程序码的内容以判断其相容性、适用性的方法及相关装置。
背景技术
在现代化的信息社会中,信息、图像、数据资料都是以电子形式的信号来传输、存储及处理的,而各种各样用来存取电子信号的电子系统、装置,小至手机、大至计算机,也就成为信息建设的关键基础。一般来说,在电子装置中,多半设有一控制电路统一控制电子装置的各种操作;而在功能繁复、多样的电子装置中,由于控制的程序比较复杂,就要用特定的程序码来记录各种控制程序进行的相关步骤及过程;控制电路执行程序码,就能实现电子装置的不同功能。这样的程序码,即被称之为固件程序码;而固件程序码多半被存储于电子装置中的非易失性存储器(如闪速存储器)中,方便控制电路读取、执行。另外,像在计算机系统这种功能更为复杂多样的电子系统中,计算机的各种外围装置本身就具有控制电路及对应的固件程序码;计算机的主机本身仅需发出高层的控制指令至外围装置的控制电路,控制电路就会执行该外围装置本身的固件程序码,控制外围装置的实际操作。举例来说,计算机系统中的光盘机本身就具有其控制电路及对应的闪速存储器,以存储光盘机本身的固件程序码。当计算机的主机要读取一光盘片上的数据时,仅需向光盘机指定该笔数据在光盘片上的地址,光盘机的控制电路就会执行本身的固件程序码,协调光盘机中诸如马达(spindle)、激光读取头(pick-up head)等等机电元件的操作(如马达要达到特定的转速,读取头要移动、锁定至特定的位置,接收光盘片上反射的激光等等),实际实现主机的要求。
请参考图1。图1为一典型电子系统10的功能方块示意图。电子系统10可以是一计算机系统,其中包括有一主机12及一或多个外围装置(图1中绘出两个外围装置14、15做为代表)。外围装置可以是只读光盘机、光盘刻录机、硬盘、外接式的闪速存储器等等;以外围装置14为例来说明典型外围装置中的配置,外围装置14中设有一控制电路16、一缓冲存储器18、一存储存储器20及一伺服硬件22。若电子系统10为一计算机系统,则主机12的典型配置就如图1中所示,其设有一中央处理器26、一北桥电路28A、一南桥电路28B及一易失性的存储器30、绘图卡32A及显示器32B。中央处理器26用来主控主机12的操作,存储器30用来暂存中央处理器26操作期间必需的数据、资料,绘图卡32A则用来处理图像数据,以将主机12操作的状况显示于显示器32B上。而北桥电路28A即用来管理、控制中央处理器26与绘图卡32A、存储器30的数据传输;南桥电路28B则通过北桥电路28A电连于中央处理器26,作为各外围装置14、15与主机12交换数据的接口。通过南桥电路28B与外围装置14、15间的电连(如通过总线),主机12与各外围装置14、15就能互相交换数据。另一方面,在外围装置14中,控制电路16用来接收主机12传来的控制指令,以控制外围装置14的操作。伺服硬件22即是受控于控制电路16,用来实现外围装置14的功能。举例来说,若外围装置14为一光盘机,伺服硬件22即包括了带动光盘片转动的马达、激光读取头等等机电元件,以存取一光盘片上的数据。缓冲存储器18、存储存储器20则用来支援控制电路16的操作;其中缓冲存储器18为一易失性的存储器(如随机存取存储器),用来暂存控制电路16操作期间的数据、资料。存储存储器20则为一非易失性的存储器(如闪速存储器),用来记录一固件的程序码24;正如前面所提到的,外围装置14的控制电路16在控制外围装置14时,会依循特定的固件程序码来进行各种控制程序,程序码24即为此固件程序码,用来记录不同控制程序进行的方式。控制电路16执行此程序码24,就能根据主机12的控制指令,控制外围装置14的操作。
当然,在每一个外围装置出厂时,存储存储器中均已写入固件程序码,作为预置的固件。在外围装置连接于主机之后,外围装置中的控制电路就能依据此预置的固件控制外围装置的操作。然而,此预置的固件可能有某些控制程序上的错误(bug),等到外围装置出厂后才被发现的。另外,固件研发厂商即使在外围装置出厂后,也会持续研发新的控制程序及固件程序码,以提升外围装置的操作效能,或是扩展外围装置的应用范围。以光盘机为例,采用不同的控制程序,光盘机可能就能更快地锁定激光读取头的位置,以更稳定地读取光盘片上特定部分的数据。或者,当有光盘片是采用较新规格的数据格式来记录数据时,更新固件程序码中部分控制程序进行的方式,光盘机可能就可以顺利读取较新数据格式的光盘片,扩大其支援的光盘片数据格式。在以上讨论的各种情况下,都需要更新外围装置中的固件程序码,以新的固件程序码取代外围装置中既有的固件程序码,这样才能解决预置固件程序码中的错误、提升外围装置的效能、扩大外围装置的应用范围。在现代的外围装置中,固件程序码多半都存储于可重复覆写的非易失性存储存储器中(如闪速存储器,或是电性可擦除可程序化只读存储器EEPROM),只要将存储存储器中原来的预置固件程序码擦除,写入新的固件程序码,就能以新的固件程序码取代旧的预置固件程序码,完成固件的更新。当外围装置中的控制电路执行存储存储器中新的固件程序码,就能以新的控制程序控制外围装置的操作。
一般来说,要更新外围装置中的固件程序码,主机也要进行对应的操作。请参考图2(并一并参考图1)。图2流程图中的流程100,即为公知技术中,电子系统10要对外围装置14进行固件更新时,主机12、外围装置14间协调操作的流程。图2左半边的步骤代表主机12进行的步骤,右半边的步骤代表外围装置14所进行的步骤。公知流程100中依序有下列步骤步骤102开始。要开始更新外围装置14的固件程序码时,中央处理器26会开始执行一固件更新的应用程序34,启动整个固件更新的流程100,并在后续步骤中持续控制固件更新流程的进行。就如图1中所示,此应用程序34会被载入至主机12中的存储器30,由中央处理器26执行应用程序34,对外围装置14进行固件更新。固件更新的目的,以一新程序码36,取代外围装置14中既有的程序码24。
步骤104主机12执行应用程序34后,就会先对外围装置14进行装置识别,以确定应用程序34是和外围装置14搭配的应用程序,能正确地控制外围装置14进行固件更新。如前所述,主机12可能连接有多个不同的外围装置,各外围装置的结构、功能各不相同,要控制不同的外围装置分别进行固件更新,主机12所要执行的应用程序当然也各不相同;要正确地对一外围装置进行固件更新,就要使用和该外围装置对应的应用程序。而本步骤就是要确定应用程序34是和外围装置14对应的正确应用程序。一般来说,各外围装置中的固件程序码内就记录有一固件识别码,其中可包括有固件研发厂商的名称(vendor ID)、该固件程序码适用的外围装置的型号名称(model name),或是该固件程序码的版本信息等。如在外围装置14中的既有程序码24,就记录有一固件识别码24I。而当主机12在执行应用程序34时,就可依据应用程序34的指示向外围装置14发出装置识别的控制指令,要求外围装置14将固件识别码24I中的相关数据(或其他可识别外围装置14的数据、信号)传输至主机12。
步骤106外围装置14回应主机12于步骤104中的要求,将固件识别码24I的相关数据(或其他识别数据)回传至主机12。
步骤108主机12执行应用程序34时,即可根据外围装置14回传的识别数据,判断外围装置14是否是和应用程序34搭配的装置。事实上,在主机12与外围装置14进行装置识别时,很有可能会进行数次的数据、指令交换,在不影响本发明技术讨论的情形下,图2中的流程图已经部分简化装置识别的细节。根据外围装置14与主机12间的数据交换,若主机12判断出应用程序34的确能和外围装置14互相搭配,主机12即可继续固件更新的流程,发出控制指令询问外围装置14现行的操作状态是否能进行固件更新。因为在主机12执行固件更新的应用程序34时,外围装置14可能正在执行某些操作(譬如说光盘机的外围装置14可能正在存取光盘片上的数据),这样就不能进行固件更新了。故此步骤中,主机12要询问外围装置14目前的操作状态。同时,主机12也可将固件更新所用的新程序码36载入至存储器36中,准备传输给外围装置14。
步骤110外围装置14回应主机的询问,将外围装置14目前的操作状态回传至主机12。
步骤112若外围装置14回传的操作状态代表其能进行固件更新,主机12就能将暂存于存储器30中的新程序码36传输至外围装置14。就像典型的网路传输一样,主机12在传输新程序码36时,会执行一预设的检查码产生演算法,根据新程序码36的内容计算出一检查码(checksum)36C,并与新程序码36一并传输至外围装置14。
步骤114外围装置14接收主机12传来的新程序码及检查码,并将其暂存于缓冲存储器18中。图1中暂存于外围装置14缓冲存储器18内的新程序码37、检查码37C,就是外围装置14由主机12接收的新程序码及检查码。
步骤116控制电路16同样也会执行检查码产生演算法,根据其所接收到的新程序码37计算出另一检查码39C,并将此检查码39C和由主机12传来的检查码37C进行比较。控制电路16使用的检查码产生演算法和主机12根据新程序码36产生检查码36C的检查码产生演算法是一样的;若在新程序码、检查码由主机12传输至外围装置14的过程中没有发生数据传输的错误,外围装置14接收到的新程序码37应该就等于主机12所要传输的新程序码36,而控制电路16所计算出来的检查码39C应该也会等于其所接收的检查码37C。反之,若控制电路16计算出来的检查码39C其接收到的检查码37C不一致,就代表主机12传输新程序码/检查码至外围装置14的过程中发生了数据传输的错误。若在本步骤中比较出检查码39C与检查码37C为一致的,就可进行至步骤118;反之,若两检查码不一致,就要进行至步骤120。
步骤118在公知技术中,控制电路16在步骤116中判断新程序码37的传输无误后,就会将存储存储器20中既有的程序码24擦除(erase),并将暂存于缓冲存储器18中的新程序码37覆写至存储存储器20中;这样一来也就完成外围装置14的固件更新了。接下来控制电路16就可以执行被写入至存储存储器20的新程序码37,以控制外围装置14的操作。当然,在固件更新成功后,外围装置14也可将更新成功的情况回传至主机12;而主机12也可再次要求外围装置14传输新程序码中的固件识别码至主机12以确认固件更新成功。在不影响本发明技术讨论的情形下,图2中已略去上述操作的细节。步骤120若在步骤116中控制电路16比较发现检查码37C、39C不一致,就可进行必要的错误处理。举例来说,控制电路16可要求主机12将新程序码36重新传输一次,重新进行步骤116中的检查码比较;或是将发生错误的情况回传至主机12,由主机12决定后续的操作。
步骤122结束固件更新的流程。
总结来说,在以图2中的公知流程100进行固件更新时,主机12、外围装置14间在确认互连的状态、外围装置14可以进行固件更新后,主机12只是单纯将固件更新的新程序码36传输至外围装置14,而外围装置14在进行步骤116的检查码比较而确认新程序码的传输无误后,就会进行固件更新。上述公知流程的主要缺点之一,就是无法确保固件更新用的新程序码的内容是否真的是合乎外围装置14应用的固件程序码。一般来说,固件更新的新程序码36是由主机12的使用者取得(如由网路下载),再于固件更新的过程中由应用程序34载入至主机12的存储器30中。然而,在使用者取得新程序码36的过程中就有可能出错,使得新程序码36本身为不符合外围装置14应用的固件程序码。举例来说,主机12的使用者可能是由网路下载而取得新程序码36,但网路下载的过程中可能会发生网路传输的错误,使得新程序码36本身是不完整的。或者,使用者也可能误判固件程序码的版本。如前所述,固件研发厂商可能不断释出新版本的固件程序码,外围装置14在出厂时可能已经内建了较新版本的预置程序码,但使用者在未察觉的情况下,欲取得了较旧版本的新程序码36要来为外围装置14进行固件更新;换句话说,在此情况下,图1中的既有程序码24为较新的版本,新程序码36本身反而是较旧的版本。此时若进行固件“更新”,反而会将固件程序码降级。另外,使用者也可能错误地取得不合乎外围装置14应用的固件程序码作为新程序码36。举例来说,使用者取得的新程序码36可能根本不是适用于外围装置14的固件程序码。尤其是在技术发展快速的现代社会,同一厂商可能推出多种不同型号、功能各异的同类型外围装置。如在光盘机这种常见的计算机系统外围装置中,就有各种不同读取倍速的光盘机,或是某些光盘机仅能读取光盘片的数据,有些光盘机则还能将数据刻录至光盘片;某些光盘机则支援较多不同格式光盘片的数据读取。虽然研发厂商会针对不同型号的外围装置释出不同的更新用固件程序码,但使用者可能一时不察,取得与外围装置14完全不相符的新程序码36来为外围装置14进行固件更新。除此之外,还有可能有某些恶意的破坏者,故意提供错误的固件程序码作为新程序码36,意图以固件更新的流程将错误的固件程序码植入外围装置14中,以瘫痪外围装置14的正常操作。
在上述的各种情况下,主机12要用来进行固件更新的新程序码36,其实已经不合乎外围装置14的应用;但在公知的固件更新流程100中,却无法检查出新程序码36是否适用。在公知流程100中,主机12虽然会在步骤104进行装置识别,通过外围装置14检查既有的程序码24的固件识别码24I,但主机12检查的是外围装置14已在操作中的固件程序码(也就是外围装置14既有的程序码24),不会检查新程序码36是否合乎外围装置14的应用。另外,外围装置14的控制电路16会在步骤116中检查与新程序码36相关的检查码,但此步骤只能检查出新程序码36在主机12、外围装置14间传输时是否发生数据传输的错误,也不能检查出新程序码36是否适用。即使新程序码为不适用的固件程序码,只要主机12、外围装置14间的数据传输没有发生问题,流程100还是会通过步骤116,将不适用的新程序码写入至存储存储器中。换句话说,在步骤116中,即使检查码符合,也只代表主机12是将不适用的新程序码36完整正确地传输至外围装置14而成为新程序码37(见图2),新程序码37不适用的本质还是不会改变,也不能由步骤116中检查出来。虽然控制电路16在步骤116中会依据新程序码37计算出检查码39C,使得检查码39C能反映出新程序码37的内容,但步骤116中用来比较检查码39C的另一检查码37C也还是依据新程序码36所算出的,并不能代表“适用”的固件程序码所应具有的检查码(尤其是当新程序码36本身就是不适用的固件程序码时)。换句话说,当公知流程100在进行步骤116时,控制电路16本身并不能得知“适用”的固件程序码对应的检查码为何,当然也就不能在步骤116中检查比较出新程序码37是否适用。若在固件更新流程中误将错误、不适用的固件程序码植入至外围装置14中,不但无法达到固件更新的目的,还会导致外围装置14不能正确操作的严重后果。

发明内容
因此,本发明的主要目的,在于提供一种新的固件更新方法及相关装置,能筛选出更新用的新固件程序码是否真正适用,以克服公知技术的缺点。
在公知技术中,不论是在主机端或是在外围装置的装置端,都无法检查出固件更新所用的新程序码是否合乎外围装置的实际应用,因此也无法避免不适用的新程序码在公知的固件更新流程中被误植入外围装置。
在本发明中,则会在对一外围装置进行固件更新的流程中加入主机端检查步骤及/或装置端检查步骤,将更新用的新固件程序码的部分内容与一预设的内容比较,以实际判断新固件程序码是否适用。在实际实施时,可检查新固件程序码中的固件识别码(包括固件研发厂商的名称,以及该固件程序码适用的外围装置的型号名称)是否和该外围装置中既有的固件程序码的固件识别码相符,也可检查新固件程序码中是否包含有特定的指令、常数。另外,也可检查新固件程序码中特定地址的指令、数据是否合乎预期中的指令、数据,或是搜寻新固件程序码中特定指令、数据的地址是否位于预设的地址,以判断固件更新所用的新固件程序码是否合乎外围装置应用的正确固件。上述的检查步骤可在主机端、装置端分别独立进行,确保固件更新所用的新固件程序码为适用的固件程序码,避免在固件更新流程中误将不适用的固件程序码植入外围装置中。


图1为一典型电子系统中主机及外围装置配置的示意图。
图2为图1中电子系统以一公知流程进行固件更新的流程示意图。
图3为本发明电子系统中主机及外围装置配置的示意图。
图4为图3中电子系统以本发明流程进行固件更新的流程示意图。
图5A至5E分别为图4中主机端/装置端检查步骤不同实施例的示意图。
图式的符号说明10、50电子系统 12、52 主机14-15、54-55 外围装置16、56控制电路 18、58 缓冲存储器20、60存储存储器 22、62 伺服硬件24、64程序码24I、64I、76I、77I 固件识别码26、66中央处理器28A、68A 北桥电路 28B、68B 南桥电路30、70存储器 32A、72A 绘图卡32B、72B 显示器 34、74 应用程序36-37、76-77、84新程序码36C、37C、39C、76C、77C、79C检查码56B 检查模块80、82预设内容 86 源码88、89固件程序码 90A-90D 程序片段92A-92C、92D1、92D2部分内容94指令码 95 数据100、200 流程102-122、202-224 步骤具体实施方式
请参考图3。图3为本发明电子系统50配置的功能方块示意图。电子系统50中设有一主机52及一或多个搭配操作的外围装置(图3中绘出两个外围装置54、55做为代表),以扩充主机52本身的功能。电子系统50可以是一计算机系统;在此情况下,主机52中可设有中央处理器66、北桥电路68A、南桥电路68B、存储器70、绘图卡72A及显示器72B;外围装置54、55则可以是光盘机、光盘刻录机、硬盘机等等。以外围装置54为例来说明外围装置中的配置;外围装置54中设有一控制电路56、一用来实现外围装置54功能的伺服硬件62、一用来以易失性方式暂存数据的缓冲存储器58(如随机存取存储器),以及一用来以非易失性的方式存储数据的存储存储器60(如闪速存储器);而控制电路56中则有一检查模块56B。在主机12中,中央处理器66用来主控主机52的操作,绘图卡72A能将主机52操作的状态与结果转变为图像信号,并于显示器72B显示出来。易失性的存储器70(如随机存取存储器)用来暂存中央处理器66操作时必需的程序码及相关数据、资料。北桥电路68A即用来管理中央处理器66、存储器70及绘图卡72A间的数据传输。通过电连于北桥电路68A的南桥电路68B,主机12就能和各外围装置54、55交换指令、数据;其中南桥电路68B和各外围装置间可以用总线(如IDE、EIDE等总线)相互连接。在外围装置54方面,就如前面讨论过的,为了要控制外围装置54中进行多种操作,也会以一固件程序码来记录各种控制程序实行的方法;图3中存储于存储存储器60中的既有程序码64就是此一固件程序码。控制电路56接收主机52传来的控制指令后,就能执行存储存储器60中的程序码64来控制伺服硬件62,以实现主机52要求的功能。而缓冲存储器58则用来暂存外围装置54操作期间的数据。举例来说,若外围装置54为一光盘刻录机,伺服硬件62会包括有马达、光学读取头等机电元件;主机52要刻录至光盘片上的数据会先暂存于缓冲存储器58中,再由伺服硬件62实际将这些暂存于缓冲存储器58的数据刻录至光盘片上;而伺服硬件62由光盘片上读到的数据,也会暂存于缓冲存储器58中,再由控制电路56安排,将这些数据回传至主机52。
就如前面所讨论过的,外围装置会有固件更新的需要。请参考图4(并一并参考图3)。图4所示即为本发明于电子系统50中进行固件更新的流程200;于图4图面左方的步骤是在主机52这一端进行,右方的步骤是由外围装置54进行。流程200中设有下列步骤步骤202开始。当电子系统50要对外围装置54进行固件更新时,主机52中的中央处理器66就会将一固件更新的应用程序74载入至存储器70中(请一并参考图3),并开始执行应用程序74,以启动整个固件更新的流程200,并在后续步骤中持续控制流程200的进行。固件更新的目的,要以一新程序码76,取代外围装置54中既有的固件程序码64。
步骤204主机52要求外围装置54进行装置识别。如前所述,各外围装置的固件程序码中,都记录有一固件识别码,记录固件研发厂商的名称(vendorID),以及该固件程序码适用的外围装置的型号名称(model name)。就如图3中所示,外围装置54在固件更新前的既有程序码64,也记录有对应程序码64的固件识别码64I。在进行装置识别时,主机52即可发出控制指令,要求外围装置54回传固件识别码64I的相关数据,以确认应用程序74是和外围装置54搭配的正确程序,能在后续步骤中正确地和外围装置54配合以进行固件更新。
步骤206外围装置54中的控制电路56接收到主机52于步骤204中传来的控制指令后,就会将固件程序码64中与固件识别码64I相关的数据回传至主机52。
步骤208主机52根据外围装置54回传的固件识别码64I数据(或其他主机52要求的识别数据),就可以判断应用程序74能否配合外围装置54的固件更新。若主机52确认应用程序74的确能和外围装置54搭配,主机52就会继续执行应用程序74,以进行外围装置54固件更新的后续步骤。在此同时,中央处理器66也可将固件更新用的新程序码76载入至存储器70中(就如图3中所示)。在实施装置识别的过程中,主机52、外围装置54可能会进行数次的数据交换;在不影响本发明技术公开的情形下,图4中已适当地省略了装置识别的细节。
除了进行装置识别之外,为了进一步确认新程序码76的内容为适合外围装置54应用的固件程序码,本发明还会额外进行一主机端检查步骤,以依据新程序码76的内容,判断新程序码76是否为适用的固件程序码。主机端检查步骤进行的方式可有数种实施例。举例来说,新程序码76既然为一固件程序码,其中当然也记载了一固件识别码76I(请一并参考图3),就像外围装置54中的既有程序码64也有一对应的固件识别码64I。而在此主机端检查步骤中,主机12就能检查新程序码76中的固件识别码76I是否和既有程序码64中的固件识别码64I相符,以验证新程序码76是否和外围装置54中既有的程序码64一样由同一固件研发厂商所研发,或是适用于相同型号的外围装置。另外,固件研发厂商也能事先在固件程序码中的固定地址记录预设的控制指令或字串、数据,形成一预设内容80(见图3);等主机52进行主机端检查步骤时,就能检查新程序码76在该固定地址中是否具有预设内容80(如图3所示意的),以判断新程序码76的适用性。或者,主机52也可搜寻新程序码76中具有预设内容的部分,再检查该部分的地址是否在固件研发厂商预设的地址,以判断新程序码76的适用性。主机端检查步骤进行的各种方式及原理,会在稍后更进一步讨论。
若进行主机端检查步骤后主机52判断新程序码76为一适用的正确程序码,就能继续固件更新的流程。接下来主机52可发出指令询问外围装置54的状态是否可进行固件更新。
步骤210外围装置54回应主机于步骤208中的询问,将外围装置54目前的状态回传至主机52。
步骤212主机52接收外围装置54于步骤210中回应的信号;若外围装置54正处于可进行固件更新的状态,主机52就可以开始将已载入至存储器70的新程序码74传输至外围装置54。如同步骤204、206中的装置识别,步骤210、212中对外围装置54的装置状态检查也可能会在主机52、外围装置54间进行数次的数据往来传输;在不影响本发明技术公开的情况下,图4中已适当地简化相关细节。就如图3中所示意的,在主机52要将新程序码76传输至外围装置54之前,也会以一预设的检查码产生演算法,根据新程序码76的内容计算出一检查码76C,并将其附加于检查码76,连同检查码76一起传输至外围装置54。
步骤214外围装置54接收主机52传来的新程序码及附加的检查码,并将其暂存于缓冲存储器58中,也就是图3中所示的新程序码77及检查码77C。步骤216外围装置54的控制电路56会利用检查码产生演算法,根据新程序码77的内容计算出一检查码79C(见图3),并验证检查码79C与外围装置54由主机52处接收到的检查码77C是否相同。若两者相同,代表主机52在将新程序码传输至外围装置54的过程中没有发生数据传输错误。
在确定固件更新用的新程序码已经完整地由主机52传输至外围装置54后,本发明还会在外围装置54中另外进行一装置端检查步骤,由控制电路56实现检查模块56B的功能,以检查暂存于缓冲存储器58中的新程序码77是否为适用的固件程序码。举例来说,控制电路56可比较暂存于缓冲存储器58中的新程序码77是否和存储存储器60中的既有程序码64具有相同的固件识别码。由于新程序码77是由主机52传输过去的,在数据传输无误的情形下,新程序码77也具有和固件识别码76I相同的固件识别码77I;控制电路56比较固件识别码77I和既有固件程序码64的固件程序码64I是否相符,就能判断新程序码77是否为适用于外围装置54的固件程序码。类似于主机端检查步骤,于外围装置58中进行的装置端检查步骤也可以检查新程序码77中位于特定的预设地址的部分内容是否符合一预定内容82(如图3中所示意的);或是在新程序码77中搜寻某些预设内容是否存在,或是否位于某些特定地址。至于本发明装置端检查步骤进行的细节、原理,将在后面做进一步的说明。
当然,若在进行本发明装置端检查步骤前,控制电路56发现检查码77C与控制电路56计算出来的检查码79C不符合,代表新程序码再由主机52传输至外围装置54的过程中发生数据传输的错误。此时控制电路56可将错误的情形回传至主机52,或要求主机52重新传输新程序码,直到新程序码被完整的传输至外围装置54,再进行本发明的装置端检查步骤。
步骤218若控制电路56进行装置端检查步骤后判断新程序码77的确适用于外围装置54,就能进行至步骤220;若否,则进行至步骤222。
步骤220通过了检查码的验证,以及本发明装置端检查步骤的验证,外围装置54一方面能确认本身已正确接收由主机52传来的新程序码77,另一方面也能确认新程序码77为外围装置54适用的固件程序码,此时控制电路56就能将存储存储器60中原先做为固件程序码的程序码64擦除,将新程序码77写入至存储存储器60中,以取代原先的程序码64,完成固件更新。接下来控制电路60就能执行存储存储器60中的新程序码77,以新的控制程序控制外围装置54的操作。当然,在固件更新完成后,外围装置54也能向主机52回报固件更新完成的状况,主机52也可要求外围装置54再度将新固件程序码中固件识别码的相关信息回传,确认固件更新已完成等等。在不影响本发明技术公开的情形下,这部分的细节流程已于图4中省略。
步骤222若在步骤216中进行本发明的装置端检查步骤时,发现新程序码77并非适用的固件程序码,控制电路56就要进行错误处理。控制电路56可将新程序码不适用的情形回传至主机52,由主机52的使用者决定后续的步骤。最重要的是,此时控制电路56不会将不适用的新程序码覆写至存储存储器60,使得控制电路56在后续的过程中不会依据不适用的新程序码来控制外围装置54,而外围装置54的操作也不会因固件更新流程中的不适用固件程序码而受影响。
步骤224结束本发明固件更新的流程。
由以上对本发明固件更新流程的描述可知,本发明的流程200除了在固件更新的过程中进行了装置识别、检查码的确认外,还额外地进行了主机端检查步骤及装置端检查步骤。前者能在主机52在将固件更新的新程序码76传输至外围装置54之前,先检查新程序码76是否为适用于外围装置54的固件程序码。在将新程序码76顺利传输至外围装置54而成为新程序码77后,外围装置54还会进行一装置端检查步骤,以便在将程序码77实际写入至存储存储器60之前,检查程序码77是否适用于外围装置54。经由本发明主机/装置端检查步骤的实施,将可更进一步地确认固件更新流程不会误将不适用的固件程序码植入至外围装置。至于本发明主机/装置端检查步骤进行的方式,可以有数种实施例,以下将一一讨论。
首先,请参考图5A(并一并参考图3)。图5A为本发明中主机/装置端检查步骤进行方式实施例之一的示意图。如同前面所提过的,固件研发厂商在固件程序码中都定义了一些关于固件本身的数据,如固件研发厂商的名称(vendor ID),该固件程序码适用的外围装置的型号名称(model name),甚至于有序号(serial number)或者是版本信息,形成一固件辨识码。即使在不同版本的固件程序码中,也都会统一记载有这些信息。如图5A所示,不论是外围装置54在固件更新前既有的固件程序码64,或者是固件更新所使用的新程序码76(或者是新程序码77),只要是共同适用于外围装置54的固件程序码,就应该具有相同形式的固件识别码。一般来说,在固件程序码中,固件识别码的相关信号是记录于固件程序码中的一段常数(constant)中。如本领域技术人员所知,固件研发厂商都是以较高层的程序语言来将外围装置的各种控制程序编写至一源码(source code)中,再经由一编译器(complier)软件的编译(compile)后,成为外围装置中控制电路可执行的二进位码的固件程序码。固件研发厂商通常在固件程序码的源码中以一常数阵列(array)_pbTBL Inquiry[]来编译该固件识别码内容,该内容可以直接以数值表示,例如0x05,或者以字元(character)编辑,例如‘A’表示本领域技术人员所知的ASCII码,经编译器编译成为外围装置中控制电路可执行的二进位码的固件程序码后,以一对应的二进位码常数存在于该固件程序码中。故在固件程序码中,一定有部分内容是用来定义此一常数的内容值。举例来说,如图5A所示,在既有程序码64的固件识别码64I中,其部分内容就是以二进位码方式来将常数_pbTBL Inquiry的值定义为{0x05,0x80,…,‘A’,‘b’,…,‘d’,‘M’,…,‘k’,‘m’,…,…},其中“Abcdefgh”就代表固件研发厂商的名称,“Modelikmh”就代表型号名称,其他数据则可用来代表固件版本等其他数据。同理,固件更新所用的新程序码76若为适用的固件程序码,其中一定也有一固件识别码76I,同样地用来定义常数_pbTBL Inquiry[]的值。当要进行本发明的主机端检查步骤时,主机52就可执行固件更新的应用程序74(如图3)而搜寻新程序码76,以检查新程序码76中是否有部分内容是用来定义常数pbTBLInquiry的,而此常数又被定义为特定的值。同时,主机52也可以要求外围装置54回传既有程序码64中其常数_pbTBL Inquiry的值。当然,若新程序码76中根本没有定义此一常数,代表其一定不是正常的固件程序码。若新程序码76中的确有定义此常数,且新程序码76中此常数的值与既有程序码64中定义的值相符(如固件研发厂商的名称相同,型号名称相同),主机52就可在主机端检查步骤中判断新程序码76为适用的固件程序码。另外,在主机端检查步骤中,主机52也可更进一步地根据新程序码76中的版本信息来判断新程序码76(相对于既有程序码64)是不是较新版本的固件;若新程序码76版本反而较旧,主机52也可判断新程序码76为不适用的固件程序码。进一步推广此种比较的概念,本发明也可检查新程序码中某常数的值是否在某预设值的特定范围内。如在上述的例子中,就是检查新程序码中记录的版本是否大于既有程序码的版本。
除了将新程序码76中的固件识别码76I和既有程序码64中的固件识别码64I比较以进行主机端检查步骤外,固件研发厂商也可在释出固件更新所用的应用程序74时,直接在应用程序74中记录常数_pbTBL Inquiry应有的格式及值(或是其值的合理范围);当主机52执行应用程序74而进行主机端检查步骤时,就可以依据应用程序74中对常数_pbTBL Inquiry的要求,直接判断新程序码76是否为适用的固件程序码,不必依据固件识别码64I中的信息为比较的基准。依据上述的道理,外围装置54中的控制电路56也可在进行装置端检查步骤时,利用既有程序码64中对常数_pbTBL Inquiry的定义,检查暂存于缓冲存储器58中的新程序码77是否为适用的固件程序码。同理,在外围装置54出厂时,固件制造厂商也可在控制电路56中预先设定常数__pbTBL Inquiry应有的标准格式、内容值或内容值的合理范围(如版本编号应大于某一预设值),日后当控制电路56进行装置端检查步骤时,就可以独立判断新程序码77是否具有正确的_pbTBL Inquiry常数定义。在现行的信息业界中,在固件程序码中加入固件识别码已经是一种标准的作法,而本发明也可方便地直接利用固件识别码来判断固件更新用的新固件程序码是否适用。
请继续参考图5B(及图3)。图5B为本发明中主机/装置端检查步骤进行方式另一实施例的示意图。除了利用固件程序码中普遍已定义的固件识别码来判断固件程序码的适用性外,固件研发厂商也可在固件程序码中预先插入特别定义的字串、数据,做为日后识别固件程序码适用性的依据。如本领域技术人员所知,固件研发厂商都是以较高层的程序语言来将外围装置的各种控制程序编写至一源码(source code)中,再经由一编译器(complier)软件的编译(compile)后,成为外围装置中控制电路可执行的二进位码的固件程序码。固件研发厂商可在固件程序码的源码中以一常数阵列(array)来编译一特别定义的字串、数据,该内容可以直接以数值表示,例如0x06,或者以字元(character)编辑,例如‘A’表示本领域技术人员所知的ASCII码,经编译器编译成为外围装置中控制电路可执行的二进位码的固件程序码后,以一对应的二进位码常数存在于该固件程序码中。如图5B的实施例所示意的,固件研发厂商可在固件程序码的源码86中额外加入程序片段90A、90B,以分别定义出一字串_pbSpecString(其内容为‘M’,‘e’,‘d’,‘i’,‘a’,‘t’,‘e’,‘k’)以及一常数_pbSpecVaIue。请注意,程序片段90B中不仅定义了常数_pbSpecValue的值,还以指令“_at_0xFFE0”定义了该常数值应存在一特定地址0xFFE0(也就是十六进位的地址FFE0)。根据此指令,编译器就会在编译过程中将此常数值置于该特定地址。等到源码86被编译为二进位码的固件程序码88后,对应于源码86中的程序片段90A,固件程序码88中必定有部分内容92A是以二进位码来记录常数_pbSpecString的定义值;对应于程序片段90B,由固件程序码88的地址0xFFE0处开始,也有部分内容92B是以二进位码记录常数_pbSpecValue的定义值。固件程序码88释出后,也就成为固件更新用的新程序码(如图3中的新程序码76)。利用新程序码中特别定义的字串、常数,就可以实施本发明中的主机/装置端检查步骤。举例来说,主机52、控制电路56在进行主机、装置端检查步骤时,可分别检查新程序码76、77中是否记录有“Mediatek”这个字串以定义字串_pbSpecString。因为固件研发厂商释出的适用新程序码必定有部分内容是用来记录“Mediatek”以定义字串_pbSpecString,若在主机/装置端检查步骤中发现新程序码并没有记录“Mediatek”,就代表该新程序码为不适用的程序码。同理,主机52、控制电路56也可在主机/装置端检查步骤中检查新程序码是否在地址0xFFE0处存有常数_pbSpecValue正确的定义值。若新程序码中在地址0xFFE0记录的不是常数_pbSpecValue的正确定义值,就代表新程序并非适用的固件程序码。或者,也可在进行主机/装置端检查步骤时,检查常数_pbSpecValue的定义值是否存在新程序码特定地址0xFFE0处。当然,要以上述方式来实施本发明主机/装置端检查步骤时,固件制造厂商在外围装置54出厂前,就要预先设定控制电路56(图3),以使控制电路56在日后进行装置端检查步骤时,能知道要比较的目标(也就是图3中的预设内容82;如要在新程序码中寻找“Mediatek”,或是在新程序码的那个特定地址应该存有哪些特定值)。同理,固件制造厂商也要在释出固件更新的应用程序74前,预先在应用程序74中记录主机端装置检查步骤要比较的目标,让主机52能在执行应用程序74后依照上述的比较原理进行主机端检查步骤。
请参考图5C。图5C为本发明主机/装置端检查步骤进行方式另一实施例的示意图。除了上述以固件程序码中特别定义的常数、定值字串来进行本发明的检查步骤外,也可以根据固件程序码中特定的指令来进行本发明的检查步骤。如图5C所示,固件研发厂商在编写固件程序码的源码86时,可加入程序片段90C,以“CSEG AT FF80H”的指令将一段预设的指令码94编译至地址FF80H(也就是十六进位的地址FF80)。指令码94中定义的可以是有意义、有实际用途的控制程序,或是一些并无实际用途的冗余操作(如将两变数的值交换后再换回来)。图5C中示意的指令码94,其第一行“MOV DRTP,#0800H”即用来让一指针(pointer)DRTP指出缓冲存储器中的一个地址0800H(十六进位的地址0800);第二行“MOVX A,@DRTP”则将一暂存器A中存储的值移到指针DRTP指向的地址,等等。在将源码86编译为固件程序码88后,根据程序片段90C所指定的地址FF80H,固件程序码88就会在起始于地址FF80H的部分内容92C中,以二进位码的形式来记录指令码94。将固件程序码88释出为固件更新所用的新程序码后,就可依据新程序码是否在地址FF80H有对应指令码94的部分内容92C(或是搜寻部分内容92C是否起始于地址FF80H),来进行本发明的主机/装置端检查步骤,以判断新程序码是否为固件研发厂商所释出的适用固件程序码。类似于图5B中实施例的情况,应用程序74、控制电路56也要在事先设定好要比较的目标(如指定地址、指令码94对应的二进位码为何),方便日后进行主机/装置端检查步骤时,做为检查进行的依据。
请参考图5D。图5D为本发明主机/装置端检查步骤又一实施例的示意图。如图5D所示,固件研发厂商也可在固件程序码的源码86中加入程序片段90D,以便在编译后于固件程序码88中的特定地址加入特定的值。举例来说,图5D中的程序片段90D,指令“CSEG AT 0005H”及下一行的“DBE1H”就是指定要将一位元组的数据(内容为十六进位的E1)记录于固件程序码88中的地址0005H(十六进位的地址0005);指令“CSEG AT FFFEH”及次行的“DB E2H”则将一位元组的值E2记录于地址FFFEH。将源码86编译为固件程序码88后,固件程序码88就会在地址0005H的部分内容92D1处以二进位码记录有十六进位的数值E1,在地址FFFEH的部分内容92D2处记录有十六进位的数值E2。在进行本发明的主机/装置端检查步骤时,即可检查新程序码在特定地址处是否记录有特定的值(如在地址0005H处是否为数值E1),以判断新程序码是否为固件研发厂商释出的适用固件程序码。
请参考图5E。图5E为本发明主机/装置端检查步骤进行方式另一实施例的示意图。除了在源码中以程序片段插入特定的数据、指令以做为判断新程序码是否适用的依据外,本发明也可在编译后的固件程序码中插入特定的数据,做为检查步骤进行的依据。如图5E所示,一般来说,当固件程序码的源码86经过编译而成为固件程序码88后,固件程序码88除了用来记录指令、数据(如常数值)的部分内容外,还会留下一些未使用区段(unusedsegment)。这些未使用区段会被填入特定的填充数据。像在图5E中,在部分内容92E1到92E4标记为斜线的部分,都记录了有意义的程序、指令所对应的二进位码,所谓的程序码区段(code segment);被填入十六进位“F”的部分,即是所谓的未使用区段,没有用来记录任何程序、指令。像在部分内容92E2、92E3之间,就有未使用区段。另外,由于固件程序码88多半会被编译为固定大小(如512Kbyte)的程序码,以方便记录于外围装置中的存储存储器,故固件程序码88的最后一定会有一些多余、未用来记录任何程序、指令的未使用区段。当外围装置中的控制电路在执行固件程序码时,会在各个程序区段间跳跃地读取指令,不会执行到未使用区段,故本发明也可在固件程序码88中的未使用区段插入特定的数据做为标记,不仅不影响外围装置执行固件程序码的操作,而插入的标记也可当作本发明主机端/装置端检查步骤进行时检查的依据。如图5E所示,在固件程序码88中的未使用区段插入数笔数据95后,就变成了固件程序码89;而固件程序码89也就是固件研发厂商正式释出的新程序码。当要进行本发明的主机/装置端检查步骤时,就可在新程序码的未使用区段中的特定地址搜寻是否有插入的数据,判断新程序码是否适用。类似于本发明于图5B、C、D中的实施例,固件研发厂商也要事先设定固件更新的应用程序74及控制电路56,使主机52、外围装置54在进行检查步骤时,能知道比较的目标,如在未使用区端中的那个地址应该会有什么样的数据。相对于图5E的实施例是将标记的数据插入至未使用区段,在图5A至图5D的实施例中,用来当作主机端/装置端检查步骤进行依据的数据都会位于程序码区段。
除了上述的方法,本发明主机端/装置端检查步骤尚有以下数种其他的作法。举例来说,在进行检查步骤时,可搜寻新程序码中某一特定的指示数据(如字串、常数)所在的地址,由该地址平移一段预设的平移地址后计算出一新地址,再检查新程序码于该新地址的内容是否符合另一预设内容。换句话说,当固件研发厂商在释出固件程序码时,不但要在程序码中加入指示数据,也要在该指示数据所在地址平移该平移地址的地方,加入该预设内容,以在程序码释出后,配合客户进行主机端/装置端检查步骤。另外,在进行检查步骤时,也可检查新程序码中位于不同预设地址的不同常数在经过预设的运算后,否符合一预设值。举例来说,可检查新程序码中分别位于两不同地址的常数相加后,否为一预定值。在前面曾经提到过,检查步骤可检查固件识别码中固件版本的数值大小做为固件程序码适用于否的依据,不过恶意的破坏者也可能在窜改程序码时,一并窜改固件版本的数值,意图躲过检查步骤的检查而在固件更新过程中将窜改后的固件程序码植入外围装置中。针对这种情形,固件研发厂商就可在真正的新程序码中,于另一预设的地址植入另一检查用常数,而此检查用常数和新程序码的固件版本数值相加后为一预设的定值;换句话说,在更新、固件版本数值更大的程序码中,此检查用常数也随之变小。而当进行主机端/装置端检查步骤时,主机/外围装置除了检查固件版本的数值是否大于既有固件版本的数值外,还可以在预设地址找到此检查用常数,并检查此检查用常数和新程序码中记录的固件程序版本相加的数值是否为预设的定值。这样一来,就能进一步确认固件版本数值本身是否正确。
由上述讨论延伸,本发明主机端/装置端检查步骤也可以先搜寻两个预设内容的数据分别所在的两个地址,再检查这两个地址之间的程序码是否具有某种预设的特性。举例来说,固件研发厂商在释出适用程序码时,可在两预设内容数据之间记录一连串的数值,而这一连串的数值相加后的值为一定值(或是依据预设的规律递增或递减);或者是两预设内容数据之间的数据在经过一预设的演算法处理后,能得到一预设的标准值。这样一来,当进行主机端/装置端检查步骤时,主机/外围装置就能检查在新程序码中,此两预设内容数据间的数据是否合乎预设的规律,或是否能在以预设演算法处理后得到预设的标准值。在这种作法之下,固件研发厂商可在不同版本的固件程序码中,在两预设内容数据间加入不同的数据,但加入的数据在经过预设演算法后均能得到同一标准值。这样一来,就可避免适用程序码的比较标准暴露于程序码中。因为不同版本的适用程序码中,两预设内容数据间的数据均会相异,即使恶意破坏者分析不同版本的适用程序码,也难以归纳出特定的规律以避开本发明检查步骤的筛检。
由以上对本发明主机/装置端检查步骤的讨论可知,本发明是比较新程序码中是否有预设内容的数据(如字串、数据),或是在预设地址中是否有预设内容的数据(或预设数据是否在预设地址),以在固件更新的流程中判断固件更新所用的新程序码是否为适用的程序码。在实施本发明时(尤其是图5B至图5E的实施例),固件研发厂商可先拟定主机/装置端检查步骤进行的总体策略,以在外围装置出厂、释出固件更新的应用程序前,先设定好主机/装置端检查步骤进行时的比较目标,而在日后陆续释出更新用的固件程序码时,也要对应地在固件程序码中加入比较用的数据。这样一来,就能在外围装置要更新固件时,确保固件研发厂商所释出的适用固件程序码能通过主机/装置端检查步骤,而不适用的固件程序码会在检查步骤中被筛检出来,让不适用的固件程序码不会在固件更新流程中被误植入外围装置中。在设定外围装置54的控制电路56的比较目标时,由于控制电路56是依据既有程序码来操作的,所以比较的目标、装置端检查步骤进行的方式,也可以记录于外围装置54预建的固件程序码中。在实施本发明时,图5A至图5E的各种实施方法能单独使用,或是合并多种方法一起实施,而主机端/装置端检查步骤也可使用不同的比较目标。举例来说,主机52可使用图5B中的实施例,检查新程序码中是否有特定字串以实施主机端检查步骤,而控制电路56则能利用图5A中的实施例,以固件识别码来为依据来进行装置端检查步骤,判断新程序码是否合用。当然,在此情况下,适用的固件程序码中不但要有固件识别码以支援图5A中实施例的实施,还要有特定字串以支援图5B中实施例的实施。正由于本发明主机端/装置端检查步骤检查的依据是由固件研发厂商所预设的,故可提供一准确的比较目标,确实地检查出不适用的固件程序码。相较之下,图2中的公知流程100虽会根据固件更新用的新程序码,利用检查码产生演算法算出一检查码,但由于公知流程根本无从得知适用固件程序码对应的检查码,故无法利用检查码检查出不适用的新程序码。
虽然本发明示于图4的流程200在主机、装置端分别进行了主机端、装置端检查步骤,但本发明也可只由主机52进行主机端检查步骤,或是只以外围装置54中的控制电路56进行装置端检查步骤。当进行主机端检查步骤时,也不一定要如图4般在装置状态检查前才进行主机端检查步骤,也可以在应用程序74一载入新程序码后马上进行主机端检查步骤。大致来说,只要在主机52将新程序式76传输至外围装置54前进行主机端检查步骤,即可防止不适用的固件程序码被传输至外围装置54,进一步防止不适用的固件程序码被误植入外围装置中。另一方面,在外围装置54中进行装置端检查步骤,则可发挥最终把关的目的。如前所述,除了使用者误用新程序码外,也可能会有恶意的破坏者会故意以不适用的新程序码,意图瘫痪外围装置54的操作。在实施本发明后,即使不适用的新程序码被传输至外围装置54,在外围装置54中进行的装置端检查步骤,还是能阻挡不适用的新程序码取代既有的固件程序码。至于本发明中,用来进行装置端检查步骤的检查模块56B(见图3)可以是实际的硬件电路,或是由控制电路56本身执行(既有)固件程序码来实现检查模块56B的功能,进行装置端检查步骤。另外,如前所述,有许多独立操作的装置,如手机、数位相机,也都是由控制电路执行固件程序码而操作的。这些装置平常虽独立操作,但要进行固件更新时,多半还是要配合一主机(如以USB连接线连接至个人计算机)才能取得固件更新所用的新程序码,进行固件更新。而本发明当然也可应用于这种情况,保护这些独立操作的装置不会在固件更新的过程中被植入不适用的固件程序码;尤其是在装置中由装置本身自行进行的装置端检查步骤,可主动确保装置本身不会被误植入不适用的固件程序码。
在公知的固件更新流程中,无法针对固件更新所用的新程序码进行内容的检查,故也无法在固件更新的流程中避免不适用的新程序码被错误地植入至外围装置中。相较之下,本发明在固件更新的流程中加入了主机/装置端检查步骤,能依据新程序码的内容判断新程序码是否适用,避免不适用的新程序码被误植入外围装置中。另外,本发明也有助于不同外围装置间固件更新流程的整合。由于本发明可用主机/装置端检查步骤确认固件更新用的新程序码是否适用,就可以在主机端使用单一固件更新的应用程序做为不同外围装置固件更新的接口。在主机进行装置识别时,就可识别出要进行固件更新的外围装置的类别,并由应用程序选择对应该外围装置的主机端检查步骤,确认使用者取得的新程序码是适用的固件程序码;而不同的外围装置已各自内建对应的装置端检查步骤实施方式,可进一步确认主机传来的新程序码为适用的程序码。这样一来,就能使不同外围装置间固件更新的流程得以整合,即使使用同一固件更新的应用程序,还是可管理多种外围装置的固件更新,让使用者进行固件更新时更为简易、方便。
以上所述仅为本发明的较佳实施例,凡依本发明权利要求书所做的等效变化与修改,皆应属本发明的涵盖范围。
权利要求
1.一种于一电子系统中更新程序码的方法,其中该电子系统包含有一主机以及一外围装置;该外围装置包含有一控制电路,用来执行一第一程序码,以根据该主机传来的控制指令控制该外围装置的操作;而该方法包含有取得一第二程序码;以及在以该第二程序码取代该外围装置的第一程序码之前,进行一主机端检查步骤,以利用该主机检查该第二程序码的部分内容是否符合一预设内容。
2.如权利要求1的方法,其中该外围装置另包含有一存储存储器,用来以非易失性的方式存储该第一程序码;而当要以该第二程序码取代该第一程序码时,将该第一程序码由该存储存储器擦除,并将该第二程序码写入至该存储存储器中。
3.如权利要求1的方法,其中当在以一第二程序码取代该第一程序码之前而进行该主机端检查步骤时,在该控制电路执行该第二程序码以控制该外围装置的操作前,进行该主机端检查步骤。
4.如权利要求1的方法,其中该预设内容是该第一程序码的部分内容,或是记录于该第一程序码中的一常数;而当进行该主机端检查步骤时,检查该第二程序码中是否具有该第一程序码的部分内容,或检查该第二程序码中记录的常数的值是否相当于该第一程序码中该常数的值,或检查该第二程序码中记录的常数的值是否在该第一程序码中该常数的值的预设范围内。
5.如权利要求1的方法,其中该预设内容是为固定的内容,使得当该第二程序码改变时,该预设内容亦不会改变。
6.如权利要求1的方法,其中当进行该主机端检查步骤时,由该主机读取该第二程序码中位于预设地址的部分内容,以检查该部分内容是否符合该预设内容,或搜寻该第二程序码中是否存在该预设内容。
7.如权利要求1的方法,其另包含有在进行该主机端检查步骤后,若该第二程序码的部分内容不符合该预设内容,则停止以该第二程序码取代该第一程序码。
8.如权利要求1的方法,其另包含有在进行该主机端检查步骤后,若该第二程序码的部分内容符合该预设内容,则以该第二程序码取代该第一程序码,使该控制电路得以执行该第二程序码以控制该外围装置的操作。
9.一种于一电子系统中更新程序码的方法,其中该电子系统包含有一主机以及一外围装置;该外围装置包含有一控制电路,用来执行一第一程序码,以控制该外围装置的操作;而该方法包含有将一第二程序码由该主机传输至该外围装置;以及在以该第二程序码取代该第一程序码之前,进行一装置端检查步骤,以利用该控制电路检查该第二程序码的部分内容是否符合一预设内容。
10.如权利要求9的方法,其中该外围装置另包含有一非易失性的存储存储器,用来以非易失性的方式存储该第一程序码;而当要以该第二程序码取代该第一程序码时,将该第一程序码由该存储存储器擦除,并将该第二程序码写入至该存储存储器中。
11.如权利要求9的方法,其中当在以一第二程序码取代该第一程序码之前而进行该装置端检查步骤时,在该控制电路执行该第二程序码以控制该外围装置的操作前,进行该装置端检查步骤。
12.如权利要求9的方法,其中该预设内容是该第一程序码的部分内容,或是记录于该第一程序码中的一常数;而当进行该装置端检查步骤时,检查该第二程序码中是否具有该第一程序码的部分内容,或检查该第二程序码中记录的常数的值是否相当于该第一程序码中该常数的值,或检查该第二程序码中记录的常数的值是否在该第一程序码中该常数的值的预设范围内。
13.如权利要求9的方法,其中该预设内容是为固定的内容,使得当该第二程序码改变时,该预设内容亦不会改变。
14.如权利要求9的方法,其中当进行该装置端检查步骤时,由该控制电路读取该第二程序码中位于预设地址的部分内容,以检查该部分内容是否符合一预设内容,或搜寻该第二程序码中是否存在该此预设内容。
15.如权利要求9的方法,其另包含有在进行该装置端检查步骤后,若该第二程序码的部分内容不符合该预设内容,则停止以该第二程序码取代该第一程序码。
16.如权利要求9的方法,其另包含有在进行该装置端检查步骤后,若该第二程序码的部分内容符合该预设内容,则以该第二程序码取代该第一程序码,使该控制电路得以执行该第二程序码以控制该外围装置的操作。
17.如权利要求9的方法,其中该外围装置另包含有一缓冲存储器,用来以易失性的方式存储数据;而当进行该装置端检查步骤时,该控制电路是将该第二程序码暂存于该缓冲存储器中,以读取该第二程序码的部分内容而进行该装置端检查步骤。
18.如权利要求17的方法,其中该外围装置另包含有一非易失性的存储存储器,用来以非易失性的方式存储该第一程序码;而当要以该第二程序码取代该第一程序码前而进行该装置端检查步骤时,在该第一程序码尚未被擦除而该第二程序码尚未被写入至该存储存储器前,进行该装置端检查步骤。
19.如权利要求9的方法,其中该外围装置为一光盘机。
20.一外围装置,其包含有一控制电路,用来执行一第一程序码,以控制该外围装置的操作;而该控制电路中设有一检查模块,该检查模块可在该控制电路以一第二程序码取代该第一程序码之前,检查该第二程序码的部分内容是否符合一预设内容。
21.如权利要求20的外围装置,其另包含有一非易失性的存储存储器,用来以非易失性的方式存储该第一程序码;而当该控制电路以该第二程序码取代该第一程序码时,将该第一程序码由该存储存储器擦除,并将该第二程序码写入至该存储存储器中。
22.如权利要求20的外围装置,其中当该控制电路以一第二程序码取代该第一程序码之前而由该检查模块进行检查时,在该控制电路执行该第二程序码以控制该外围装置的操作前,由该检查模块进行检查。
23.如权利要求20的外围装置,其中该预设内容是该第一程序码的部分内容,或是记录于该第一程序码中的一常数;而当该检查模块进行检查时,检查该第二程序码中是否具有该第一程序码的部分内容,或检查该第二程序码中记录的常数的值是否相当于该第一程序码中该常数的值,或检查该第二程序码中记录的常数的值是否在该第一程序码中该常数的值的预设范围内。
24.如权利要求20的外围装置,其中该预设内容不会随该第二程序码改变而改变。
25.如权利要求20的外围装置,其中当该检查模块进行检查时,由该控制电路读取该第二程序码中位于预设地址的部分内容,以便由该检查模块检查该部分内容是否符合一预设内容,或搜寻该第二程序码中是否存在该此预设内容。
26.如权利要求20的外围装置,其中若该检查模块检查出该第二程序码的部分内容不符合该预设内容,则该控制电路会停止以该第二程序码取代该第一程序码。
27.如权利要求20的外围装置,其中若该检查模块检查出该第二程序码的部分内容符合该预设内容,则该控制电路会以该第二程序码取代该第一程序码,使该控制电路得以执行该第二程序码以控制该外围装置的操作。
28.如权利要求20的外围装置,其另包含有一缓冲存储器,用来以易失性的方式存储数据;而该控制电路是将该第二程序码暂存于该缓冲存储器中,并在读取该第二程序码的部分内容后由该检查模块进行检查。
29.如权利要求28的外围装置,其是使用于一电子系统,该电子系统中另设有一主机,而该第二程序码是由该主机传输至该外围装置。
30.如权利要求28的外围装置,其另包含有一非易失性的存储存储器,用来以非易失性的方式存储该第一程序码;而当该控制电路要以该第二程序码取代该第一程序码前而由该检查模块进行检查时,在该第一程序码尚未被擦除而该第二程序码尚未被写入至该存储存储器前,由该检查模块进行检查。
31.一种于一电子系统中更新程序码的方法,其中该电子系统包含有一主机以及一外围装置;该外围装置包含有一控制电路,用来执行一第一程序码,以根据该主机传来的控制指令控制该外围装置的操作;而该方法包含有取得一第二程序码;以及在以该第二程序码取代该外围装置的第一程序码之前,进行一检查步骤,以根据该第二程序码的内容求出一对应的内容特性,并检查该内容特性是否符合一预设特性;而该预设特性不会随该第二程序码的内容改变而改变。
32.如权利要求31的方法,其中该检查步骤是由该主机来进行。
33.如权利要求31的方法,其中该检查步骤是由该控制电路来进行。
34.如权利要求31的方法,其中该内容特性是一预设内容于该第二程序码中所在的地址,而该预设特性是一预设地址;而当进行该检查步骤时,检查该第二程序码中该预设内容所在的地址是否符合该预设地址。
全文摘要
本发明是提供一种于一电子系统中更新固件的方法及相关装置。该电子系统中有一主机及一外围装置,该外围装置中设有一控制电路及一闪速存储器,该控制电路是执行一记录于该闪速存储器中的第一程序码以接收该主机的控制指令而控制该外围装置的操作。而该方法是在以一第二程序码取代/更新该第一程序码之前,进行一检查步骤以检查该第二程序码的内容是否符合一预设的内容,以判断该第二程序码的相容性。该检查步骤可由该主机或/及该控制电路进行,该检查步骤可检查该第二程序码中记录的部分常数值、字串是否符合预设值,或/且检查该第二程序码中位于预设地址的指令、数据是否符合预设的指令、数据,以判断该第二程序码的相容性。
文档编号G06F11/08GK1523501SQ0310610
公开日2004年8月25日 申请日期2003年2月18日 优先权日2003年2月18日
发明者刘敦行, 吴元丁 申请人:联发科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1