CN100403275C - 应用于固件程序除错的微处理器与方法 - Google Patents

应用于固件程序除错的微处理器与方法 Download PDF

Info

Publication number
CN100403275C
CN100403275C CNB2006100736504A CN200610073650A CN100403275C CN 100403275 C CN100403275 C CN 100403275C CN B2006100736504 A CNB2006100736504 A CN B2006100736504A CN 200610073650 A CN200610073650 A CN 200610073650A CN 100403275 C CN100403275 C CN 100403275C
Authority
CN
China
Prior art keywords
debug
firmware program
microprocessor
variable
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CNB2006100736504A
Other languages
English (en)
Other versions
CN1831785A (zh
Inventor
克拉克·夏弗德
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Via Technologies Inc
Original Assignee
Via Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Via Technologies Inc filed Critical Via Technologies Inc
Publication of CN1831785A publication Critical patent/CN1831785A/zh
Application granted granted Critical
Publication of CN100403275C publication Critical patent/CN100403275C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

一种应用于固件程序除错的微处理器,可受一除错主机控制以对于该固件程序进行除错,该微处理器包括:一核心模块,用以执行该固件程序;一总线接口模块,通过一总线自该固件程序中撷取该核心模块所需的多个指令与存取所需的多个变数;以及一嵌入式电路内仿真器模块,耦接至该核心模块与该总线接口模块,用以分别储存至少一第一除错参数与至少一第二除错参数,以及在下列状况产生时通知该核心模块,这些状况包括当该核心模块与该总线接口模块之间所传输的所述指令与这些第一除错参数中任一相符合时,或当该核心模块与该总线接口模块之间所传输的所述变量与这些第二除错参数中任一相符合时。

Description

应用于固件程序除错的微处理器与方法
技术领域
本发明涉及一种嵌入式固件程序(embedded firmware program),且特别是涉及一种嵌入式固件程序的除错微处理器及方法。
背景技术
当利用一微处理器进行一固件程序的除错(debugging)时,通常需审视微处理器内部的寄存器值。实现此目的的方法之一是增加额外的硬件支持,以让程序设计者能方便查询所述寄存器。一般内含此种除错应用程序的计算机可以称之为除错主机(debugging host)。有时除错主机可以直接与微处理器通讯,但通常会运用一通讯协议转换器(protocol converter)以将除错主机的输出讯号转换为微处理机的接口格式。通讯协议转换器并负责依据除错主机的要求以设定微处理器的除错寄存器的工作。
为了使固件程序的除错顺利进行,程序设计者通常会于除错过程中设定程序断点(breakpoint)、变量观察点(watchpoint)、以及硬件事件捕捉点(catchpoint)。程序断点是以指令流程为根据而设定的事件,例如当微处理器执行了在一特定程序地址的某一指令,或是当微处理器执行了一特定指令的运算码(opcode)。变量观察点则是以数据流为根据而设定的事件,例如当微处理器自一特定变量地址存取某一变量,或是当微处理器存取了一特定数据值。硬件事件捕捉点为程序设计者希望知道其发生而预先定义的硬件相关事件,例如中断(interrupt)、重开机等等。
一般而言,微处理器中的除错模块皆会包含一组寄存器,该组寄存器可被设定用来监测固件程序中对应于程序断点或变量观察点的特定的地址或数据值。由于寄存器的数目是有限的,仅仅稍微增加寄存器的数目便会造成除错模块设计复杂度的大量提升,因此该组寄存器通常皆由程序断点或变量观察点共享。该组寄存器通常分为两部分,第一部分寄存器是用来监测存储器地址,第二部分寄存器用来则是用来监测数据。该组寄存器还包括一个选择寄存器,其内所储存的值用来选择目前所要监测的对象是执行中的地址或是数据,若是地址(不论是指令地址或是变量地址)则是与该第一部分寄存器作比对,若是数据(不论是指令数据或是变量数据)则是与该第二部分寄存器作比对。
这种型态的寄存器于整个除错***中运用时会出现以下的问题。一个变量观察点可藉由两种方式实现,第一种称之为硬件变量观察点,第二种称之为软件变量观察点。于硬件变量观察点的情况下,程序设计者可快速地进行除错,因为***会运用一嵌入式电路内仿真器(embedded in-circuitemulator)模块中的所述寄存器来进行与总线上的数据相比较的工作,以监控变量观察点对应的事件,同时微处理器可以依原有速度执行固件程序。于软件变量观察点的情况下,每当微处理器执行一指令,除错主机便需查询微处理器一次,以便检验变量观察点对应的数据值是否改变,因此在软件变量观察点的情况下,除错进行的速度变得很慢,并且几乎无法在实际应用中实行。当程序设计者不熟悉上述硬件变量观察点与软件变量观察点的区别,并且相信设定程序断点与变量观察点的先后顺序不会造成除错进行的差别时,问题便发生了。
举例来说,于一仅具有一组寄存器用来进行除错的除错***中,程序设计者先设定程序断点再设定变量观察点。当程序断点先被设定时,通讯协议转换器将寄存器与程序断点的关系设定完毕后,回报除错主机程序断点已被设定成功。当接着进行变量观察点的设定时,通讯协议转换器发现寄存器已先被程序断点占用了,不够用来设定变量观察点。因此通讯协议转换器回报除错主机变量观察点未设定成功。此时大部分除错主机只得选择以软件变量观察点的方式实现变量观察点,因此微处理机每执行一步固件程序程序,除错主机便需查询微处理器一次变量的变动情形。问题便在于这种方式实在速度太慢,而非进行固件程序除错的有效方式。
若变量观察点先被设定,则当接着进行程序断点的设定时,通讯协议转换器发现寄存器已先被变量观察点占用了,不够用来设定程序断点。因此通讯协议转换器回报除错主机程序断点未设定成功。此时除错主机只得向程序设计者显示程序断点未设定成功的讯息,因此程序设计者可决定是否他要继续除错工作的进行。此时若除错继续进行,则变量观察点将如程序设计者所预期的运作,但程序设计者就无法于除错过程中使用程序断点进行除错。
由于在此种仅用单一组寄存器进行程序断点与变量观察点的除错***中,程序断点与变量观察点的先后设定顺序不同会造成不同的执行状态,这会使程序设计者感到十分困惑。再者,程序设计者无法区别硬件与软件变量观察点,因而会对软件变量观察点造成的除错执行速度变慢感到惊讶。此外,软件变量观察点仅能检测到变量值的变化,而不能检测某一变量地址是否被读取或写入,当相同值被写入一变量地址时,软件变量观察点亦不能发现。但若增加寄存器数目又会造成除错模块设计复杂度的大量提升。因此,已知技术的除错***的设计方式会造成程序设计者相当大的不便。
发明内容
有鉴于此,为了避免已知技术所产生的问题,本发明提供一种应用于固件程序除错的微处理器。该微处理器可受一除错主机控制以对于该固件程序进行除错,该微处理器包括一用以执行该固件程序的核心模块,一耦接至该核心模块的总线接口模块(bus interface module),用以通过一总线自该固件程序中撷取核心模块所需的多个指令与存取所需的多个变量,以及该微处理器包括一与该核心模块与该总线接口模块耦接的嵌入式电路内仿真器模块(embedded in-circuit emulator),是以分开且独立的方式储存至少一第一除错参数与至少一第二除错参数,以及在以下状况产生时通知该核心模块,这些状况包括当该核心模块与该总线接口模块之间所传输的所述指令的相关信息与所述第一除错参数中任一相符合时,或当该核心模块与该总线接口模块之间所传输的所述变量的相关信息与所述第二除错参数中任一相符合时。
本发明还提供一种应用于固件程序除错的方法。该固件程序被一用于除错的微处理器所执行,该微处理器通过一总线撷取该固件程序的多个指令并存取该固件程序的多个变量。其中,应用于固件程序除错的方法包括:在该微处理器中,以分开且独立方式储存至少一第一除错参数与至少一第二除错参数。此时若被该微处理器撷取的所述指令的相关信息与所述第一除错参数中有任一相符时,中止该微处理器继续执行该固件程序并通知一除错主机。另外,若被该微处理器存取的所述变量的相关信息与所述第二除错参数中有任一相符时,通知该除错主机至少有一第二除错参数已被更新。
综合上述,本发明仍在同一组寄存器中以不增加寄存器数量下设定各个寄存器存储器值,但各个寄存器各自对应储存不同的除错参数,因此不会有寄存器先被程序断点或变量观察点的除错方法占用的窘况发生,也因此程序设计师不需再因究竟是要先设定程序断点或变量观察点而倍受困扰。
为了使本发明的上述和其它目的、特征、和优点能更明显易懂,下文特举数较佳实施例,并结合附图详细说明如下。
附图说明
图1为根据本发明的除错***的方块图;
图2为依据本发明的嵌入式电路内仿真器模块的区块图;以及
图3为依据本发明的对固件程序进行除错的方法的流程图。
附图符号说明
102~除错主机;
104~通讯协议转换器;
106~微处理器;
110~核心模块;
112~总线接口模块;
132~地址总线;134~数据总线;
130~总线;140~电路板;
120~***存储器;
150~固件程序;160~变数;
114、200~嵌入式电路内仿真器模块;
116~JTAG界面;
202~指令地址寄存器;
204~指令数据寄存器;
206~变量地址寄存器;
208~变量数据寄存器;
220~OR门;
212~218~比较器。
具体实施方式
图1为根据本发明的除错***100的方块图。除错***100包括除错主机(debugging host)102、通讯协议转换器(protocol converter)104、以及微处理器(microprocessor)106。除错主机102作为进行固件程序除错(debugging)的程序设计者的使用者接口,以控制整个固件程序除错过程。除错主机102可为一用以储存除错应用程序的计算机***,而程序设计者可以通过使用该应用程序以控制除错进度并更改除错过程的详细设定。微处理器106系位于一电路板140上,并执行一固件程序以控制电路板140上的其它组件,其中整个除错过程的目的便是欲对执行中的固件程序进行除错。通讯协议转换器104系作为除错主机102与微处理器106的沟通接口,将两者沟通的讯号转换为彼此能了解的格式,以使两者的沟通能顺利进行。
除了微处理器106之外,电路板140上所包含的其它组件,包括用来储存数据以及被微处理器106执行的固件程序150的***存储器120、特定用途的芯片、以及其它的电路组件。微处理器106经由总线130与这些组件相耦接,以经由总线130控制这些电路板上的组件并接收这些组件的响应。总线130中包含至少一地址总线132与至少一数据总线134,两者连接介于***存储器120与总线接口模块之间。当微处理器106欲撷取***存储器120中储存的固件程序的指令时,先通过地址总线132向***存储器120指定固件程序的指令地址;而***存储器120收到被指定的指令地址后,经由数据总线134将固件程序150的指令数据回传至微处理器106。另外,执行固件程序150后会产生许多变量160,亦储存于***存储器120中。当微处理器106欲撷取***存储器120中储存的变量160时,先通过地址总线132向***存储器120指定变量160的变量地址;而***存储器120收到被指定的变量地址后,经由数据总线134将变量160的变量数据回传至微处理器106。***存储器120亦可由储存固件程序150的第一存储器与储存数据的第二存储器组成,其中第一存储器可为只读存储器(read only memory,ROM),第二存储器可为随机存取存储器(random access memory,RAM)。
微处理器106包括核心模块110、总线接口模块(bus interfacemodule)112、嵌入式电路内仿真器模块(embedded in-circuit emulatormodule)114、以及联合测试行动群组(joint test action group,以下简称JTAG)接口116。JTAG接口116为附加到微处理器100上的特殊的4或5接脚接口,除错主机102可通过连接到JTAG接口116的测试探针与微处理器106相通讯。核心模块110为微处理器100的核心,执行固件程序的指令以控制电路板上的其它组件。总线接口模块112可存取电路板140上的总线130。因此,核心模块110可通过总线接口模块112存取固件程序150的指令、自***存储器120读取变量、及将变量写入至***存储器。
当程序设计者利用除错主机102中的除错应用程序对电路板140上待测的固件程序150进行除错时,通常会预先设定一些程序断点(breakpoint)以阻止微处理器继续执行固件程序。此时程序设计者便可在除错主机的屏幕上观察固件程序的部分重要变量值,并检查依照程序断点前的指令执行后这些变量值是否正确变动。另外,被程序设计者预先设定的重要变量值被称为变量观察点(watchpoint)。若程序设计者认为这些变量值有部分是错误的,程序设计者便可修正固件程序,以测试是否这些变量值会正确地变动。反之,若变量值皆为正确的,表示于程序断点前的固件程序的逻辑正确,而不需任何修正。程序设计者接着可通过除错主机决定是否让微处理器继续执行固件程序。
嵌入式电路内仿真器模块114为除错过程的核心。其监测指令总线以检测程序断点的发生,并监测数据总线以检测变量观察点的发生。当核心模块110执行储存于***存储器中的固件程序时,核心模块110必须持续自***存储器中撷取固件程序的指令。每当撷取一固件程序指令,核心模块必须通过总线接口模块112向***存储器指定欲撷取的指令的指令地址,然后***存储器会将储存于该地址的指令数据回传予核心模块110。因此嵌入式电路内仿真器模块114可监测于核心模块110与总线接口模块112间传输的指令地址或指令数据等的指令相关信息,以检测程序断点。当检测到程序断点时,嵌入式电路内仿真器模块114将会通过JTAG接口116通知除错主机102,并中止核心模块110的动作,此时程序设计者可检查此阶段的执行结果是否正确以利后续程序修改,或是选择继续接续的变量观察点进行除错。
本发明的另一实施例是嵌入式电路内仿真器模块114亦监测数据总线以检测变量观察点的发生。当核心模块110执行固件程序时,被核心模块110计算出的变量值被储存于***存储器中。因此当执行固件程序时,核心模块110必须持续自***存储器中读取变量数据,并持续将变量数据写入至***存储器中。每当存取一变量,核心模块110必须通过总线接口模块112向***存储器指定欲存取的变量的变量地址,然后***存储器会将储存于该地址的变量数据回传予核心模块110。因此嵌入式电路内仿真器模块114可监测于核心模块110与总线接口模块112间传输的变量地址或变量数据等的变量相关信息,以检测变量观察点。当检测到变量观察点时,嵌入式电路内仿真器模块114将会通过JTAG接口116通知除错主机102,并将变量观察点的值传送至除错主机102。同样地,此时程序设计者可检查此阶段的执行结果是否正确以利后续程序修改,或是选择继续接续的程序断点进行除错。
图2为依据本发明的嵌入式电路内仿真器模块200的区块图。嵌入式电路内仿真器模块200对应于图1的嵌入式电路内仿真器模块114。嵌入式电路内仿真器模块200监测于核心模块110与总线接口模块112间传输的指令与变量相关信息,并在指令相关信息与程序断点相符合或变量相关信息与变量观察点相符合时,通过JTAG接口116通知除错主机102。
每当核心模块110自储存被执行的固件程序的***存储器中读取一指令时,核心模块110必须通过总线接口模块112输出该指令的地址,然后该地址的指令数据才会由***存储器回传至核心模块110。同样的,每当核心模块110自储存固件程序的变量数据的***存储器中读取一变量时,或是当核心模块110将一变量值写入***存储器中时,核心模块110必须通过总线接口模块112输出该变量的地址,然后该地址的变量数据才会由***存储器回传至核心模块110,或写入变量地址指定的***存储器中。
嵌入式电路内仿真器模块200包括一用以储存程序断点的指令地址的指令地址寄存器202,一用以储存程序断点的指令数据的指令数据寄存器204,一用以储存变量观察点的变量地址的变量地址寄存器206,以及一用以储存变量观察点的变量数据的变量数据寄存器208。该4个寄存器的储存空间虽与已知寄存器组相同,但却是专门用来分别且独立地储存程序断点与变量观察点的地址与数据等的相关信息。由于嵌入式电路内仿真器模块200的数据寄存器与地址寄存器并非由程序断点与变量观察点所共享,因此不会发生已知因变量观察点与程序断点设定先后顺序的不同而造成除错过程不同的影响的问题,而困扰程序设计者。
每当核心模块110通过总线接口模块112向***存储器指定一指令地址,比较器212便将该指令地址与储存于指令地址寄存器202中程序断点的指令地址相比较,以产生第一比较结果信号。若该指令地址与程序断点的任一指令地址相符合,则比较器212产生的第一比较结果信号呈现致能状态。每当***存储器通过总线接口模块112向核心模块110传回一指令数据,比较器214便将该指令数据与储存于指令数据寄存器204中程序断点的指令数据相比较,以产生第二比较结果信号。若该指令数据与程序断点的任一指令数据相符合,则比较器214产生的第二比较结果信号呈现致能状态。
每当核心模块110通过总线接口模块112向***存储器指定一变量地址,比较器216便将该变量地址与储存于变量地址寄存器206中变量观察点的变量地址相比较,以产生第三比较结果信号。若该变量地址与变量观察点的任一变量地址相符合,则比较器216产生的第三比较结果信号呈现致能状态。每当***存储器通过总线接口模块112向核心模块110传回一变量数据,比较器218便将该变量数据与储存于变量数据寄存器208中变量观察点的变量数据相比较,以产生第四比较结果信号。若该变量数据与变量观察点的任一变量数据相符合,则比较器218产生的第四比较结果信号呈现致能状态。
上述自比较器212至218输出的4个比较结果信号由OR门220执行一OR函数于其上以产生一输出值。若该输出值呈现致能状态,可能表示核心模块110正在执行固件程序被程序设计者设定的程序断点部分。果真如此,除错主机将收到嵌入式电路内仿真器模块200的提示通知,并且核心模块110亦被嵌入式电路内仿真器模块200中止执行固件程序的动作。该输出值呈现为致能状态亦可能表示核心模块110正在更改被程序设计者设定的变量观察点的值。果真如此,除错主机亦将收到嵌入式电路内仿真器模块200的提示通知,并且变量观察点的新变量值将被传送至除错主机,以显示予程序设计者当作除错的参考。
图3为依据本发明的对固件程序进行除错的方法300的流程图。首先,于微处理器106中,分开并独立地储存至少一第一除错参数与至少一第二除错参数(步骤302)。该第一除错参数可为用以中断该固件程序的执行的程序断点,而该第二除错参数为用以监测该固件程序的多个变量的变量观察点。其中第一除错参数对应的指令地址,可藉由多个指令地址寄存器202而储存;而第一除错参数对应的指令数据,可藉由多个指令数据寄存器204而储存,如同图2所示。而第二除错参数对应的变量地址,可藉由多个变量地址寄存器206来储存;而第二除错参数对应的变量数据,可藉由多个变量数据寄存器208来储存,如同图2所示。
接着,比对该微处理器撷取的所述多个指令,以及该微处理器存取的所述多个变量。若所述多个指令的地址与该第一除错参数对应的指令位置相符合时,产生第一比较结果信号(步骤304)。若所述多个指令的数据与该第一除错参数对应的指令数据相符合时,产生一第二比较结果信号(步骤306)。若所述多个变量的地址与该第二除错参数对应的变量位置相符合时,产生一第三比较结果信号(步骤308)。若所述多个变量的数据与该第二除错参数对应的该变量数据相符合时,产生一第四比较结果信号(步骤310)。接着,执行一OR函数于该第一、第二、第三与第四比较结果信号而产生一输出值。(步骤312)
此时若步骤312中的该输出值为正(步骤314),表示目前有程序断点或变量观察点所对应的事件发生。若此时第三或第四比较结果信号为正(步骤316),表示为变量观察点所对应的事件发生,被微处理器所存取的变量与第二除错参数相符,因此通知该除错主机该至少一第二除错参数已被更新(步骤318)。否则,此时为第一或第二比较结果信号为正,表示为程序断点所对应的事件发生,则中止该微处理器继续执行该固件程序并通知除错主机(步骤320)。
综合上述可知,已知技术中的嵌入式电路内仿真器模块仅使用同一组地址寄存器,以储存除错主机设定的程序断点以及变量观察点的相关信息,以便分别与自微处理器发出的地址与数据进行比较。
然而,由于于已知技术中的嵌入式电路内仿真器模块的地址寄存器与数据寄存器的数目是有限的,若程序设计者设定太多程序断点,便没有设定变量观察点的空间。如此一来,除错主机仅能在处理器每执行一步固件程序指令后便检查一次变量观察点的值,此称之为软件变量观察点,并会大大地降低固件程序的执行速度。同样地,若程序设计者设定太多变量观察点,便没有设定程序断点的空间,由于程序设计者不一定了解嵌入式电路内仿真器模块的内部设计细节,程序设计者可能会对因变量观察点与程序断点设定先后顺序的不同而造成除错过程不同的影响感到疑惑。
因此,本发明提供一种除错***,针对其中程序断点与变量观察点有各自专属的数据寄存器与地址寄存器。此种设计大大简化了设定程序断点与变量观察点的过程,并且避免两者共享数据寄存器与地址寄存器所导致的问题。此种设计亦让程序设计者于除错时无论先设定程序断点或变量观察点均会得到一致的结果,而避免程序设计者的困惑。另外,由于变量观察点有专属的硬件支持,因此程序设计者亦不会被突然由硬件变量观察点转变为软件变量观察点而感到惊讶。
虽然本发明已以较佳实施例披露如上,然其并非用以限定本发明,本领域的技术人员在不脱离本发明的精神和范围的前提下可作若干的更动与润饰,因此本发明的保护范围以本发明的权利要求为准。

Claims (13)

1.一种用于固件程序除错的微处理器,可受一除错主机控制以对一固件程序进行除错,包括:
一核心模块,用以执行该固件程序;
一总线接口模块,耦接至该核心模块,用以通过一总线为该核心模块撷取该固件程序的多个指令与存取该固件程序的多个变量;以及
一嵌入式电路内仿真器模块,耦接至该核心模块与该总线接口模块,用以分开并独立地储存至少一第一除错参数与至少一第二除错参数,以及当该核心模块与该总线接口模块所传输的所述多个指令与该至少一第一除错参数的任一相符合时,或当该核心模块与该总线接口模块所传输的所述多个变量与该至少一第二除错参数的任一相符合时,通知该核心模块。
2.如权利要求1所述的用于固件程序除错的微处理器,其中该至少一第一除错参数与至少一第二除错参数可经由该除错主机进行设定与修改。
3.如权利要求1所述的用于固件程序除错的微处理器,其中该至少一第一除错参数为用以中断该固件程序的执行的至少一程序断点。
4.如权利要求1所述的用于固件程序除错的微处理器,其中该至少一第二除错参数为用以监测该固件程序的所述多个变量的至少一变量观察点。
5.如权利要求1所述的用于固件程序除错的微处理器,其中该固件程序的所述多个指令储存于一第一存储器,该固件程序的所述多个变量储存于一第二存储器,而该第一与第二存储器皆经由该总线耦接至该微处理器。
6.如权利要求1所述的用于固件程序除错的微处理器,其中该嵌入式电路内仿真器模块包括:
多个指令地址寄存器,用以储存由该除错主机设定的该至少一第一除错参数的至少一指令地址;
多个指令数据寄存器,用以储存由该除错主机设定的该至少一第一除错参数的至少一指令数据;
多个变量地址寄存器,用以储存由该除错主机设定的该至少一第二除错参数的至少一变量地址;以及
多个变量数据寄存器,用以储存由该除错主机设定的该至少一第二除错参数的至少一变量数据。
7.如权利要求6所述的用于固件程序除错的微处理器,其中该嵌入式电路内仿真器模块还包括:
一第一比较器,耦接至该核心模块与所述多个指令地址寄存器,用以于所述多个指令的地址与该至少一第一除错参数的该至少一指令地址中的任一相符合时,产生一第一比较结果信号,其中该核心模块输出所述多个指令的地址以便让该总线接口模块撷取所述多个指令;
一第二比较器,耦接至该总线接口模块与所述多个指令数据寄存器,用以于所述多个指令的数据与该至少一第一除错参数的该至少一指令数据中的任一相符合时,产生一第二比较结果信号,其中该总线接口模块撷取所述多个指令的数据并将所述多个指令的数据回传至该核心模块;
一第三比较器,耦接至该核心模块与所述多个变量地址寄存器,用以于所述多个变量的地址与该至少一第二除错参数的该至少一变量地址中的任一相符合时,产生一第三比较结果信号,其中该核心模块指定所述多个变量的地址以便让该总线接口模块撷取所述多个变量;
一第四比较器,耦接至该总线接口模块与所述多个变量数据寄存器,用以于所述多个变量的数据与该至少一第二除错参数的该至少一变量数据中的任一相符合时,产生一第四比较结果信号,其中该总线接口模块撷取所述多个变量的数据并将所述多个变量的数据回传至该核心模块;以及
一OR门,耦接至该第一、第二、第三与第四比较器,用以执行一OR函数于该第一、第二、第三与第四比较结果信号而产生一输出值;
其中若该输出值呈现致能状态,该嵌入式电路内仿真器模块便通知该除错主机。
8.一种对固件程序进行除错的方法,该固件程序被一用于除错的微处理器所执行,该微处理器撷取该固件程序的多个指令与存取该固件程序的多个变量,该对固件程序进行除错的方法包括下列步骤:
于该微处理器中,分开并独立地储存至少一第一除错参数与至少一第二除错参数;
若被该微处理器撷取的所述多个指令与该至少一第一除错参数的任一相符时,中止该微处理器继续执行该固件程序并通知一除错主机;以及
若被该微处理器存取的所述多个变量与该至少一第二除错参数的任一相符时,通知该除错主机该至少一第二除错参数已被更新。
9.如权利要求8所述的对固件程序进行除错的方法,其中该至少一第一除错参数为用以中断该固件程序的执行的至少一程序断点。
10.如权利要求8所述的对固件程序进行除错的方法,其中该至少一第二除错参数为用以监测该固件程序的所述多个变量的至少一变量观察点。
11.如权利要求8所述的对固件程序进行除错的方法,其中该储存步骤包括下列步骤:
分开且独立地储存由该除错主机设定的该至少一第一除错参数的至少一指令地址与至少一指令数据;以及
分开且独立地储存由该除错主机设定的该至少一第二除错参数的至少一变量地址与至少一变量数据。
12.如权利要求11所述的对固件程序进行除错的方法,还包括下列步骤:
若所述多个指令的地址与该至少一第一除错参数的该至少一指令地址中的任一相符合时,产生一第一比较结果信号,其中该微处理器指定所述多个指令的地址以便撷取所述多个指令;
若所述多个指令的数据与该至少一第一除错参数的该至少一指令数据中的任一相符合时,产生一第二比较结果信号,其中所述多个指令的数据会被撷取并被回传至该微处理器;
若所述多个变量的地址与该至少一第二除错参数的该至少一变量地址中的任一相符合时,产生一第三比较结果信号,其中该微处理器指定所述多个变量的地址以便撷取所述多个变量;
若所述多个变量的数据与该至少一第二除错参数的该至少一变量数据中的任一相符合时,产生一第四比较结果信号,其中所述多个变量的数据被撷取并被回传至该微处理器;
执行一OR函数于该第一、第二、第三与第四比较结果信号而产生一输出值;以及
若该输出值呈现致能状态时,通知该除错主机。
13.如权利要求8所述的对固件程序进行除错的方法,其中当该微处理器于该中止步骤中被中止执行该固件程序后,该除错主机可命令该微处理器继续执行该固件程序。
CNB2006100736504A 2005-04-13 2006-04-13 应用于固件程序除错的微处理器与方法 Active CN100403275C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US67066505P 2005-04-13 2005-04-13
US60/670,665 2005-04-13

Publications (2)

Publication Number Publication Date
CN1831785A CN1831785A (zh) 2006-09-13
CN100403275C true CN100403275C (zh) 2008-07-16

Family

ID=36994097

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006100736504A Active CN100403275C (zh) 2005-04-13 2006-04-13 应用于固件程序除错的微处理器与方法

Country Status (2)

Country Link
CN (1) CN100403275C (zh)
TW (1) TWI306191B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8543870B2 (en) * 2011-02-14 2013-09-24 Nanya Technology Corporation Circuit for detecting and recording chip fails and the method thereof
CN112820341B (zh) * 2021-03-03 2024-05-07 群联电子股份有限公司 存储器检查方法、存储器检查装置及存储器检查***
CN117413253A (zh) * 2021-09-29 2024-01-16 英特尔公司 用于对固件代码执行单元测试的装置、设备、方法和计算机程序
TWI819826B (zh) * 2022-09-30 2023-10-21 瑞昱半導體股份有限公司 具有韌體更新錯誤排除機制的電子系統及其韌體更新方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6219828B1 (en) * 1998-09-30 2001-04-17 International Business Machines Corporation Method for using two copies of open firmware for self debug capability
CN1362671A (zh) * 2001-01-05 2002-08-07 英业达股份有限公司 基本输入输出***的追踪除错方法
US20040250244A1 (en) * 2003-06-03 2004-12-09 Albrecht Gregory F. Systems and methods for providing communication between a debugger and a hardware simulator
JP2005018485A (ja) * 2003-06-26 2005-01-20 Nec Corp ファームウェアデバッグ方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6219828B1 (en) * 1998-09-30 2001-04-17 International Business Machines Corporation Method for using two copies of open firmware for self debug capability
CN1362671A (zh) * 2001-01-05 2002-08-07 英业达股份有限公司 基本输入输出***的追踪除错方法
US20040250244A1 (en) * 2003-06-03 2004-12-09 Albrecht Gregory F. Systems and methods for providing communication between a debugger and a hardware simulator
JP2005018485A (ja) * 2003-06-26 2005-01-20 Nec Corp ファームウェアデバッグ方法

Also Published As

Publication number Publication date
TWI306191B (en) 2009-02-11
CN1831785A (zh) 2006-09-13
TW200636446A (en) 2006-10-16

Similar Documents

Publication Publication Date Title
US6598178B1 (en) Peripheral breakpoint signaler
WO2020207040A1 (zh) 片上调试装置和方法
JP4987182B2 (ja) コンピュータシステム
US6185732B1 (en) Software debug port for a microprocessor
JP3846939B2 (ja) データプロセッサ
EP1970812A2 (en) Embedded systems debugging
TWI544410B (zh) 利用執行單步驟以進行編碼診斷
KR20010006188A (ko) 마이크로프로세서 기반 장치용 트레이스 캐시
US7873874B2 (en) System and method for controlling synchronous functional microprocessor redundancy during test and analysis
US20090044058A1 (en) System and Method for Controlling Synchronous Functional Microprocessor Redundancy during Test and Method for Determining Results
JP4865943B2 (ja) コンピュータシステム
US20070011517A1 (en) Debug system for data tracking
JP2001154876A (ja) マイクロコンピュータデバッグアーキテクチャ及び方法
CN100403275C (zh) 应用于固件程序除错的微处理器与方法
CN113157508A (zh) 嵌入式***的测试方法、***、装置、设备及存储介质
US6598150B2 (en) Asynchronously accessing the program counter values of a data processing system by applying an independent clock on the latching and scan-chain circuits
JP2003015906A (ja) リモートデバッグ方法および装置
US20060179380A1 (en) On-chip electronic hardware debug support units having execution halting capabilities
CN110532164B (zh) 半导体设备和调试方法
CN110321171B (zh) 开机检测装置、***及其方法
JPH10254738A (ja) エミュレータ装置及びエミュレーション方法
JP2006323726A (ja) モニタプログラムおよびリアルタイムトレースシステム
US20020026301A1 (en) Automatic evaluation method, automatic evaluation system, and storage medium storing automatic evaluation program
JPH05101697A (ja) Lsi用故障診断回路
JP2005353020A (ja) コンピュータプログラムのシミュレーション方式

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant