微处理器与调试系统的制作方法

文档序号:6573426阅读:251来源:国知局
专利名称:微处理器与调试系统的制作方法
本案是中国专利申请号为95120196.4的专利申请案的分案申请。
本发明涉及一种微处理器和调试系统。该调试系统用于跟踪程序计数器的功能和通知用户当前的地址或数据已被存取。


图1是根据现有技术实现的调试系统,称为内部电路仿真器。
该系统包括用户目标系统500和用于调试目标系统500的调试器505,目标系统500含有微处理器501,存贮器503以及输入输出部件502,调试器含有调试微处理器506与监控程序存贮器507。
为调试目标系统500,要移去或禁止微处理器501工作,而调试器505的插针连到微处理器501,使得微处理器506能代替微处理器501的操作。使微处理器506执行贮存在存贮器507的监控程序,以实现对保存在存贮器503中的用户程序的控制。
微处理器506执行用户程序,并存取存贮器503的数据与输入输出部件502。调试器505含有跟踪存贮器508,使得微处理器506能够提供关于内部状态的跟踪信息。例如,可以提供通常微处理器501经处理器总线504不能提供的程序计数器的数值。
然而,图1的现有技术必须把目标系统500中的微处理器501的所有引线连到调试器505。例如,微处理器501有70条引线,用于30条地址信号线、4条字节允许信号线。1条读信号线,1条写信号线、1条读确认信号线。1条写确认信号线和32条数据信号线。调试器505具有用于这些引线的插针,成本昂贵,且工作不稳定。为了能存取目标系统500的存贮器503和调试器505的存贮器507,微处理器506必须从一组总线转换到另一组总线,因而,不能应用于高速微处理器。
如果目标微处理器具有外围元件,并且可能有不同的引线排列,这样,调试器必须具有同样引线排列的探针。当调试器505的探针连到目标系统500时可能影响和使得目标系统500信号不稳定。
图2是根据另一种现有技术实现的调试系统,称为只读存贮器监控程序。
用户目标系统510具有一个连到宿主机517的串行接口,存贮器513贮存监控程序514,微处理器511执行监控程序,访问存贮器514、输入输出部件515和寄存器516,使用软件断点指令执行和控制用户程序。
这种现有技术,借用用户存贮器513贮存监控程序514。如果目标系统510的存贮系统不完善,则监控程序514本身也将不稳定。如果存贮器513的容量较小,则将没有存放监控程序514的空间。由于监控模式是由用户中断启动,则某些程序将不能被调试。虽然安装在目标系统510上的串行接口512对于调试是必不可少的,但调试之后,则不再使用。这种现有技术的调试性能不好,因为它没有硬件断点也不能跟踪程序计数器。
图3仍然是根据另一种现有技术的调试系统。
用户目标系统520具有微处理器521,该微处理器含有串行接口526和定序器525。串行接口526与调试工具529通信。调试工具529向接口526发送信号,而定序器525对信号进行解释,为了影响信号,定序器525暂停用户程序的执行,存取寄存器528使用总线控制器527存取输入输出部件523和存贮器524,并控制用户程序。串行接口526通常不能与宿主机530直接通信。因此,调试工具529要把来自宿主机530的命令转换成微处理器521能理解的信号,而把来自微处理器521的信号转换成宿主机530能理解的数据格式。
微处理器521含有必须访问微处理器521和调试工具529的定序器525。这样,这种现有技术由于采用复杂的连接逻辑,而使芯片面积增加。如果目标系统520要提供复加的寄存器,由于复杂的工作,必须相应地修改定序器525。这种现有技术不能跟踪程序计数器。
如上所述,这些现有技术不能跟踪程序计数器,即使他们能够跟踪,他们必须通过处理器总线,在调试处理器与目标系统之间连接许多信号。根据图1的现有技术,调试程序505的微处理器506必须访问存贮器503和目标系统500中的输入输出部件502,其困难在于控制这些存取操作的时序。
图2的现有技术是在用户存贮器513中存放监控程序,它减少用户存贮的空间。用这种现有技术进行调试是不可靠的和不充分的。
图3的现有技术是在目标系统520中的微处理器521中包含定序器525,对来自调试工具529发送的信号进行解释并执行。换句话说,这种现有技术涉及目标系统与调试工具之间的复杂的连接。如果要修改处理器521,则要做复杂的工作,对定序器525进行修改。
图2和图3的现有技术均没有触发功能。虽然图1的现有技术在调试微处理器506可能有触发功能,但也要有用于提供触发信息的附加信号。
本发明的目的在于提供一个配置在用户目标系统中的微处理器,用于以目标系统与调试器之间的少量信号实现调试功能。
本发明的另外目的在于提供一个配置在用户目标系统中的微处理器,借助在目标系统上微处理器的操作,方便地存取目标系统的存贮器和输入输出部件。实现调试功能。
本发明的其它目的在于提供一个配置在用户目标系统中的微处理器,以少量的信号实现跟踪程序计数器的调试功能。
本发明的其它目的还在于提供一个配置在用户目标系统中的微处理器,以最少的硬设备通过共享地址、通过带有硬件断点功能和触发功能的数据比较器、以及共享具有程序计数器信息和触发器信息的输出信号,实现调试功能。
为了达到这些目的,本发明的第一个方面是提供一种微处理器,它具有处理机内核(代码块)和调试模块。处理机内核执行用户程序和监控程序,以便调试用户目标系统。调试模块通过内部调试接口和处理器总线连到处理机内核。调试模块具有一个接口,通过它处理机内核执行保存一个在调试工具内的监控程序,调试模块还有一个用于向处理器内核发出中断和异常请求的运行控制器,用它把处理器内核从用户程序切换到监控程序。
本发明的第二方面是提供一个调试系统,在此系统中,调试器存储一个监控程序,用于调试用户目标系统。目标系统包括微处理器、存贮器和输入/输出单元。微处理器具有处理机内核和调试模块。处理机内核执行用户程序或监控程序。调试模块通过内部调试接口和处理器总线连接到处理机内核,通过外部调试接口连接到调试器。调试模块的接口能使得处理机内核执行监控程序。调试模块还有运行控制器,用于向处理机内核发出中断和异常请求,把处理机内核从用户程序切换到监控程序。存贮器通过处理器总线与微处理器相连,并存贮对于微处理器执行用户程序所必要的信息。输入/输出单元通过处理器总线连接到微处理器。
根据本发明的第一方面和第二方面,目标系统的微处理器具有调试功能,以减少目标系统与调试器之间的信号数量。根据本发明的第一方面和第二方面,在调试期间,微处理器操作,方便地访问目标系统的存储器和输入/输出单元。
本发明的第三方面是提供一种微处理器,它具有一个能执行程序的处理机内核和能跟踪程序计数器的跟踪器。跟踪器通过内部调试接口连接到处理机内核,提供程序计数器信号,表示处理机内核将要执行的指令地址,传送输出信号的信号线的数量要少于指令地址的位数。
根据本发明的第三部分,目标系统的微处理器具有调试功能,以减少用于跟踪程序计数器的接口信号的数目。
本发明的第四方面是提供一种微处理器,它具有执行程序的处理机内核、断点电路和程序计数器跟踪器。当存贮的地址与设置的地址相符合、或当被存取的地址和数据与设置的地址和数据相符合,则断点电路向处理机内核提供断点请求和触发请求。跟踪器提供一个触发请求已是可用的外部状态信号信息。
根据本发明的第四方面,目标系统的微处理器具有调试功能,地址比较器共享硬件的断点功能和触发功能,跟踪器的输出用于提供触发信号,以使硬件减至最低限度。
本发明的这些目的和其它的目的、特征和优点从下文描述的优选实施例并参照附图将会更加明了。
图1示出根据一个现有技术的、用于调试用户目标系统的调试系统。
图2示出根据另一现有技术的、用于调试用户目标系统的调试系统。
图3示出根据又一个现有技术的、用于调试用户目标系统的调试系统。
图4示出根据本发明的一个实施例的调试系统和微处理器。
图5示出根据所述实施例的调试模块。
图6示出根据图4所示的实施例的寄存器电路。
图7示出根据图6所示的寄存器电路的调试控制寄存器(DCR)。
图8示出根据图6所示的寄存器电路的指令断点地址0寄存器(IBA0)。
图9示出根据图6所示的寄存器电路的指令断点控制0寄存器(IBC0)。
图10示出根据图6所示的寄存器电路的指令断点状态寄存器(IBS)。
图11示出根据图6所示的寄存器电路的数据断点地址0寄存器(DBA0)。
图12示出根据图6所示的寄存器电路的数据断点控制0寄存器(DBC0)。
图13示出根据图6所示的寄存器电路的数据断点状态寄存器(DBS)。
图14示出根据图6所示的寄存器电路的处理器总线断点地址0寄存器(PBA0)。
图15示出根据图6所示的寄存器电路的处理器总线断点数据0寄存器(PBD0)。
图16是图6所示的寄存器电路的处理器总线屏蔽0寄存器(PBM0)。
图17是图6所示的寄存器电路的处理器总线控制0寄存器(PBC0)。
图18是图6所示的寄存器电路的处理器总线断点状态寄存器(PBS)。
图19是图5所示的调试模块的指令/数据地址断点电路。
图20是图5所示的调试模块的处理器总线断点电路。
图21是图5所示的调试模块的串行监控总线电路。
图22是串行监控总线电路读操作的定时图。
图23是串行监控总线电路写操作的定时图。
图24是根据指令CFC0的串行监控总线电路读操作的定时图。
图25是根据指令CTC0的串行监控总线电路写操作的定时图。
图26是图21示出的串行监控总线电路的操作流程图。
图27是串行监控总线电路的读操作流程图。
图28是串行监控总线电路的写操作流程图。
图29是图5示出的调试模块的程序计数器跟踪器。
图30是根据转移指令程序计数器输出的定时图。
图31是根据间接跳转指令程序计数器输出的定时图。
图32是根据异常和间接跳转指令的程序计数器输出的定时图。
图33示出指令/数据地址跟踪触发器的时间图。
图34示出响应异常产生指令而产生的指令/数据地址跟踪触发器的定时图。
图35示出响应间接指令而产生的指令/数据跟踪触发器的定时图。
图36示出当调试异常发生时的输出信号PCST[20]的定时图。
图37示出当调试异常发生的同时还提供目标程序计数器的输出时的信号PCST[20]的定时图。
图38示出调试方式之后在正常方式被恢复时的信号PCST[20]的定时图。
图39示出目标程序计数器的输出的定时图。
图40示出下一个间接转换发生而且目标程序计数器提供输出时的定时图。
图41示出异常发生的同时目标程序计数器提供输出的定时图。
图42示出图5所示的调试模块的外部接口电路。
图43示出扩展的IBS寄存器。
图44示出根据本发明的另一个实施例的调试系统。
图4示出根据本发明的一个实施例的调试系统和微处理器。
调试系统具有用户目标系统70和调试器60。
目标系统70具有微处理器10、存贮器40和输入输出部件50。微处理器10具有调试功能。
微处理器10具有处理机内核20和调试模块30。处理机内核20通过处理机总线80访问存贮器40和输入/输出部件50并执行程序。处理机内核20通过内部调试接口和处理机总线80连接到调试模块。调试模块30通过外部调试接口连接到调试器60。
调试系统采用调试方式执行监控程序;还采用正常方式执行用户程序。
〔调试方式〕处理机内核20产生调试异常,或者产生调试复位以启动调试方式。处理机内核20跳转到调试异常向量地址FF20-0200或者跳转到调试复位向量地址FF20-0000并设置(assert)调试方式信号DM。通过这些向量地址在调试器60中访问存贮器。处理机内核20通过调试模块30去执行存放在调试程序60中的监控程序。监控程序通过指定用户程序首地址和末地址以及对存贮器和寄存器读、写执行和控制用户程序。处理机内核20可以通过执行返回指令返回到正常方式并执行用户程序。这样,处理机内核20跳转到由返回指令所指定的地址,并对调试方式信号DM取反。
〔正常方式〕在正常方式下,调试系统执行用户程序,同时,跟踪程序计数器。通过产生一个调试异常,或者通过硬件断点、软件断点或调试中断产生的用于处理机内核20的调试复位信号可以使调试系统从正常方式转换到调试方式。
在正常方式下,能够对程序计数器跟踪功能、硬件断点功能、软件断点功能、调试中断功能、调试复位功能和跟踪触发的功能进行解释。
当处理机内核20执行存放在存贮器40的用户程序的同时,程序计数器跟踪功能对程序计数器中的值进行跟踪。在处理机内核20执行用户程序时,程序计数器信息被发送到内部调试接口,调试模块30处理该信息并通过外调试接口将已处理的信息送到调试器60。
当有预设定地址的指令在执行、或当预设定地址的数据被存取时,硬件断点功能产生一个调试异常,使得处理机内核20执行监控程序。更确切地说,就是调试模块30对处理机内核20执行的指令的地址与存放在调试模块30的地址进行比较、或者把处理机内核20存取数据的地址与存放在调试模块30的数据地址进行比较,或是把处理机内核20提供的数据与存贮在调试模块30的数据进行比较,如果他们之间彼此符合,调试模块向处理机内核20发出调试异常请求或调试中断请求。
软件断点功能产生一条导致调试异常的软件断点指令,使得处理机内核20执行监控程序。
调试中断功能设置一个产生调试异常的调试中断信号,使得处理机内核20执行监控程序。
调试复位功能设置一个使调试复位的调试复位信号,对处理机内核20和调试模块30的内部状态初始化。然后,处理机内核20进行调试方式,并从调试复位向量地址FF20-0000,启动调试程序。
跟踪触发功能使得微处理器10发出一个表明有预设定地址的指令执行或预设定地址的数据被存取的外部信号。为了响应该信号,调试器60接通/关断程序计数器跟踪功能。在调试模块30把被处理器内核20执行的指令地址与存贮在调试模块30的指令地址进行比较,或把被处理器内核20存取的数据的地址与存贮在调试模块30的数据地址进行比较,或是把从处理器内核20发送到内部调试接口和处理机总线80的数据与存贮在调试模块30的数据进行比较之后,如果它们之间彼此相符合,向调试器60提供触发器信息,实现跟踪触发功能。
调试模块30的详细说明。
图5是调试模块30的内部框图。
调试模块30含有指令/数据地址断点电路31、程序计数器跟踪器32、处理机总线断点电路33、串行监控总线电路34、寄存器电路35、外部接口电路36和时钟发生器37。
指令/数据地址断点电路31通过内部调试接口连到处理机内核20。电路31把处理机20提供的指令地址与设置在寄存器电路35的指令地址比较,如果他们相符合,向处理器内核20提供指令地址断点异常请求。电路31还把处理器内核20提供的数据地址与设置在寄存器电路35的数据地址相比较,如果他们彼此相符合,向处理机内核20提供一个数据地址断点异常请求。
程序计数器跟踪32通过内部调试接口连接到处理机内核20,以便处理由处理机内核20提供的程序计数器跟踪信息,并将已处理的信息提供给外部接口电路36。
处理机总线断点电路33通过处理器总线80连到处理机内核20。电路33监控在处理机总线80的总线周期,当用于设置在寄存器电路35中的地址和数据的总线周期进行时,向处理机内核20发出异常请求。
串行监控总线电路34通过处理器总线80连到处理机内核20,并且当处理机内核20执行调试器60的监控程序时,起接口作用。
寄存器电路35包括控制寄存器,用于控制调试模块30各种功能。寄存器35通过处理器总线80和内部调试接口连接到处理机内核20,使得处理机内核20能够读、写控制寄存器的内容。控制寄存器的内容被送到调试模块30的各个单元和处理机内核20,以控制调试功能。
外部接口电路36使调试模块30的程序计数器跟踪32和串行监控总线电路34以及处理机内核20与调试器60相接口。
时钟发生器37将时钟信号CLK分频,并向串行监控总线电路34提供时钟信号CLK2。
〔外部信号〕调试模块30采用下面8种专用的接口信号与外部调试器60通信1.SDAD/TPC(输出)2.SDI/DINT*(输入)3.DCLK(输出)4.DRESET*(输入)5至7、PCST〔20〕(输出)8.DBGE*(输入)(1)、调式时钟信号DCLK(输出)这个信号是送到调试器60的时钟输出信号,用来控制串行监控总线和程序计数器跟踪接口的定时。用于串行监控总线的操作,这个信号是由处理机内核20的操作时钟信号的频率二分频形成的。
(2)、调试复位信号DRESET*(输入到上拉(pull-up)端钮)。
这个信号是低有效的信号(low-active),它的设置使调试模块30初始化,而无须考虑输入信号DBGE*。当不使用调试器60时,该信号端钮断开。
(3)、程序计数器跟踪状态信号PCST〔20〕(输出)这个信号表示下列程序计数器跟踪状态和串行监控总线方式111流水线失速状态(STL)110已获取(Taken)转移/跳转状态(JMP)(具有程序计数器输出)101已获取转移/跳转状态(BRT)(没有程序计数器输出)100异常状态(EXP)(具有异常向量码输出)011顺序异常状态(SEQ)(指令运行)010在流水线失速情况下,跟踪触发器输出状态(TST)001运行时,跟踪触发器输出状态(TSQ)000调试方式(DBM)(0低电平,1高电平)(4)、调试器允许信号DBGE*(输入到上拉端钮)这个信号指示是否调试器被连接。如果调试器60断开,信号是高;如果调试器被连接,则信号是低。
如果信号DBGE*是高,表示调试器断开,处理器内核20的信号DEV是低,并且调试异常向量地址是FF200200。用户复位信号RESET*使调试模块30的功能初始化,并且禁止调试器60的功能。这时,输出信号SDA0/TPC、DCLK和PCST〔20〕变成高。
如果信号DBGE*是低,则表示调试器60接通,信号DEV是高,调试异常向量地址是FF20-0200(在监控区域)。用户复信号不对调试模块30初始化。
(5)、串行数据和地址输出/目标程序计数器信号SDA0/TPC(输出)当信号PCST〔20〕表示调试方式(DBM)时,这个信号做为串行数据和地址输出信号SDA0,当信号PCST〔20〕不表示调试方式时,则这个信号做为目标程序计器信号TPC。
当信号PCST〔20〕表示调试方式时,则信号SDA0以串行方式,一位一位地提供数据、地址、读/写和字节允许信号。在一个总线周期开始之前,为时钟周期提供一个低电平起始位信号。
在读操作时,按低电平起始位,地址位A〔2〕到A〔19〕,读/写位R/W*和字节允许位BE〔0〕*到BE〔3〕*的顺序提供信号。在写操作时,按低电平起始位,A〔2〕到A〔9〕,R/W*,BE〔0〕*到BE〔3〕*和数据位D〔0〕到D〔31〕。
当信号PCST〔20〕表示正常方式时,则信号TPC提供转移/跳转指令的目标地址以及异常/中断的向量数。目标地址从位A〔2〕到位A〔31〕顺序提供。
(6)、串行数据输入/调试中断信号SDI/DINT*(输入到上拉端钮)当信号PCST〔20〕表示调试方式时,则这个信号做为串行监控总线接口信号SDI;当信号PCST〔20〕表示正常方式时,则这个信号做为程序计数器跟踪接口信号DINT*。
信号SDI是数据输入信号,在读操作中,当接收一个在时钟周期内为低的外部起始位时,数据输入操作从下一个时钟开始。当在写操作中有低电平输入时,则总线周期结束。
在读操作中,数据各位按低电平起始位,数据位D〔0〕到D〔31〕的顺序提供。在写操作中,仅接收低电平结束位。
信号DINT*是来自调试器60的调试中断输入信号。当不使用调试器60时,则端钮是断开的。
图6是寄存器电路35的详图。
寄存器电路35由地址译码器351和寄存器部位352组成。
地址译码器351接收经由处理器总线80从处理器内核20送来的地址输入信号A〔310〕、读信号RD*、写信号WR*、调试方式信号DM和内核时钟信号CLK。当读寄存器部位352的一个寄存器时,地址译码器351接收指定寄存器的设备地址码,断言一个对应于该寄存器的寄存器读信号,并断言一个送到处理器内核20的读确认信号RDACK*。
当向寄存器部件352寄存器按给定地址写入数据时,地址译码器351对应于该寄存器的寄存器写信号、读确认信号RDACK*和写确认信号WRACK*。
在正常方式下,寄存器部件352是不可存取的。这样,在读总线周期地址译码器351只设置送到处理器内核20的读确认信号RDACK*,而在写总线周期,仅设置送到处理器内核20的写确认信号WARCK*,因此,读出的值是不确定的,而写入数据也是无效的。
如果寄存器DCR的存贮保护位MP被调置,即使在调试方式下,寄存器部件352的寄存器,除了寄存器DCR外都是不可存取的。这样,在读总线周期,地址译码器351只设置读确认信号RDACK*;在写总线周期仅设置写确认信号WRACK*,因此,读出来的值是不确定的,写入的数据也无效。
表1是地址译码的操作
寄存器部件352包括调试控制寄存器(DCR)指令。断点状态(IBS)寄存器、数据、断点状态(DBS)寄存器、处理器总线断总状态(PBS)寄存器、指令断点地址0(IBA0)寄存器、指令、断点控制0(IBC0)寄存器,数据断点地址0(DBA0)寄存器、数据、断点控制0(DBC0)寄存器、处理器总线断点地址0(PBA0)寄存器、处理器总线断点数据0(PBD0)寄存器、处理器总线断点数据屏蔽0(PBM0)寄存器和处理器总线断点控制0(PBC0)寄存器。
当调试复位信号DRESET*被设置,或是当为高电平,而表示调试器60断开的信号DEGE*用户复位信号RESET*激活时,则所有寄存复位。
解释寄存器功能图7是调试控制寄存器(DCR)跟踪方式位TM(复位到0)这一位规定程序计数器跟踪操作0实时提供程序计数器跟踪信息1提供完整的程序计数器跟踪信息(不保证实时操作)。
位TM被送到程序计数器跟踪器32。
屏蔽用户复位MRST(复位到0)这一位规定用户复位屏蔽0调试异常时,屏蔽用户复位1调试异常时,允许用户复位位MRST被送到外部接口电路36。
存贮保护位MP(复位到1)
0在调试方式下,允许对监控区进行写操作。
1在调试方式下,除了寄存器DCR阻止写操作之处,保护监控区域(FF20-0000到FF3F-FFFF)位MP被送到地址译码器351和串行监控总线电路34。
屏蔽非屏蔽中断位MNmI(复位到1)0屏蔽处理器内核20的NmI。
1允许NmI。
位MVmI被送到处理器内核20。
屏蔽中断位MInt(复位到1)0屏蔽处理器内核20的外中断(Int〔50〕*)1允许外中断(Int〔50〕*)位MInt被送到外部接口电路36。
Endian存贮器位ENM。
当用户进行复位操作时,这一位表示Endian信号的值,这一位是只读位,对该位的写操作是无效的。
0小的endian。
1大的endian。
当用户复位信号RESET*为低,在内核时钟信号上升沿,通过锁存endian信号形成位ENM。
暂停状态位HIS当信号DINT*有效,这一位表示暂停信号的值。位HIS是只读位,对这一位的写操作是无效的。
0非暂停状态1暂停状态通过在调试中断信号DINT的上升沿锁住暂停信号形成HIS位。
打盹(doze)状态位DZS。
当信号DINT*有效这一位表示打盹信号的值。该位是只读位,对这一位的写操作是无效的。
0非打盹状态1打盹状态在调试中断信号DINT*的下降边锁存打盹信号形成位DZS。
图8是指令断点地址0寄存器IBA0。
指令断点地址字段IBA。
寄存器IBA0的字段存贮指令断点地址,它是虚拟地址。字段IBA送到指令/数据地址断点电路31。
图9是指令断点控制0寄存器IBC0。
断点允许位BE(复位到0)这一位规定指令地址断点功能的有效性。
0禁止指令地址断点功能。
1允许指令地址断点功能。
如果将被运行的指令的虚拟地址与设置在寄存器IBA的地址相符合,且当位BE为1,则向处理器内核20发出指令断点请求,使寄存器IBS的位、BS0置位。(处理器内核20产生指令地址断点异常,刚好在运行的指令地址符合之前)位BE送往到断点电路31。
跟踪触发允许位TE(复位置0)。
这一位表示指令地址跟踪触发功能的有效性。
0禁止指令地址跟踪触发功能
1允许指令地址跟踪解发功能。
如果被运行的指令的虚拟地址与寄存器IBA0地址设置相符合,并且表明允许指令地址跟踪触发功能的位TE为1,则信号PCST〔20〕代表跟踪触发的输出状态TST(0/0)或TSQ(001),使得寄存器IBS的位BS0置位。位TE送往断点电路31。
图10是指令中断状态寄存器IBS中断通道号字段BCN该字段表示一个指令断点的通道号。它是只读字段,对该字段的写操作将是无效的。
0000空(保留)00011个通道111115个通道(保留)断点状态0位BS0这是一个表明产生指令地址、断点或指令地址跟踪触发的状态位。
0无指令地址断点,也没有通道0的指令地址跟踪触发。
1指令地址断点异常的发生或指令地址跟踪触发并且寄存器IBC0中位BE为1或TE为1则表明指令的虚地址与设置地址相符合。
通过向BS0写0将BS0清除。当一个从断点电路31发出的BS0置位信号被调置则BS0被置位。
图11是数据断点地址0寄存器DBA0数据断点地址字段DBA。
该字段存放一个数据断点地址,这个地址是虚地址。这个字段送往断点电路31。
图12是数据断点控制0寄存器PBC0。
断点允许位BE(复位置0)这个位规定数据地址断点功能的有效性。
0禁止数据地址断点功能。
1允许数据地址断点功能若被存取的数据的虚地址与在寄存器DBA0中设置的地址相符合且寄存器DBA0的位BE为1,将产生一个数据断点请求送往处理器内核20,并置位寄存器DBS的位BS0。位BE被送往断点电路31。
跟踪触发允许位TE(复位置0)这个位规定数据地址跟踪触发功能的有效性。
0禁止数据地址跟踪触发功能1允许数据地址跟踪触发功能若被存取的数据的虚地址与寄存器DBA0中设置的地址相符合,并且位TE为1,则表明允许数据地址跟踪触发功能。信号PCST〔20〕表示跟踪触发输出状态TST(0/0)或TSQ(001),并且寄存器DBS的位BS0被置位。位TE被送往断点电路31。
图13是数据断点状态寄存器DBS。
断点通道号字段BCN该字段表明数据断点的通道号。它是只读的,对该字段的写操作是无效的。
0000空(保留)。
00011个通道。
111115个通道(保留)断点状态0位BS0。
这是一个表明一个数据地址断点或数据地址跟踪触发已经发生的状态位。
0没有数据地址断点或通道0的数据地址跟踪触发。
1在数据的虚地址与设置地址相符合,并且位BE为1或寄存器DBC0中的TE为1时发生了数据地址断点异常或数据地址跟踪触发。
通过向BS0写0将BS0清除。当从断点电路31发出的BS0置位信号被设置后,BS0被置位。
图14是处理器总线断点地址寄存器PBA0。
处理器总线断点地址字段PBA。
该字段存储处理器总线断点跟踪触发功能的断点地址。这个地址是物理地址。该字段PBA被送往处理器总线断点电路33。
图15是处理器总线断点数据0寄存器PBD0。
处理器总线断点数据字段PBD。
该字段存放处理器总线断点/跟踪触发功能的断点数据。字段PBD被送往处理器总线断点电路33。
图16是处理器总线屏蔽0寄存器PBM0。
处理器总线断点数据屏蔽字段PBM。
该字段表示禁止(屏蔽)某些存储在寄存器PBD0中的数据比较的位。这些位是根据处理机总线断点/跟踪触发功能而设置的位。
0允许寄存器PBD0中的相应位进行比较。
1禁止寄存器PBD0中的相应位进行比较。
字段PBM被送往处理器总线断点电路33。
图17是处理器总线控制0寄存器PBC0。
断点允许位BE(复位置0)这一位规定处理器总线断点的有效性。
0禁止处理器总线断点。
1允许处理器总线断点。
若一个地址和数据与设置的值相符合,则一个调试中断请求被发送给处理器内核20,位BE被送往处理器总线断点电路33。
跟踪触发器允许位TE(复位置0)。
该位规定一个处理器总线跟踪触发的有效性。
0禁止处理器总线跟踪触发。
1允许处理器总线跟踪触发。
若一个地址和数据与设置的值相符合,那么信号PCST〔20〕代表跟踪触发输出状态TST(0/0)或TSQ(001)。位TE被送往处理器总线断点电路33。
从非高速缓存区取指令位IFUC。
该位规定一个地址和数据是否和设定值比较,用于从非高速缓存区取指令。
0禁止比较。
1允许比较位IFUC被送往处理器总线断点电路33。
从非高速缓存区数据加载位DLUC。
该位规定高速缓存区加载的数据是否进行地址和数据的比较。
0禁止比较。
1允许比较。
位DLUC被送往处理器总线中断电路33。
存储数据到非高速缓存区位DSUC。
该位表示当数据被存储到非高速缓存区时,是否进行地址和数据的比较。
0禁止比较。
1允许比较。
位DSUC是被送往处理器总线断点电路33。
存储数据到高速缓存区位DSCA。
该位规定当数据被存储到高速缓存区时,是否进行地址和数据的比较。
0禁止比较。
1允许比较。
位DSCA被送往处理器断点电路33。
图18是处理器总线断点状态寄存器PBS。
断点通道号字段BCN。
该字段规定处理器总线断点的通道号。
00000通道(保留)。
00011通道111115通道(保留)断点状态0位BS0(复位置0)这是一个表示是否发生了处理器总线断点或一个处理器总线跟踪触发的状态位。
0没有通道0的处理器总线断点或处理器总线跟踪触发。
1通道0的处理器总线断点或处理器总线跟踪触发,且BE是1或在寄存器PBE0中位TE被置1。
通过向BS0写0将它清除。若位BE为1,到处理器内核20的断点调试请求也被清除。当一个从处理器总线断点电路33发出的BS0置位信号被设置,位BS0被置位。
图19是指令/数据地址断点电路31,该电路具有一个指令地址比较器311、一个数据地址比较器312和“与”电路313、314、315和316。
若断点允许位BE或寄存器IBC0中的触发允许位TE被置位,并且一个从处理器内核20发出的指令地址允许信号被设置,那么,比较器311将从处理器内核20来的输入指令地址和存储在寄存器IBA0中的地址进行比较。若它们符合,则比较器311给寄存器IBS中的位BS0提供一个信号使它置位,若寄存器IBC0中的BE位在这时置位,“与”电路313的输出被设置,则提供给处理器内核20一个指令地址断点请求。若寄存器IBC0的TE位被置位,“与”电路314的输出被设置,则提供给程序计数器跟踪器32一个指令地址跟踪触发请求。
若寄存器DBC0的位BE或TE被置位,并且若一个从处理器内核20发出的数据地址允许信号被设置,那么,比较器312对从处理器内核20发出的输入数据地址与存储在寄存器DBA0中的地址进行比较。若它们相符合,比较器312提供一个信号来置位寄存器DBA0中的位BS0。若寄存器DBC0中的位BE在这时置位,“与”电路315的输出被设置,则提供一个数据地址中断请求给处理器内核20。若寄存器DBC0的位TE被置位,“与”电路316的输出被设置,则提供一个数据地址跟踪触发请求给程序计数器跟踪器。
图20是处理器总线断点电路33的详图。
电路33监控处理器总线的总线操作,并且若在寄存器中发生了用于地址和数据设置的总线操作,电路33则提供一个调试中断请求给处理器内核20。
电路33具有一个处理器总线地址比较器331,一个带有屏蔽的数据比较器332和“与”电路333,334和335。
当寄存器PBC0的断点允许位BE或触发允许位TE被置位,比较器331将处理总线中的地址和在设置在寄存器PBA0中的地址进行比较。寄存器PBC0的位DSCA,DSUC,DLUC和IFUC规定关于非高速缓存区/高速缓存区、存储数据/加载数据和指令获取的比较的有效性。表2是比较器331的操作。它们是根据信号ID(指示是否为指定获取或数据存取),读信号RD*,写信号WR*,和信号CACHE*而进行的。
表2
在读信号RD*为低的读总线周期中,数据比较器332将从处理器总线80输入的数据DIN〔310〕和在寄存器PBD0中存储的数据进行比较,它只比较那些在寄存器PBM0中相应位为0的位。在写信号WR*为低的写总线周期中,比较器332将处理器总线80的输出数据DOUT〔310〕和在寄存器PBD0中存储的数据进行比较。它只比较在寄存器PBM0中相应位为0的那些位。
若比较器331和332的每个输出均为高,亦既,如果地址和数据与设置的地址和数据相符合。“与”电路333的输出被设置,则请求寄存器电路35设置寄存器PBS的位BS0。若这时寄存器PBC0的位BE被置位,“与”电路334的输出被设置,则提供给处理器内核20一个调试中断请求。若寄存器PBC0的TE位被置位,则“与”电路335的输出被设置,发出处理器总线跟踪触发请求给程序计数器跟踪器32。
图21是串行监控总线电路34的详图。电路34具有一个串行监控总线控制器341,一个串行输出电路342和一个串行输入电路343。
串行监控总线控制器341以处理器总线80接收数据输出信号DOUT〔310〕、地址信号A〔3120〕、读信号RD、写信号WR*、协处理器读信号CPRD*、协处理器写信号CPWR*和调试方式信号DM、控制器341也接收来自时钟发生器37产生的时钟信号CLK2、寄存器电路35的寄存器DCR的MP位以及外部接口电路产生的信号SDI。
控制器341向处理器总线80提供一个读确认信号RDACK*。写确认信号WRACK*。协处理器读确认信号CPRDACK*、和协处理器写确定信号CPWRACK*、控制器341向串行输出电路342提供一个串行监控总线读/写信号,串行监控总线字节允许信号、串行监控总线数据信号、和用于电路342的输出移位寄存器的数据加载信号和输出移位信号,控制器341向串行输入电路343提供用于输入移位寄存器345的输入移位信号和用于输出缓冲区346的输出允许信号。串行监控总线读/写信号在读总线操作期间为高,在写总线操作期间为低。
当一个从控制器341到输出移位寄存器344的数据加载信号被设置,一个起始位(固定值为低)、地址位A〔1〕到A〔19〕,串行监控总线读/写信号,串行监控总线字节允许信号,串行监控总线数据信号被从LSB加载到输出移位寄存器344。当到寄存器344的输出移位信号被设置,寄存器344中的值以MSB向LSB移动一位。MSB被置为高。输出移位寄存器344的LSB的值由输出信号SDA0来进位。
当从控制器341到输入移位寄存器345的输入信号被设置,寄存器345的值从LSB向MSB移动一位,输入信号SDI的值被置于LSB中。
图21中的串行监控总线电路34的操作将被解释如下当处理器内核20在调试方式下存取从0XFF200000到0XFF2F-FFFF这个区域;或当协处理器在调试方式下执行读/写操作(CTC0,CFC0),通过串行监控总线电路34存取调试器60中的存储器。使用串行监控总线的写操作期间。电路34以串行方式一位一位地提供一个地址信号,一个总线控制信号和一个数据信号做为输出信号SDA0在读操作期间,电路34以串行方式一位一位地提供一个地址信号,一个总线控制信号做为输出信号SDA0。并接收通过输入信号SDI进位的数据。
串行监控总线电路34的操作按照时钟信号CLD2进行。CLK2是通过将处理器内核20的操作时钟信号CLK进行一次分频得到的。
a)通过读/写总线操作存取在读总线操作期间,处理器内核20提供地址A〔310〕来存取和设置信号RD*、当读确认信号RDACK*被设置时,数据DIN〔310〕被读出并且总线操作结束。
在写总线操作期间,处理器内核20发送一个存取地址A〔310〕和一个要写入的数据〔310〕并设置信号WR*。当写确认信号WRACK*被设置时,总线操作结束。
若在调试方式下,处理器内核20对下面提到的监控区域执行总线操作,那么调试器60通过串行监控总线电路34被访问。
监控区域在0XFF20-0000与0XFF2F-FFFF之间扩展了1兆。
(A〔3120〕)=1111-1111-0010(0低,1高)例如,写总线操作用存储指令(SW)操作将数据写入存储器。下面是一个存储指令的例子SWr8 0X0004(r9)在这个例子中,一个存储器地址是通过向通用寄存器r9加一个16位偏移量0X0004来获得。要访问监控区域,通用寄存器的值必须提前设置到0XFF20-0000到0XFF2F-0000之间。
串行监控总线电路34,从低位中提供地址信号A〔192〕,在读操作期间提供高电平信号或在写操作期间提供低电平信号作为输出信号SDA0。此后,字节允许信号BE〔30〕*从低位开始提供。在读操作期间,32位数据做为输入信号SDI被接收,并以数据DIN〔310〕提供给处理器总线80。在写操作期间,从处理器总线80来的数据D0UT〔310〕由输出信号SDA0来进位。
从处理器内核20来的18位地址信号A〔192〕、用来存取1兆的内存空间。
处理器内核20的字节允许信号BE〔30〕送到串行监控总线,用以存取一个字节、半个字或三个字节,即使是进行字节、半字或三字节访问时,串行总线仍然传送32位的数据D〔310〕。当写字节、半字或三字节数据时,信号BE〔30〕中与数据D〔310〕中有用字节对应的位将被设置。在进行读操作时,与信号BE〔30〕中非有效位对应的字节将被微处理器内核20忽略。
如果DCR寄存器的MP位为1,监控区处于调试方式的保护之下,则对从FF20-0000到FF2F-FFFF区域内的写操作将被忽略。在这种情况下,串行监控总线电路34只向微处理器内核20返回WRACK*信号,用以终止总线操作。
在调试方式下,当读取FF20-0000至FF2F-FFFF区的数据时,将从串行监控总线得到正确的数值,而不必考虑MP位的值。
在正常方式下,对FF20-0000至FF2F-FFFF监控区的写操作将被忽略,而且读操作的结果是不确定的。此时串行监控总线电路34返回WRACK*或RDACK*信号到处理器内核20并结束总线操作。
b)协处理器总线操作的存取(CTC0/CFC0)当执行CFC0指令时,处理器内核20执行协处理器的读总线操作,而执行CTC0指令时,是协处理器的写总线操作。在协处理器总线操作时,CFC0和CTC0指令被提供给处理器总线的地址A〔310〕,如下所示A〔310〕COP0 CT rt rd 0A〔310〕COP0 CF rt rd 0CFC0(0低电平,1高电平)rt通用寄存器rd协处理器的控制寄存器(对于串行监控无意)在协处理器读操作时,处理器内核20设置CPRD*信号,而当协处理器读确认信号CPRDACK*被设置时,读取数据DIN〔310〕并结束总线操作。
在协处理器写操作时,处理器内核20设置CPWR*信号,并提供一个处理器内核20中的通用寄存器的值,做为数据总线信号D0UT〔310〕。当协处理器写确认信号CPWRACK*设置时,处理器内核20结束总线操作。
处理器内核20用指令CTC0和CFC0执行协处理器总线操作,通过串行监控总线存取调试器60。
串行监控总线电路34提供每个周期传送一位的总线周期信号,做为输出信号SDA0。处理器内核20的地址信号A〔192〕从低位提供。此后,在协处理器读操作时,是一个高电平信号,而协处理器的写操作时是低电平信号。串行监控总线的字节允许信号是四个时钟周期的低电平信号,与处理器总线的BE〔30〕信号无关。
对CFC0指令的响应是接收32位的输入信号SDI并作为数据信号DIN〔310〕提供给处理器总线。而对CTC0指令的响应是把处理器总线的输出信号D0UT〔310〕作为输出信号SDA0。
在调试方式下,串行监控总线的写操作按照CTC0指令执行,不考虑监控区的保护,即不考虑DCR寄存器MP位的值。同样地,串行监控总线的读操作按照指令CFC0执行。
在正常方式下,根据GTC0指令,写操作将被忽略,根据CFC0指令读操作的结果则是不确定的,调试模块只返回CPRDACK*和CDWRACK*信号到处理器内核20并结束总线操作。
串行监控总线操作的时序图解释如下a)串行监控总线的读操作。
图22是串行监控总线读操作的时序图。
(1)在周期1中,处理器内核20启动0XFF2F-FFFF到0XFF2F-FFFF(A〔3120〕=1111-1111-0010)的读操作,处理器内核20提供地址A〔310〕进行存取并设置信号RD*,同时设置用于指明所读字节位置的字节允许信号BE〔30〕。
(2)在周期2中,串行监控总线电路34确认启动读操作,并提供由时钟信号CLK2形成的一个时钟周期的低电平信号作为输出信号SDA0,CLK2是通过内核时钟信号CLK=分频得到的。
(3)在周期3到25中,电路34提供地址位A〔2〕到A〔19〕,一个高电平位(指明读操作),和处理器内核20的字节允许位BE〔0〕*到BE〔3〕*作为输出信号SDA0,每个CLK2的周期传一位。
(4)在周期n中,调试器60在输出数据前提供一个时钟周期的低电平,作为信号SDI。在接收到低电平信号后,电路34在周期n+1到n+32中,以每个时钟周期一位和速度接收数据D〔0〕到D〔3〕。
(5)在周期n+33中,电路34向处理器内核20设置确认信号RDACK*并提供所读的32位数据D〔310〕,作为数据信号DIN〔310〕。
(6)在周期n+33中,处理器内核20读取数据信号DIN〔310〕,读操作结束。
b)串行监控总线的写操作。
图23是串行监控总线写操作的时序图。
(1)在周期1中,处理器内核20启动0XFF20-0000至0XFF2F-FFFF(A〔3120〕=1111-1111-0010)的写操作。处理器内核20提供一个存取地址A〔310〕并设置信号WR*,同时设置字节允许信号BE〔30〕指明所写数据的字节位置。
(2)在周期2中,串行监控总线电路34确认写操作的开始并提供时钟信号CLK2的一个时钟周期的低电平,作为输出信号SDA0。
(3)在周期3到57,电路34提供地址位A〔2〕到A〔19〕、一个低电平(指明写操作)、字节允许位BE〔0〕*到BE〔3〕*作为输出信号SDA0,并写入由处理器内核20提供的数据D0UT〔0〕到DOUT〔31〕。
(4)在周期n,调试器60结束写数据并提供一个时钟周期的低电平,作为输入信号SDI。
(5)在周期n+1,电路34检测低电平信号并设置写确认信号WRACK*到处理器内核20。
(6)在周期n+1,处理器内核20结束写操作。
c)按指令CFC0进行读总线操作。
图24是根据指令CFC0的读总线操作的时序图。
(1)在周期1,处理器内核20根据指令CFC0启动协处理器读总线操作,向处理器总线提供地址A〔3121〕=0100 0000010并设置信号CPRD*。
(2)在周期2,串行监控总线电路34确认读操作的开始并提供由CLK2信号确定的一个时钟周期的低电平信号作为输出信号SDA0。
(3)在周期3到20,电路34提供地址A〔3121〕的地址位A〔2〕~A〔19〕作为输出信号SDA0。在周期21,输出一个时钟周期的高电平信号指明是读操作。在周期22至25,输出四个时钟周期的低电平信号而不考虑处理器总线的字节允许信号。
(4)在周期n,调试器60在提供数据之前输出一个时钟周期的低电平信号作为输入信号SDI,电路34接收到低电平信号后,在n+1到n+32周期读数据D〔0〕到D〔31〕。
(5)在周期n+33,电路34设置协处理器读确认信号CPRDACK*到处理器内核20,并提供数据总线信号DIN〔310〕和要读取的32位数据D〔310〕。
(6)在周期n+33,处理器内核20读信号DIN〔310〕并结束协处理器读总线操作。
d)根据指令CTC0的写总线操作。
图25是根据CTC0指令进行写总线操作的时序图。
(1)在周期1,处理的内核20根据指令CTC0启动协处理器写总线操作,提供一个处理器总线地址A〔3121〕=0100-0000-110,并设置信号CPWR*。
(2)在周期2,串行监控总线电路34确认写操作的开始并提供一个由信号CLK2确定的一个时钟的低电平,作为输出信号SDA0。
(3)在周期3到20,电路34提供地址A〔3121〕的地址位A〔2〕至A〔19〕作为输出信号SDA0。在周期21,输出一个时钟周期的低电平信号指明为写操作。在周期22至25,输出信号SDA0变为四个时钟周期的低电平信号而不考虑处理器总线的字节允许信号。在周期26至57,输出信号SOAD提供数据总线的输出位DOUT〔0〕至DOUT〔31〕。
(4)在周期n中,调试器60完成写数据并提供一个时钟的低电平作为输入信号SDI。
(5)在周期n+1,电路34检测该低电平信号,并设置协处理器写确认信号CPWRCK*到处理(6)在周期n+1,处理器内核20结束协处理器写总线操作。
图26是串行监控总线控制器341的操作的流程图。
控制器341监控处理器总线80的操作。
(1)在步骤S120,S124和S125,串行监控总线读操作启动,因为,有一个地址A〔3120〕=0XFF2,读电平RD*(低)被设置,信号DM是高电平指明为调试方式。
(2)在步骤S120,S124,S132和S133,设置处理器内核20的RDACK信号以结束总线操作,尽管A〔3120〕=0XFF2并设置了RD*信号(低电平),但因为DM信号为低电平,则表示正常方式。
(3)在步骤S120、S121,S126和S127,串行监控总线的写操作启动,因为A〔3120〕=0XFF2,写信号WR*(低)被设置,信号DM为高指明是调试方式,而且寄存器DCR的MP位为0,指明为写允许状态。
(4)在步骤S120、S121,S126,S134和S135,设置微处理器内核20的WRACK*信号结束总线操作。尽管A〔3120〕=0XFF2并且设置了写信号WR*(低),但因为信号DM为低指明为正常方式,或寄存器DCR的MP位为1指明为写禁止状态。
(5)在步骤S120、S122,S128和S129,串行监控总线的协处理器读操作开始,因为A〔3121〕=0100-0000-010,用于指令CFC0的协处理器读总线信号CPRD*被设置,而且信号DM为高指明为调试方式。
(6)在步骤S120,S121,S128,S136和S137,处理器内核20的CPRDACK*信号被设置,则结束总线操作。虽然A〔3121〕=0100-0000-010且用于指令CFC0的CPRD信号(低)被设置,但是,因为信号DM为低,指明是正常方式。
(7)在步骤S120,S121,S122,S123,S130和S131,串行监控总线的协处理器读操作启动,因为A〔3121〕=0100-0000-110,指令CTC0的协处理器写总线操作信号CPWR(低)被设置,且信号DM为高指明为调试方式。
(8)在步骤S120,S121,S122,S123,S138和S139,设置处理器内核20的CPWRACK*信号以结束总线操作。尽管A〔3121〕=0100-0000-110且设置了指令CTC0的信号CPWR*(低),但因为信号DM为低说明是正常方式。
图27是串行监控总线电路34进行读操作的流程图。
在读操作中,串行监控总线控制器341在周期1中,向输出移位寄存器344提供高电平的串行监控总线读/写信号,串行监控总线字节允许信号BE〔30〕和高电平的串行监控总线数据信号,并设置一个数据装入信号。
根据指令CFC0,在协处理器读总线操作中,串行监控总线控制器341向输出移位寄存器344提供高电平的串行监控总线读/写信号,低电平的字节允许信号,高电平的串行监控总线数据信号,并设置数据装入信号。移位寄存器334锁存这些值和位于LSB的低电平信号。
输出信号SBA0置为低,控制器341在周期2中,设置输出移位信号。
从周期3至周期25,控制器341设置输出移位信号。寄存器344在周期1锁存的位,以每个时钟周期一位的速度送出,作为输出信号SDA0。
从周期26至周期n,控制器341等待被设置的输入信号SDI变为低电平。
从周期n+1至周期n+32,控制器341设置输入移位信号到串行输入电路343,而输入信号SDI送输入数据D〔0〕至D〔31〕再到输入移位寄存器345。
在周期n+33,控制器341在读操作中,设置处理器总线的读确认信号RDACK*。在协处理器读总线操作中,控制器341设置协处理器读确认信号CPRDACK*。输出允许信号到串行输入电路343被设置,输入寄存器345中的数据D〔310〕由数据总线输入信号DIN〔310〕传送。
图28是串行监控总线电路34写操作的流程图。
在写操作中,串行控制总线控制器341在周期1中,向输出移位寄存器344提供低电平的串行监控总线读/写信号,串行监控总线字节允许信号BE〔30〕和串行监控总线的数据信号D0UT〔310〕,并设置数据装入信号。
根据指令CTG0在协处理器的写总线操作中,控制器341向寄存器提供低电平的串行监控总线读/写信号,4位低电平的串行监控总线字节允许信号和串行监控总线数据信号DOUT〔310〕,并设置数据装入信号。寄存器344在周期1锁存这些数值和位于LSB的低电平信号。
在周期2,输出信号SDA0置为低,控制器341设置输出移位信号。
从周期3至57,控制器341设置输出移位信号。寄存器344在周期1锁存的数据由输出信号SDA0以每个时钟周期一位的速度传送。
从周期58至n,控制器341等待被设置的输入信号SDI变为低。
在周期n+1,控制器341在写操作中,向处理器总线设置写确认信号WRACK*,若为协处理器总线操作,控制器341设置协处理器写确认信号CPWRACK*。
下面介绍程序计数器跟踪器32。
间接跳转,直接跳转和转移定义如下间接跳转跳转的目标地址是存贮于寄存器或内存中的值,也就是,跳转指令本身不指明跳转的目标地址。
直接跳转跳转指令的目标地址由程序计数器和指令中的编码确定。
转移(或条件转移)这一类跳转指令的目标是由程序计数器与指令中几部分代码和共同确定。转移是否实际执行取决于条件,若转移被实际执行则称之为“进入转移”,否则称为“末进入转移”。
图29是程序计数器跟踪器32的详图。
跟踪器32接收来自处理器内核20下列信号调试方式信号DM该信号说明当前方式是调试方式还是正常方式。
流水线执行信号该信号指示指令的执行。
30位的目标程序计数器〔312〕信号这些信号指明转移或跳转指令的目标地址或是异常处理的向量地址。当设置间接跳转、直接跳转、转移进入和异常发生信号时,则该信号有效。
间接跳转信号该信号表示执行了一个间接跳转。
直接跳转信号该信号表示执行了一个直接跳转。
转移进入信号该信号表示执行了一条转移指令并进入转移。
异常发生信号该信号表示异常已经发生。
跟踪器32向处理器内核20提供如下信号以全面跟踪程序计数器。
流水线失速请求信号该信号阻塞了处理器内核20的流水线处理,从而完全地让目标程序计数器产生输出。当跟踪器32正在接收目标程序计数器的间接跳转信号时发生了下一个间接跳转,则跟踪器32设置流水线失速请求信号,停止处理器内核20的流水线处理。一旦目标程序计数器的信号完成,流水线失速请求信号被取消,灰复流水线处理。
跟踪器32接收来自指令/数据地址断点电路31或处理器总线断点电路33的触发请求。跟踪器32接收DCR寄存器的TM位和调试允许信号DBGE*。若DBGE*信号被设置为低电位,它表示调试器60有效。
跟踪器32在正常方式下,把处理器内核20提供的程序计数器跟踪信息转换成一位的程序计数输出TPC和一个三位状态信号PCST〔20〕,供调试器60使用。
下面说明信号PCST〔20〕和TPCa)PCST〔20〕指令的执行状态由信号PCST〔20〕以每个时钟一位的速度传送(0低,1高)。
111流水线失速状态(STL)
该状态说明当没有跟踪触发请求时,则指令的执行尚未完成。
110转移/跳转进入状态(JMP)(用程序计数器输出)该状态表示执行了进入转移或跳转指令,且目标地址将由信号TPC传送。
101转移/跳转进入状态(BRT)(没有程序计数器输出)该状态表明执行了进入转移或直接跳转指令,但信号TPC不传送目标地址。
100异常状态(EXP)(异常向量码输出)该状态表示出现了一个异常,异常处理的向量码将由信号TPC传送。
011顺序执行状态(SEQ)(指令执行)该状态表示在JMP,BRT或TSQ状态下执行指令。当转移指令没有进入时也建立这一状态。
010流水线失速中的跟踪触发器输出状态(TST)该状态表明地址跟踪触发器或处理器总线跟踪触发器在指令仍在执行中的一个时钟周期发生了请求。
000调试方式(DBM)在正常方式下不能达到该状态。
信号TPC用来提供转移或跳转指令的目标地址。在信号PCST〔20〕指明状态″110″(JMP)的时钟周期里,目标地址从低位A〔2〕开始以每个时钟周期一位的速度传送。在信号PCST〔20〕指明状态″100″(EXP)的时钟周期时,一个三位的异常向量从低位开始按代码(0),代码(1),代码(2)的顺序以每个时钟一位的速度传送。异常向量地址和三位代码如下所示
向量地址代码(20)Reset,Nmi BFC0-0000 4(100)UTLB(BEV=0)8000-0000 0(000)UTLB(BEV=1)BFC0-0100 6(110)其它(BEV=0)8000-0080 1(001)其它(BEV=1)BFC0-0180 7(111)由于目标地址由信号TPC一位一位地按顺序发送,在当前转移/跳转指令正由TPC信号传送时,可能发生下一条转移指令,跳转指令或异常,TPC信号传送的目标地址的优先权如下a)当传送目标程序计数器信号时,产生了一个新的间接跳转指令,则停止当前的目标程序计数器信号,开始新的间接跳转指令的目标程序计数器信号。
b)当传送目标程序计数器信号时发生了异常,则挂起目标程序计数器信号,传送三位的异常向量码,然后灰复被挂起的信号。
c)当传送目标程序计数器信号时发生了新的直接跳转或转移指令,不传送直接跳转或转移指令的目标地址。只有当不传送目标程序计数器信号时,才能传送直接跳转或转移指令的目标程序计数器信号。
下面结合图示介绍程序计数器跟踪输出的示例。
(例1)转移指令的程序计数器跟踪。
图30是用于转移指令程序计数器跟踪信号的示例。
当第一个进入的转移指令″beq″执行时,输出信号TPC没有传送目标程序计数器信号,信号PCST〔20〕指明状态TMP,信号TPC开始为指令″beq″传送目标程序计数器信号,作为对非进入转移指令″bne″的响应,信号PCST〔20〕指明状态码SEQ,作为对再次进入转移指令″bne″的响应信号TPC并不传送目标程序计数器信号,因为信TPC正为第一条转移指令″beq″传送目标程序计数器信号。这时,信号PCST〔20〕指明状态为BRT。
(例2)间接跳转指令的程序计数器跟踪。
图31是用于间接跳转指令的程序计数器跟踪信号示例。
作为对第一条间接跳转指令″jr1″的响应,信号PCST〔20〕指明状态为JMP,信号TPC开始传送目标程序计数器信号。作为对非进入转移指令″bne″的响应,信号PCST〔20〕指明状态为SEQ,作为对第二条间接转移指令″jr2″的响应,信号TPC停止传送第一条间接跳转指令″jr1″的目标程序计数器信号,开始为第二条指令″jr2″传送目标程序计器信号。这时,信号PCST〔20〕指明状态为JMP。
(例3)异常和间接跳转指令的程序计数器跟踪。
图32是异常和间接跳转指令的程序计数器跟踪示例。
作为对软件断点指令″break″的响应,产生一个异常,信号PCST〔20〕指明状态为EXP,这时,信号TPC开始传送异常向量代码,在非进入转移指令″bne″,信号PCST〔20〕指明状态SEQ,在间接跳转指令″jr2″,信号TPC传送用于″jr2″指令的目标程序计数器信号,该信号PCST〔20〕指明状态JMP。
下面介绍信号PCST〔20〕的跟踪触发状态TSQ或TST。
当地址和数据在同一总线周期出现时,发生一个指令/数据地址断点或处理器总线断点,产生一个表示状态TSQ或TST的信号PCST〔20〕。
当指令地址跟踪触发请求、数据地址跟踪触发请求或处理器总线跟踪触发请求产生时,信号PCST〔20〕指明状态为TSQ或TST。若信号PCST〔20〕可能在将要表明状态SEQ或STL的时钟周期里指明状态TSQ或TST。
a)指令/数据地址跟踪触发发生时,信号PCST〔20〕指明状态为TSQ。若跟踪触发由进入转移指令、跳转指令或不使信号PCST〔20〕指明状态SEQ的指令产生时,跟踪触发的输出将被推迟。若没有跟踪触发请求,信号PCST〔20〕在即将表示状态SEQ或STL的时钟周期里,表示状态TSQ或TST。
(例1)指令/数据地址跟踪触发示例。
图33是指令/数据地址跟踪触发的示例。
作为对产生指令跟踪触发或数据地址跟踪触发或数据地址跟踪触发的指令″add″的响应,信号PCST〔20〕指明状态TSQ。
(例2)由异常引起的指令/数据地址触发的示例。
图34是由异常引起的指令/数据地址触发的示例。
如果软件断点″break″产生时了指令地址跟踪触发或数据地址跟踪触发,信号PCST〔20〕指明状态EXP,在下一个时钟周期,指明用于流水线失速的跟踪触发状态TST。
(例3)由间接跳转指令引起的指令/数据地址跟踪触发的示例。
当间接跳转指令″jr2″引起指令地址跟踪触发或数据地址跟踪触发时,信号PCST〔20〕指明状态为JMP。在下一个时钟周期里,指明用于指令执行条件的跟踪触发状态TSQ。
b)处理器总线跟踪触发当发生一个处理器总线跟踪触发请求时,信号PCST〔20〕指明状态TSQ或TST。若信号PCST〔20〕正指明状态JMP、BRT或EXP时,跟踪触发状态TSQ或TST将被推迟,若没有跟踪触发请求时,信号PCST〔20〕将在本应指明状态SEQ或STL的下一个时钟周期里指明状态为TSQ或TST。
下面介绍调试方式状态DBM的产生若处理器内核20引起一个调试异常或调试复位,则设置高电平的调试方式信号DM进入调试方式。然后,跟踪器32提供信号PCST〔20〕表明调试方式状态DBM。
图36是当调试异常出现时,信号PCST〔20〕的输出时间图。
当没有提供目标程序计数器信号时,在引起调试异常的指令结束后,立即启动调试方式,提供出调试异常发生前的程序计数器跟踪信息。
图37是当调试异常发生时,传送目标程序计数器信号的PCST〔20〕的时序。
在这种情况下,在目标程序计数器信号结束后,启动调试方式,提供出直到调试异常即将发生前的指令的程序计数器跟踪信息。当目标程序计数器信号传送的同时,信号PCST〔20〕指明状态为STL。
图38是从调试方式返回时信号PCST〔20〕的时序。
调试方式一直持续到由调试异常或调试方式发送的返回指令DERET的转移延迟间隙指令出现为止。正常方式从DERET指令的一条目标指令开始,启动程序计数器跟踪。
回到图29,解释跟踪器32。
跟踪器32有一个程序计数器跟踪控制器321,一个目标程序计数移位寄存器322,一个异常向量编码器323,一个异常编码移位寄存器324和一个选择器325。
控制器321还有一个异常编码输出状态位326和一个目标程序计数器输出计数器329。
下面说明跟踪器321的操作。
表3是当寄存器DCR的TM位为0时,信号PCST〔20〕的输出。在表3中,″1″表示有效状态,″X″表示″无关″状态。
表3
在该表中,触发请求信号是指令地址跟踪触发请求信号,数据地址跟踪触发请求信号和处理器总线跟踪触发请求信号的″或″。
当五位的计数器327非0时,它表示正在传送信号TPC。当异常代码输出状态位326为1时,传送异常量时代码。在表3中,当计数器327非0或异常代码输出状态位326为1时,则内部状态″输出TPC或异常代码″为1。计数器327以如下方式更新
(1)当信号TPC不传送目标程序计数器信号,或者新的程序计数器信号将被传送时,计数器327被请零。
(2)当信号TPC正传送异常向量,内部状态指明正在传送程序计器信号时,计数器327保持不变。
(3)当计数器327达到30时将被清零。表明目标程序计数器输出完成。
(4)除(1)、(2)、(3)的其它情况下,计数器327自增加1。此时,信号TPC正在传送目标程序计数器信号。
当异常发生时,在三个时钟周期内,异常代码输出状态位326设置一个表示正在传送异常代码的内部状态。设置状态位326后,异常代码移位信号和异常代码输出开关信号也被设置。当信号PCST〔20〕指明状态EXP时,异常代码装入信号被设置。此时,异常向量编码器323的输出装入到异常代码移位寄存器324中,设置目标程序计数器装入信号,信号PCST〔20〕指明状态JMP。然后,目标程序计数器的值装入到目标程序计数器移位寄存器322中。当计数器327非0,且状态位326未设置时,则目标程序计数器移位信号被设置。
当DCR寄存器的TM位为1时,程序计数器跟踪彻底结束。若信号DBGE*置,则TM位置位,而且在传送用于间接跳转指令的目标程序计数器信号时,发生了下一条间接跳转指令,则控制器321设置流水线失速请求信号,以停止处理器内核20的流水线处理。当前的目标程序计数器传送结束后,流水线失速信号取消并灰复流水线操作。
表4是TM位为1时,信号PCST〔20〕的输出。在表4中,″1″表示有效状态,″X″表示″无关″状态。
表4
在传送目标程序计数器信号时,或异常代码过程中,由于执行间接跳转指令而使间接跳转信号有效时,对处理器内核20的流水线失效请求被激活。指明目标程序计数器信号或异常代码正在传送的内部状态,在目标程序计数器信号开始后的30个时钟周期里为激活态。
当控制器321的目标程序计数器装入信号被设置时,目标程序计数器移位寄存器322装入目标程序计数器的输出值。当控制器321的目标程序计数器移位信号被设置时,寄存器322把它的值每次一位地从MSB移向LSB。
异常向量编码器323,根据向量地址的位A〔29〕,A〔8〕和A〔7〕编码出的异常向量地址。如下所示
编码器323把目标程序计数器输出的地址位A〔29〕,A〔8〕和A〔7〕传送到异常代码移位寄存器324中。
当控制器321的异常代码装入信号设置时,寄存器从编码器323中装入异常向量代码,当控制器321的异常代码移位信号设置时,异常代码移位寄存器324中的值一位一位地从MSB移向LSB。
当控制器321异常代码输出开关信号置位时,选择器325向信号TPC提供寄存器324的LSB。当异常代码输出开关信号取消时,选择器325向信号TPC提供寄存器322的LSB。
将用参考时间图解释跟踪器32的操作。
图39是当提供了一个目标程序计数器信号时,跟踪器32的操作。
当计数器327保持″0″并且一个间接跳转信号,或直接跳转信号,或进入转移信号被设置时,则控制器321设置目标程序计数器装入信号。
在下一个时钟,LSB,即被装入到寄存器322的目标地址A〔2〕被送给信号TPC。同时,信号PCST〔20〕指示状态JMP,控制器321设置目标程序计数器移位信号,结果,寄存器322由MSB向LSB移一位且在下一时钟A〔3〕位提供给信号TPC。目标程序计数器移位信号不断地设置,把程序计数器的输出提供给信号TPC,直到计数器327计数到30为止。当计数器327计满30时,被清0,并且目标程序计数器移位信号被取消,结束目标程序计数器对信号TPC的输出。
图40是当下一个间接跳转出现,同时目标程序计数器信号被提供时,跟踪器322的操作。
当第二个间接跳转出现时,计数器327被清0,目标程序计数器装入信号被设置。在下一个时种,则LSB,即被装入到寄存器322的目标地址A〔2〕位被送往信号TPC。同时,信号PCST〔20〕指示状态JMP,且控制器321设置目标程序计数器移位信号。从下一个时钟起,每个周期目标地址都传送给信号TPC。
图41是在提供了目标程序计数器信号,出现异常时的操作时间图。
当一个目标程序计数器信号正在传送时,异常出现信号被设置,则异常代码装入信号也被设置,把异常代码装入到异常代码移位寄存器324中,从下一个时钟起,异常代码输出状态位326、异常代码移位信号和异常代码输出开关信号被设置,用三个时钟周期传送异常代码。在此期间,目标程序计数器移位信号无效。当状态位326和异常代码开关信号取消时,信号TPC重新传送目标程序计数器信号。
图42是外部接口电路36的详图。
外部接口电路36有一个DBM代码测试器361,选择器362和363,屏蔽电路364,365和366,输出缓冲器367A367B和367C,上拉电阻输入缓冲器368A、368B和368C以及输入缓冲器369A和369B。
当信号PCST〔20〕指明调试方式状态DBM(000),则DBM代码测试器361设置一个输出信号。
当DBM代码测试器361的输出被设置,即它是调试方式时,则选择器362提供分频时钟信号CLK2。当DBM代码测试器361输出无效时,即它是正常方式时,则选择器362提供内核时钟CLK。
当DBM代码测试器361的输出被设置,即它是调试方式,则选择器363提供串行监控总线34的输出SDAD;当DBM代码测试器361输出无效时,即它是正常方式,则选择器363提供跟踪器32的信号TPC。
在调试方式下,屏蔽电路364屏蔽外部输入信号DINT*/SDI,使得输入到处理机内核20的信号KINT*总是无效。
当寄存器DCR的MINT位为0时,屏蔽电路365对处理机内核20置位信号Int〔50〕,得以屏蔽中断。
当寄存器DCR的MRST位是0时,在调试异常处理器执行期间(信号DM为高),则屏蔽电路366屏蔽用户复位信号RESET*。
输出缓冲器367A向外提供选择器362的输出作为信号DCLK;输出缓冲器367B向外提供选择器363的输出作为信号TPC/SDAD;输出缓冲器367C向外提供跟踪器32的信号PCST〔20〕作为外部信号PCST〔20〕。
上拉电阻输入缓冲器368A接收外部信号DINT*/SDI,由于该缓冲器有上拉电阻,所以,当外部信号DINT*/SDI断开时,则输出总是高电平。上拉电阻输入缓冲器368B接收外部信号DBGE*,由于该缓冲器有上拉电阻,所以,若外部信号DBGE*断开时,同输出总是高电平。上拉电阻输入缓冲器368C接收外部信号DRESET*,由于该缓冲器有上拉电阻,所以,当外部信号DRESET*断开时,则输出总是高电平。
当调试器60断开时,则外部信号DINT*/SDI,DBGE*和DRESET*也断开,然后,这些信号成为高电平内部信号,因而,调试方式的功能被禁止。
输入缓冲器369A接收外部中断信号INT〔50〕*,输入缓冲器369B接收外部用户复位信号RESET*。
图44示出根据本发明的另一实施例的微处理器和调试系统。
这个实施例的特征在于微处理器10与存贮器90和外围电路100结合在一起,这个实施例的其它安排则与第一实施例相同。
处理机内核20通过内部处理器总线80读存贮器90的程序,执行读程序,从存贮器90读数据或把数据写入存储器,并访问外围电路100。在调试方式时,处理机内核20通过调试模块30执行调试器60的监控程序。
如果调试模块30和调试器60的功能和接口信号的定时彼此相同,则第一实施例的调试器60将被用于第二实施例,而不必考虑联合存贮器90和外围电路100的差异。
如果第二实施例的微处理机内核20的功能与第一实施例的相同,则与第一实施例相同的监控程序将用于第二实施例。
上述两个实施例使用各自的指令/数据地址断点通道和处理器总线断点通道。本发明则不受这种安排的限制,可以使用两个或多个通道。图43示出涉及15个指令地址断点通道的寄存器IBS。
上述两个实施例使用各自的具有位宽一位的串行监控总线。本发明不受这种安排的限制。如果许多微处理器外部信号都用于串行监控总线,则位宽可以是两倍或更多位。
上述两个实施例使用各自的外部信号,用于传送目标程序计数器的输出。本发明不受这种安排的限制。目标程序计数器的输出可由多个外部信号传送(如果多个外部信号可以得到的话)。
根据上述的两个实施例,时钟发生器37对用于处理机内核的时钟信号CLK二分频。本发明则不受这个限制。串行监控总线电路的时钟信号的频率可以和时钟信号的相同,或整数倍或倍数2的乘方。
如上所述,本发明能使调试器的硬件与许多功能共享,并减少了连接到调试器的信号的数量。而现有技术必须采用例如30个地址信号、4个字节允许信号、1个读信号、1个写信号、1个读确认信号、1个写确认信号、32个数据信号,总共70个信号将用户目标系统连接到调试器。换言之,本发明只用8个信号将用户目标程序系统连到调试器,从而使插针数量降到最低限度并降低成本。
根据本发明,一个用户目标系统的微处理器访问存贮器和I/O单元,为了为调试器定时提供方便的条件,与调试器无关的信号不受调试的影响。如果微处理器的运行速度太高,本发明能够降低调试工具与微处理器之间的通信速度。
与图2的现有技术相比,本发明把监控程序存放在调试器的存贮器中,而没有使用用户存贮器。为了启动监控一个目标系统,本发明使用专用的调试异常和调试复位,而不限制用户中断。用户目标系统无需具有用于调试的串行接口,本发明能使用硬件断点。
与图3的现有技术相比,本发明无需在微处理器上安装定序器来简化用于调试的逻辑电路。由于本发明使用监控程来访问寄存器,所以只要修改监控程序便可访问附加的寄存器。
总之,本发明提供了一个带有调试功能的用户目标系统的微处理器,从而减少了用于连接目标系统与调试器的信号。在调试过程中,本发明运行目标系统的微处理器,使得便于访问目标系统的存贮器和输入/输出部件。
根据本发明,在正常方式下,当用户程序运行时,调试工具和调试模块中的寄存器是不可访问的,使得调试工具的存贮器和寄存器决不会被用户程序破坏,从而提高了系统的可靠性。
即使在调试方式启动之后,本发明也禁止访问调试工具和调试模块的控制寄存器。当一个启动调试方式的调试异常出现时,如果用户程序对调试工具或调试模块的控制寄存器的写操作不完全,通过置位寄存器DCR的MP位来禁止写操作,这就避免了用户程序对调试工具的存贮器和寄存器的破坏,从而提高了调试系统的可靠性。
根据本发明在调试方式下,根据指令CTCO对调试工具的写
权利要求
1.一个微处理器,其特征在于,包括一个处理器内核,用于执行程序;和一个程序计数器跟踪器,利用一个内部调试接口连接到所述的处理器内核,用于提供一个程序计数器信号,用以表示由所述的处理内核所执行的指令的地址,用于传送该程序计数器信号的线数比该地址的位数少些。
2.根据权利要求1所述的微处理器,其特征在于当所述处理器内核执行一个间接跳转指令时,设置一个间接跳转信号,并向所述的程序计数器跟踪器提供间接跳转指令的目标地址;和所述的程序计数器跟踪器一收到所设置的间接跳转信号,就接受目标地址,从一个较低位发送目标地址,作为程序计数器信号,还提供一个程序计数器状态信号,用以指示目标地址的发送已经开始。
3.根据权利要求1所述的微处理器,其特征在于当一个异常发生时,所述的处理器内核设置一个异常信号,并向所述的程序计数器跟踪器提供该异常的目标地址;和所述的程序计数器跟踪器一收到所设置的异常信号,就接受目标地址,把该目标地址编码成位数比目标地址数少的信息,发送已编码的信息作为程序计数器信号,还提供一个程序计数器状态信号,用以指示目标地址的发送已经开始。
4.根据权利要求2所述的微处理器,其特征在于在所述程序计数器跟踪器正发送一条第一间接跳转指令的目标地址的同时,所述的处理器内核执行一条第二间接跳转指令;当所述的处理器内核执行第二间接跳转指令时设置间接跳转信号,并向所述的程序计数器跟踪器提供第二间接跳转指令的目标地址;和所述程序计数器跟踪器一接收到所设置的间接跳转信号,就接收第二间接跳转指令的目标地址,停止发送第一间接跳转指令的目标地址,发送第二间接跳转指令的目标地址作为程序计数器信号,还提供一个程序计数器状态信号,用以指示目标地址的发送已经开始。
5.根据权利要求2所述的微处理器,其特征在于在异常发生的同时,所述的程序计数器跟踪器发送一个间接跳转指令的目标地址时;所述的处理器内核设置一个异常信号,用以指示发生了异常,并向所述程序计数器提供异常信号的目标地址;和所述的程序计数器跟踪器一收到所设置的异常信号,就接收目标地址,挂起间接跳转指令的目标地址的传送,将异常目标地址编码成比目标地址位数还要少的信息,发送已编码的信息作为程序计数器信号,提供一个程序计数器状态信号,用以指示异常目标地址的发送已经开始,并且当编码信息发送结束时,继续间接跳转指令目标地址的发送。
6.根据权利要求1所述的微处理器,其特征在于所述的处理器内核为了执行一个直接跳转指令或进入一个条件转移指令而设置一个直接跳转信号,并向所述的程序计数器跟踪器提供直接跳转指令或转移指令的目标地址;如果在所述的程序计数器跟踪器接收到所设置的直接跳转信号的同时不发送间接跳转指令的目标地址,则所述的程序计数器跟踪器从所述的处理器内核那里接收目标地址,从低位开始传送目标地址作为程序计数器信号,并提供一个程序计数器状态信号,用以指示目标地址的发送已经开始;和如果在所述的程序计数器跟踪器接收到所设置的直接跳转信号的同时正在传送间接跳转指令的目标地址,则所述程序计数器跟踪器只提供一个程序计数器状态信号,用以指示直接跳转指令或进入条件转换指令已经被执行。
7.根据权利要求1所述的微处理器,其特征在于所述的处理器内核在执行一条指令时发出一个流水线信号;在流水线信号已被设置并且已被所述程序计数器跟踪器接收时,所述程序计数器跟踪器提供一个程序计数器状态信号,用以指示该指令已经被处理的处理器内核执行;和当流水线信号没被设置因而也没被程序计数器跟踪器接收时,所述的程序计数器跟踪器提供一个程序计数器信号,用以指示该指令尚未执行。
8.根据权利要求1所述的微处理器,其特征在于,当所述的程序计数器跟踪器正在传送第一间接跳转指令的目标地址的同时,所述的处理器内核执行第二间接跳转指令;所述的处理器内核在执行第二间接跳转指令时,发出一个间接跳转信号,向所述的程序计数器跟踪器提供该第二间接跳转指令的目标地址,如果设置了一个处理器内核停止信号,则挂起第二间接跳转指令的执行;和当第二间接跳转指令的间接跳转信号已被设置时,所述的程序计数器跟踪器设置所述的处理器内核停止信号,完成所述的第一跳转指令目标地址的传送,从所述的处理器内核接收所述的第二间接跳转指令的目标地址,作为程序计数器信号,还提供一个程序计数器状态信号,用以指示目标地址的传送已经开始。
9.根据权利要求1所述的微处理器,其特征在于,当所述的程序计数器跟踪器正在传送所述的第一条间接跳转指令的目标地址的同时,所述的处理器内核执行第二条间接跳转指令;所述的处理器内核在执行所述的第二条间接跳转指令时,设置一个间接跳转信号,向所述的程序计数器跟踪器提供所述的第二条间接跳转指令的目标地址,如果设置了一个处理器内核停止信号,则挂起第二条间接跳转指令的执行;所述的程序计数器跟踪器等待一个跟踪方式信号,用以指示第一间接跳转指令目标地址的传送是否已经完成;当所述的跟踪方式信号指示了传送完成时,所述的程序计数器跟踪器响应为第二条间接跳转指令设置的间接跳转信号,设置所述的处理器内核的停止信号,完成所述的第一间接跳转指令目标地址的传送,从所述的处理器内核接收所述的第二条间接跳转指令的目标地址,传送该第二间接跳转指令的目标地址作为程序计数器信号,还提供一个程序计数器状态信号,用以指示目标地址传送已经开始;和当所述的跟踪方式信号指示传送没完成时,所述程序计数器跟踪器响应为该第二间接跳转指令而设置的间接跳转信号,从所述的处理器内核接收所述的第二间接跳转指令的目标地址,停止该第一间接跳转指令目标地址的传送,而传输该第二间接跳转指令目标地址作为程序计数器信号,同时提供一个程序计数器信号,用以指示目标地址的传送已经开始。
10.根据权利要求1的微处理器,其特征在于,如果一个中断或异常从外部发生请求,要求所述的处理器内核从用户程序切换到监控程序以调试一个用户目标系统,则所述的处理器内核挂起用户程序,跳转到监控程序,并且取出该监控程序的指令;如果在所述的处理器内核跳转到监控程序的同时所述的程序计数器跟踪器正在传输一个跳转指令的目标地址或一个异常代码,则所述的处理器内核推迟提取所述的监控程序的指令,直到所述程序计数器跟踪器完成传送时为止。
11.一种微处理器,其特征在于,包括一个处理器内核,用以执行程序;一个中断电路,用以在一个存取地址与一个设定的地址相符合时或在一个存取地址和数据与一个设定地址和数据相符合时,产生一个中断请求或设置一个触发请求信号送到所述的处理器内核;和一个程序计数器跟踪器,用以提供一个外部状态信号,用以指示在中断电路设置同样信号之后触发请求信号已经发出。
12.根据权利要求11的微处理器,其特征在于,所述的程序计数器跟踪器对所述的处理器内核的内部状态编码,提供一个外部状态信号,用以指示编码的内部状态;当所述的处理器内核处于第一内部状态并且触发请求信号已设置时,所述的程序计数器跟踪器提供一个外部状态信号,用以指示没有触发请求的内部状态,此时不考虑已设置的触发请求信号;和当所述的处理器内核处于第二内部状态并且触发请求信号已设置时,所述的程序计数器跟踪器提供一个外部状态信号,用以指示有触发请求。
13.根据权利要求12的微处理器,其特征在于,所述的第一内部状态对应于正在执行一条跳转指令或产生了一个异常,所述的第二内部状态对应于正在顺序地执行指令或引起了流水线失速。
全文摘要
一个微处理器10有一个处理器内核20和一个调试模块30。处理器内核20执行用户程序和执行用于调试用户目标系统70的监控程序。调试模块30作为与一个调试工具60的接口,使处理器内核20执行存放在调试工具60中的监控程序。调试模块30产生中断或异常请求,使得处理器内核20从用户程序切换到监控程序。
文档编号G06F11/36GK1362677SQ0114401
公开日2002年8月7日 申请日期1995年12月28日 优先权日1994年12月28日
发明者宫森高, 矢野达男 申请人:株式会社东芝
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1