微处理器与调试系统.pdf

上传人:Y0****01 文档编号:650207 上传时间:2018-03-01 格式:PDF 页数:98 大小:2.51MB
返回 下载 相关 举报
摘要
申请专利号:

CN01144011.2

申请日:

1995.12.28

公开号:

CN1362677A

公开日:

2002.08.07

当前法律状态:

终止

有效性:

无权

法律详情:

专利权有效期届满IPC(主分类):G06F 11/00申请日:19951228授权公告日:20070516|||授权|||公开|||实质审查的生效

IPC分类号:

G06F15/00; G06F9/455

主分类号:

G06F15/00; G06F9/455

申请人:

株式会社东芝;

发明人:

宫森高; 矢野达男

地址:

日本神奈川县

优先权:

1994.12.28 JP 328993/1994

专利代理机构:

中国国际贸易促进委员会专利商标事务所

代理人:

陆丽英

PDF下载: PDF下载
内容摘要

一个微处理器10有一个处理器内核20和一个调试模块30。处理器内核20执行用户程序和执行用于调试用户目标系统70的监控程序。调试模块30作为与一个调试工具60的接口,使处理器内核20执行存放在调试工具60中的监控程序。调试模块30产生中断或异常请求,使得处理器内核20从用户程序切换到监控程序。

权利要求书

1.一个微处理器,其特征在于,包括:
一个处理器内核,用于执行程序;和
一个程序计数器跟踪器,利用一个内部调试接口连接到所
述的处理器内核,用于提供一个程序计数器信号,用以表示由所
述的处理内核所执行的指令的地址,用于传送该程序计数器信号
的线数比该地址的位数少些。
2.根据权利要求1所述的微处理器,其特征在于:
当所述处理器内核执行一个间接跳转指令时,设置一个间
接跳转信号,并向所述的程序计数器跟踪器提供间接跳转指令的
目标地址;和
所述的程序计数器跟踪器一收到所设置的间接跳转信号,
就接受目标地址,从一个较低位发送目标地址,作为程序计数器
信号,还提供一个程序计数器状态信号,用以指示目标地址的发
送已经开始。
3.根据权利要求1所述的微处理器,其特征在于:
当一个异常发生时,所述的处理器内核设置一个异常信号,
并向所述的程序计数器跟踪器提供该异常的目标地址;和
所述的程序计数器跟踪器一收到所设置的异常信号,就接
受目标地址,把该目标地址编码成位数比目标地址数少的信息,
发送已编码的信息作为程序计数器信号,还提供一个程序计数器
状态信号,用以指示目标地址的发送已经开始。
4.根据权利要求2所述的微处理器,其特征在于:在所述
程序计数器跟踪器正发送一条第一间接跳转指令的目标地址的
同时,所述的处理器内核执行一条第二间接跳转指令;
当所述的处理器内核执行第二间接跳转指令时设置间接跳
转信号,并向所述的程序计数器跟踪器提供第二间接跳转指令的
目标地址;和
所述程序计数器跟踪器一接收到所设置的间接跳转信号,
就接收第二间接跳转指令的目标地址,停止发送第一间接跳转指
令的目标地址,发送第二间接跳转指令的目标地址作为程序计数
器信号,还提供一个程序计数器状态信号,用以指示目标地址的
发送已经开始。
5.根据权利要求2所述的微处理器,其特征在于:在异常
发生的同时,所述的程序计数器跟踪器发送一个间接跳转指令的
目标地址时;
所述的处理器内核设置一个异常信号,用以指示发生了异
常,并向所述程序计数器提供异常信号的目标地址;和
所述的程序计数器跟踪器一收到所设置的异常信号,就接
收目标地址,挂起间接跳转指令的目标地址的传送,将异常目标
地址编码成比目标地址位数还要少的信息,发送已编码的信息作
为程序计数器信号,提供一个程序计数器状态信号,用以指示异
常目标地址的发送已经开始,并且当编码信息发送结束时,继续
间接跳转指令目标地址的发送。
6.根据权利要求1所述的微处理器,其特征在于:所述的
处理器内核为了执行一个直接跳转指令或进入一个条件转移指
令而设置一个直接跳转信号,并向所述的程序计数器跟踪器提供
直接跳转指令或转移指令的目标地址;
如果在所述的程序计数器跟踪器接收到所设置的直接跳转
信号的同时不发送间接跳转指令的目标地址,则所述的程序计数
器跟踪器从所述的处理器内核那里接收目标地址,从低位开始传
送目标地址作为程序计数器信号,并提供一个程序计数器状态信
号,用以指示目标地址的发送已经开始;和
如果在所述的程序计数器跟踪器接收到所设置的直接跳转
信号的同时正在传送间接跳转指令的目标地址,则所述程序计数
器跟踪器只提供一个程序计数器状态信号,用以指示直接跳转指
令或进入条件转换指令已经被执行。
7.根据权利要求1所述的微处理器,其特征在于:所述的
处理器内核在执行一条指令时发出一个流水线信号;
在流水线信号已被设置并且已被所述程序计数器跟踪器接
收时,所述程序计数器跟踪器提供一个程序计数器状态信号,用
以指示该指令已经被处理的处理器内核执行;和
当流水线信号没被设置因而也没被程序计数器跟踪器接收
时,所述的程序计数器跟踪器提供一个程序计数器信号,用以指
示该指令尚未执行。
8.根据权利要求1所述的微处理器,其特征在于,当所述
的程序计数器跟踪器正在传送第一间接跳转指令的目标地址的
同时,所述的处理器内核执行第二间接跳转指令;
所述的处理器内核在执行第二间接跳转指令时,发出一个
间接跳转信号,向所述的程序计数器跟踪器提供该第二间接跳转
指令的目标地址,如果设置了一个处理器内核停止信号,则挂起
第二间接跳转指令的执行;和
当第二间接跳转指令的间接跳转信号已被设置时,所述的
程序计数器跟踪器设置所述的处理器内核停止信号,完成所述的
第一跳转指令目标地址的传送,从所述的处理器内核接收所述的
第二间接跳转指令的目标地址,作为程序计数器信号,还提供一
个程序计数器状态信号,用以指示目标地址的传送已经开始。
9.根据权利要求1所述的微处理器,其特征在于,当所述
的程序计数器跟踪器正在传送所述的第一条间接跳转指令的目
标地址的同时,所述的处理器内核执行第二条间接跳转指令;
所述的处理器内核在执行所述的第二条间接跳转指令时,
设置一个间接跳转信号,向所述的程序计数器跟踪器提供所述的
第二条间接跳转指令的目标地址,如果设置了一个处理器内核停
止信号,则挂起第二条间接跳转指令的执行;
所述的程序计数器跟踪器等待一个跟踪方式信号,用以指
示第一间接跳转指令目标地址的传送是否已经完成;
当所述的跟踪方式信号指示了传送完成时,所述的程序计
数器跟踪器响应为第二条间接跳转指令设置的间接跳转信号,设
置所述的处理器内核的停止信号,完成所述的第一间接跳转指令
目标地址的传送,从所述的处理器内核接收所述的第二条间接跳
转指令的目标地址,传送该第二间接跳转指令的目标地址作为程
序计数器信号,还提供一个程序计数器状态信号,用以指示目标
地址传送已经开始;和
当所述的跟踪方式信号指示传送没完成时,所述程序计数
器跟踪器响应为该第二间接跳转指令而设置的间接跳转信号,从
所述的处理器内核接收所述的第二间接跳转指令的目标地址,停
止该第一间接跳转指令目标地址的传送,而传输该第二间接跳转
指令目标地址作为程序计数器信号,同时提供一个程序计数器信
号,用以指示目标地址的传送已经开始。
10.根据权利要求1的微处理器,其特征在于,如果一个
中断或异常从外部发生请求,要求所述的处理器内核从用户程序
切换到监控程序以调试一个用户目标系统,则所述的处理器内核
挂起用户程序,跳转到监控程序,并且取出该监控程序的指令;
如果在所述的处理器内核跳转到监控程序的同时所述的程
序计数器跟踪器正在传输一个跳转指令的目标地址或一个异常
代码,则所述的处理器内核推迟提取所述的监控程序的指令,直
到所述程序计数器跟踪器完成传送时为止。
11.一种微处理器,其特征在于,包括:
一个处理器内核,用以执行程序;
一个中断电路,用以在一个存取地址与一个设定的地址相
符合时或在一个存取地址和数据与一个设定地址和数据相符合
时,产生一个中断请求或设置一个触发请求信号送到所述的处理
器内核;和
一个程序计数器跟踪器,用以提供一个外部状态信号,用
以指示在中断电路设置同样信号之后触发请求信号已经发出。
12.根据权利要求11的微处理器,其特征在于,所述的程
序计数器跟踪器对所述的处理器内核的内部状态编码,提供一个
外部状态信号,用以指示编码的内部状态;
当所述的处理器内核处于第一内部状态并且触发请求信号
已设置时,所述的程序计数器跟踪器提供一个外部状态信号,用
以指示没有触发请求的内部状态,此时不考虑已设置的触发请求
信号;和
当所述的处理器内核处于第二内部状态并且触发请求信号
已设置时,所述的程序计数器跟踪器提供一个外部状态信号,用
以指示有触发请求。
13.根据权利要求12的微处理器,其特征在于,所述的第
一内部状态对应于正在执行一条跳转指令或产生了一个异常,所
述的第二内部状态对应于正在顺序地执行指令或引起了流水线
失速。

说明书

微处理器与调试系统

本案是中国专利申请号为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[2:0]的定时图。

图37示出当调试异常发生的同时还提供目标程序计数器的
输出时的信号PCST[2:0]的定时图。

图38示出调试方式之后在正常方式被恢复时的信号
PCST[2:0]的定时图。

图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〔2:0〕(输出)

8.DBGE*(输入)

(1)、调式时钟信号DCLK(输出)

这个信号是送到调试器60的时钟输出信号,用来控制串行监
控总线和程序计数器跟踪接口的定时。用于串行监控总线的操作,
这个信号是由处理机内核20的操作时钟信号的频率二分频形成
的。

(2)、调试复位信号DRESET*(输入到上拉(pull-up)端钮)。

这个信号是低有效的信号(low-active),它的设置使调试模
块30初始化,而无须考虑输入信号DBGE*。当不使用调试器60
时,该信号端钮断开。

(3)、程序计数器跟踪状态信号PCST〔2:0〕(输出)

这个信号表示下列程序计数器跟踪状态和串行监控总线方式:

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〔2:0〕变成高。

如果信号DBGE*是低,则表示调试器60接通,信号DEV是
高,调试异常向量地址是FF20-0200(在监控区域)。用户复信号
不对调试模块30初始化。

(5)、串行数据和地址输出/目标程序计数器信号SDA0/TPC
(输出)

当信号PCST〔2:0〕表示调试方式(DBM)时,这个信号做为
串行数据和地址输出信号SDA0,当信号PCST〔2:0〕不表示调
试方式时,则这个信号做为目标程序计器信号TPC。

当信号PCST〔2:0〕表示调试方式时,则信号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〔2:0〕表示正常方式时,则信号TPC提供转移
/跳转指令的目标地址以及异常/中断的向量数。目标地址从位A
〔2〕到位A〔31〕顺序提供。

(6)、串行数据输入/调试中断信号SDI/DINT*(输入到上拉
端钮)

当信号PCST〔2:0〕表示调试方式时,则这个信号做为串行
监控总线接口信号SDI;当信号PCST〔2:0〕表示正常方式时,则
这个信号做为程序计数器跟踪接口信号DINT*。

信号SDI是数据输入信号,在读操作中,当接收一个在时钟周
期内为低的外部起始位时,数据输入操作从下一个时钟开始。当在
写操作中有低电平输入时,则总线周期结束。

在读操作中,数据各位按低电平起始位,数据位D〔0〕到D
〔31〕的顺序提供。在写操作中,仅接收低电平结束位。

信号DINT*是来自调试器60的调试中断输入信号。当不使
用调试器60时,则端钮是断开的。

图6是寄存器电路35的详图。

寄存器电路35由地址译码器351和寄存器部位352组成。

地址译码器351接收经由处理器总线80从处理器内核20送
来的地址输入信号A〔31:0〕、读信号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是地址译码的操作

被存取的

寄存器
  地址

A[31:2]
  读

RD*
  写

  WR*

DM


 MP

读确认

RDACK*
写确认

WRACK*
被设置的信号




    DCR


FF300000


  高

  高



X
  低


  高
  高


  低
DCR   读


DCR   写

  低


    IBS



FF300004


  高
  高


0

  低


  高

  高


  低

IBS   读


IBS   写




  低


    DBS


FF300008


  高

  高



0
  低


  高
  高


  低
DBS   读


DBS   写

  低


    PBS



FF30000C


  高
  高


0

  低

  高

  高

  低

PBS   读

PBS   写



  低



    IBA0



FF300010


  高
  高


0

  低


  高
  高


  低
IBA0  读


IBA0  写



  低


    IBC0


FF300014


  高

  高



0
  低


  高
  高


  低
IBC0  读


IBC0  写

  低


    DBA0


FF300020


  高

  高



0
  低


  高
  高


  低
DBA0  读


DBA0  写

  低


    DBC0


FF300024


  高

  高



0
  低


  高
  高


  低
DBC0  读


DBC0  写

  低


    PBA0



FF300030


  高
  高


0

  低


  高
  高


  低

PBA0  读


PBA0  写




  低


    PBD0


FF300034


  高

  高



0
  低


  高
  高


  低
PBD0  读


PBD0  写

  低


    PBM0


FF300038


  高

  高



0
  低


  高
  高


  低
PBM0  读


PBM0  写

  低


    PBC0


FF30003C


  高

  高



0
  低


  高
  高


  低
PBC0  读


PBC0  写

  低


       -


FF300xxx


  高

  高



X
  低


  高
  高


  低
    -


    -

  低


       -

FF300004

FF300FFC



  高

  高

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〔5:0〕*)

1:允许外中断(Int〔5:0〕*)

位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〔2:0〕代表跟踪触发的输出状态TST(0/0)或TSQ(001),
使得寄存器IBS的位BS0置位。位TE送往断点电路31。

图10是指令中断状态寄存器IBS

中断通道号字段BCN

该字段表示一个指令断点的通道号。它是只读字段,对该字段
的写操作将是无效的。

0000:空(保留)

0001:1个通道:

1111:15个通道(保留)

断点状态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〔2:0〕表示跟踪触发输出状态TST(0/0)或TSQ(001),并
且寄存器DBS的位BS0被置位。位TE被送往断点电路31。

图13是数据断点状态寄存器DBS。

断点通道号字段BCN

该字段表明数据断点的通道号。它是只读的,对该字段的写操
作是无效的。

0000:空(保留)。

0001:1个通道。

1111:15个通道(保留)

断点状态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〔2:
0〕代表跟踪触发输出状态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。

该字段规定处理器总线断点的通道号。

0000:0通道(保留)。

0001:1通道

1111:15通道(保留)

断点状态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



存取类型



I
D




 R
 D
 *



 W
 R
 *



 C
 A
 C
 H
 E
 *

  处理器总线
    地址


    -(PBA0)

 I
 F
 U
 C


 D
 L
 U
 C


 D
 S
 U
 C


 D
 S
 C
 A



  比较器输出





(地址不匹配)

X

 L

 H

 X

    不匹配

X

 X

 X

 X

    L

(地址不匹配)

X

 H

 L

 X

    不匹配

X

 X

 X

 X

    L
从非高速缓存区的指令
获取

H

 L

 H

 H

    匹配
1

 X

 X

 X

    H

0
 X
 X
 X
    L
从非高速缓存区的数据
加载

L

 L

 H

 H

    匹配
X

 1

 X

 X

    H

X
 0
 X
 X
    L

存储数据到非高速缓存区

L

 H

 L

 H

    匹配
X

 X

 1

 X

    H

X
 X
 0
 X
    L
存储数据到高速缓存区

L

 H

 L

 L

    匹配
X

 X

 X

 1

    H

X
 X
 X
 X
    L

在读信号RD*为低的读总线周期中,数据比较器332将从处
理器总线80输入的数据DIN〔31:0〕和在寄存器PBD0中存储
的数据进行比较,它只比较那些在寄存器PBM0中相应位为0的
位。在写信号WR*为低的写总线周期中,比较器332将处理器总
线80的输出数据DOUT〔31:0〕和在寄存器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〔31:0〕、地址信号A〔31:20〕、读信号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〔31:0〕来存
取和设置信号RD*、当读确认信号RDACK*被设置时,数据DIN
〔31:0〕被读出并且总线操作结束。

在写总线操作期间,处理器内核20发送一个存取地址A〔31
:0〕和一个要写入的数据〔31:0〕并设置信号WR*。当写确认信
号WRACK*被设置时,总线操作结束。

若在调试方式下,处理器内核20对下面提到的监控区域执行
总线操作,那么调试器60通过串行监控总线电路34被访问。

监控区域在0XFF20-0000与0XFF2F-FFFF之间扩展了1
兆。

(A〔31:20〕)=1111-1111-0010(0:低,1:高)

例如,写总线操作用存储指令(SW)操作将数据写入存储器。
下面是一个存储指令的例子:

SW    r8           0X0004(r9)

在这个例子中,一个存储器地址是通过向通用寄存器r9加一
个16位偏移量0X0004来获得。要访问监控区域,通用寄存器的值
必须提前设置到0XFF20-0000到0XFF2F-0000之间。

串行监控总线电路34,从低位中提供地址信号A〔19:2〕,在
读操作期间提供高电平信号或在写操作期间提供低电平信号作为
输出信号SDA0。此后,字节允许信号BE〔3:0〕*从低位开始提
供。在读操作期间,32位数据做为输入信号SDI被接收,并以数据
DIN〔31:0〕提供给处理器总线80。在写操作期间,从处理器总线
80来的数据D0UT〔31:0〕由输出信号SDA0来进位。

从处理器内核20来的18位地址信号A〔19:2〕、用来存取1
兆的内存空间。

处理器内核20的字节允许信号BE〔3:0〕送到串行监控总
线,用以存取一个字节、半个字或三个字节,即使是进行字节、半字
或三字节访问时,串行总线仍然传送32位的数据D〔31:0〕。当写
字节、半字或三字节数据时,信号BE〔3:0〕中与数据D〔31:0〕中
有用字节对应的位将被设置。在进行读操作时,与信号BE〔3:0〕
中非有效位对应的字节将被微处理器内核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
〔31:0〕,如下所示:

A〔31:0〕    COP0 CT rt rd 0

A〔31:0〕    COP0 CF rt rd 0

              CFC0(0:低电平,1:高电平)

rt:通用寄存器

rd:协处理器的控制寄存器(对于串行监控无意)

在协处理器读操作时,处理器内核20设置CPRD*信号,而
当协处理器读确认信号CPRDACK*被设置时,读取数据DIN〔31
:0〕并结束总线操作。

在协处理器写操作时,处理器内核20设置CPWR*信号,并
提供一个处理器内核20中的通用寄存器的值,做为数据总线信号
D0UT〔31:0〕。当协处理器写确认信号CPWRACK*设置时,处
理器内核20结束总线操作。

处理器内核20用指令CTC0和CFC0执行协处理器总线操
作,通过串行监控总线存取调试器60。

串行监控总线电路34提供每个周期传送一位的总线周期信
号,做为输出信号SDA0。处理器内核20的地址信号A〔19:2〕从
低位提供。此后,在协处理器读操作时,是一个高电平信号,而协处
理器的写操作时是低电平信号。串行监控总线的字节允许信号是四
个时钟周期的低电平信号,与处理器总线的BE〔3:0〕信号无关。

对CFC0指令的响应是接收32位的输入信号SDI并作为数
据信号DIN〔31:0〕提供给处理器总线。而对CTC0指令的响应是
把处理器总线的输出信号D0UT〔31:0〕作为输出信号SDA0。

在调试方式下,串行监控总线的写操作按照CTC0指令执行,
不考虑监控区的保护,即不考虑DCR寄存器MP位的值。同样地,
串行监控总线的读操作按照指令CFC0执行。

在正常方式下,根据GTC0指令,写操作将被忽略,根据CFC0
指令读操作的结果则是不确定的,调试模块只返回CPRDACK*
和CDWRACK*信号到处理器内核20并结束总线操作。

串行监控总线操作的时序图解释如下:

a)串行监控总线的读操作。

图22是串行监控总线读操作的时序图。

(1)在周期1中,处理器内核20启动0XFF2F-FFFF到
0XFF2F-FFFF(A〔31:20〕=1111-1111-0010)的读操作,处
理器内核20提供地址A〔31:0〕进行存取并设置信号RD*,同时
设置用于指明所读字节位置的字节允许信号BE〔3:0〕。

(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〔31:0〕,作为数据信号DIN
〔31:0〕。

(6)在周期n+33中,处理器内核20读取数据信号DIN〔31:
0〕,读操作结束。

b)串行监控总线的写操作。

图23是串行监控总线写操作的时序图。

(1)在周期1中,处理器内核20启动0XFF20-0000至
0XFF2F-FFFF(A〔31:20〕=1111-1111-0010)的写操作。处
理器内核20提供一个存取地址A〔31:0〕并设置信号WR*,同时
设置字节允许信号BE〔3:0〕指明所写数据的字节位置。

(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〔31:21〕=0100 0000010并
设置信号CPRD*。

(2)在周期2,串行监控总线电路34确认读操作的开始并提供
由CLK2信号确定的一个时钟周期的低电平信号作为输出信号
SDA0。

(3)在周期3到20,电路34提供地址A〔31:21〕的地址位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〔31:
0〕和要读取的32位数据D〔31:0〕。

(6)在周期n+33,处理器内核20读信号DIN〔31:0〕并结束
协处理器读总线操作。

d)根据指令CTC0的写总线操作。

图25是根据CTC0指令进行写总线操作的时序图。

(1)在周期1,处理的内核20根据指令CTC0启动协处理器写
总线操作,提供一个处理器总线地址A〔31:21〕=0100-0000-
110,并设置信号CPWR*。

(2)在周期2,串行监控总线电路34确认写操作的开始并提供
一个由信号CLK2确定的一个时钟的低电平,作为输出信号
SDA0。

(3)在周期3到20,电路34提供地址A〔31:21〕的地址位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〔31:20〕=0XFF2,读电平RD*(低)被设置,信
号DM是高电平指明为调试方式。

(2)在步骤S120,S124,S132和S133,设置处理器内核20的
RDACK信号以结束总线操作,尽管A〔31:20〕=0XFF2并设置
了RD*信号(低电平),但因为DM信号为低电平,则表示正常方
式。

(3)在步骤S120、S121,S126和S127,串行监控总线的写操作
启动,因为A〔31:20〕=0XFF2,写信号WR*(低)被设置,信号
DM为高指明是调试方式,而且寄存器DCR的MP位为0,指明为
写允许状态。

(4)在步骤S120、S121,S126,S134和S135,设置微处理器内
核20的WRACK*信号结束总线操作。尽管A〔31:20〕=0XFF2
并且设置了写信号WR*(低),但因为信号DM为低指明为正常方
式,或寄存器DCR的MP位为1指明为写禁止状态。

(5)在步骤S120、S122,S128和S129,串行监控总线的协处理
器读操作开始,因为A〔31:21〕=0100-0000-010,用于指令
CFC0的协处理器读总线信号CPRD*被设置,而且信号DM为高
指明为调试方式。

(6)在步骤S120,S121,S128,S136和S137,处理器内核20的
CPRDACK*信号被设置,则结束总线操作。虽然A〔31:21〕=
0100-0000-010且用于指令CFC0的CPRD信号(低)被设置,
但是,因为信号DM为低,指明是正常方式。

(7)在步骤S120,S121,S122,S123,S130和S131,串行监控总
线的协处理器读操作启动,因为A〔31:21〕=0100-0000-110,
指令CTC0的协处理器写总线操作信号CPWR(低)被设置,且信
号DM为高指明为调试方式。

(8)在步骤S120,S121,S122,S123,S138和S139,设置处理器
内核20的CPWRACK*信号以结束总线操作。尽管A〔31:21〕=
0100-0000-110且设置了指令CTC0的信号CPWR*(低),但因
为信号DM为低说明是正常方式。

图27是串行监控总线电路34进行读操作的流程图。

在读操作中,串行监控总线控制器341在周期1中,向输出移
位寄存器344提供:高电平的串行监控总线读/写信号,串行监控总
线字节允许信号BE〔3:0〕和高电平的串行监控总线数据信号,并
设置一个数据装入信号。

根据指令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〔31:0〕由数据总线输
入信号DIN〔31:0〕传送。

图28是串行监控总线电路34写操作的流程图。

在写操作中,串行控制总线控制器341在周期1中,向输出移
位寄存器344提供低电平的串行监控总线读/写信号,串行监控总
线字节允许信号BE〔3:0〕和串行监控总线的数据信号D0UT〔31
:0〕,并设置数据装入信号。

根据指令CTG0在协处理器的写总线操作中,控制器341向寄
存器提供低电平的串行监控总线读/写信号,4位低电平的串行监
控总线字节允许信号和串行监控总线数据信号DOUT〔31:0〕,并
设置数据装入信号。寄存器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位的目标程序计数器〔31:2〕信号

这些信号指明转移或跳转指令的目标地址或是异常处理的向
量地址。当设置间接跳转、直接跳转、转移进入和异常发生信号时,
则该信号有效。

间接跳转信号

该信号表示执行了一个间接跳转。

直接跳转信号

该信号表示执行了一个直接跳转。

转移进入信号

该信号表示执行了一条转移指令并进入转移。

异常发生信号

该信号表示异常已经发生。

跟踪器32向处理器内核20提供如下信号以全面跟踪程序计
数器。

流水线失速请求信号

该信号阻塞了处理器内核20的流水线处理,从而完全地让目
标程序计数器产生输出。当跟踪器32正在接收目标程序计数器的
间接跳转信号时发生了下一个间接跳转,则跟踪器32设置流水线
失速请求信号,停止处理器内核20的流水线处理。一旦目标程序
计数器的信号完成,流水线失速请求信号被取消,灰复流水线处理。

跟踪器32接收来自指令/数据地址断点电路31或处理器总线
断点电路33的触发请求。跟踪器32接收DCR寄存器的TM位和
调试允许信号DBGE*。若DBGE*信号被设置为低电位,它表示
调试器60有效。

跟踪器32在正常方式下,把处理器内核20提供的程序计数
器跟踪信息转换成一位的程序计数输出TPC和一个三位状态信号
PCST〔2:0〕,供调试器60使用。

下面说明信号PCST〔2:0〕和TPC

a)PCST〔2:0〕

指令的执行状态由信号PCST〔2:0〕以每个时钟一位的速度
传送(0:低,1:高)。

111:流水线失速状态(STL)

该状态说明当没有跟踪触发请求时,则指令的执行尚未完成。

110:转移/跳转进入状态(JMP)(用程序计数器输出)

该状态表示执行了进入转移或跳转指令,且目标地址将由信号
TPC传送。

101:转移/跳转进入状态(BRT)(没有程序计数器输出)

该状态表明执行了进入转移或直接跳转指令,但信号TPC不
传送目标地址。

100:异常状态(EXP)(异常向量码输出)

该状态表示出现了一个异常,异常处理的向量码将由信号
TPC传送。

011:顺序执行状态(SEQ)(指令执行)

该状态表示在JMP,BRT或TSQ状态下执行指令。当转移指
令没有进入时也建立这一状态。

010:流水线失速中的跟踪触发器输出状态(TST)

该状态表明地址跟踪触发器或处理器总线跟踪触发器在指令
仍在执行中的一个时钟周期发生了请求。

000:调试方式(DBM)

在正常方式下不能达到该状态。

信号TPC用来提供转移或跳转指令的目标地址。在信号
PCST〔2:0〕指明状态″110″(JMP)的时钟周期里,目标地址从低
位A〔2〕开始以每个时钟周期一位的速度传送。在信号PCST〔2:0〕
指明状态″100″(EXP)的时钟周期时,一个三位的异常向量从低位
开始按代码(0),代码(1),代码(2)的顺序以每个时钟一位的速度
传送。异常向量地址和三位代码如下所示:

向量地址代码(2:0)

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〔2:0〕指明状态TMP,信号
TPC开始为指令″beq″传送目标程序计数器信号,作为对非进入
转移指令″bne″的响应,信号PCST〔2:0〕指明状态码SEQ,作为
对再次进入转移指令″bne″的响应信号TPC并不传送目标程序计
数器信号,因为信TPC正为第一条转移指令″beq″传送目标程序
计数器信号。这时,信号PCST〔2:0〕指明状态为BRT。

(例2):间接跳转指令的程序计数器跟踪。

图31是用于间接跳转指令的程序计数器跟踪信号示例。

作为对第一条间接跳转指令″jr1″的响应,信号PCST〔2:0〕
指明状态为JMP,信号TPC开始传送目标程序计数器信号。作为
对非进入转移指令″bne″的响应,信号PCST〔2:0〕指明状态为
SEQ,作为对第二条间接转移指令″jr2″的响应,信号TPC停止传
送第一条间接跳转指令″jr1″的目标程序计数器信号,开始为第二
条指令″jr2″传送目标程序计器信号。这时,信号PCST〔2:0〕指明
状态为JMP。

(例3)异常和间接跳转指令的程序计数器跟踪。

图32是异常和间接跳转指令的程序计数器跟踪示例。

作为对软件断点指令″break″的响应,产生一个异常,信号
PCST〔2:0〕指明状态为EXP,这时,信号TPC开始传送异常向
量代码,在非进入转移指令″bne″,信号PCST〔2:0〕指明状态
SEQ,在间接跳转指令″jr2″,信号TPC传送用于″jr2″指令的目标
程序计数器信号,该信号PCST〔2:0〕指明状态JMP。

下面介绍信号PCST〔2:0〕的跟踪触发状态TSQ或TST。

当地址和数据在同一总线周期出现时,发生一个指令/数据地
址断点或处理器总线断点,产生一个表示状态TSQ或TST的信号
PCST〔2:0〕。

当指令地址跟踪触发请求、数据地址跟踪触发请求或处理器总
线跟踪触发请求产生时,信号PCST〔2:0〕指明状态为TSQ或
TST。若信号PCST〔2:0〕可能在将要表明状态SEQ或STL的时
钟周期里指明状态TSQ或TST。

a)指令/数据地址跟踪触发发生时,信号PCST〔2:0〕指明状
态为TSQ。若跟踪触发由进入转移指令、跳转指令或不使信号
PCST〔2:0〕指明状态SEQ的指令产生时,跟踪触发的输出将被推
迟。若没有跟踪触发请求,信号PCST〔2:0〕在即将表示状态SEQ
或STL的时钟周期里,表示状态TSQ或TST。

(例1)指令/数据地址跟踪触发示例。

图33是指令/数据地址跟踪触发的示例。

作为对产生指令跟踪触发或数据地址跟踪触发或数据地址跟
踪触发的指令″add″的响应,信号PCST〔2:0〕指明状态TSQ。

(例2)由异常引起的指令/数据地址触发的示例。

图34是由异常引起的指令/数据地址触发的示例。

如果软件断点″break″产生时了指令地址跟踪触发或数据地
址跟踪触发,信号PCST〔2:0〕指明状态EXP,在下一个时钟周
期,指明用于流水线失速的跟踪触发状态TST。

(例3)由间接跳转指令引起的指令/数据地址跟踪触发的示
例。

当间接跳转指令″jr2″引起指令地址跟踪触发或数据地址跟
踪触发时,信号PCST〔2:0〕指明状态为JMP。在下一个时钟周期
里,指明用于指令执行条件的跟踪触发状态TSQ。

b)处理器总线跟踪触发

当发生一个处理器总线跟踪触发请求时,信号PCST〔2:0〕指
明状态TSQ或TST。若信号PCST〔2:0〕正指明状态JMP、BRT
或EXP时,跟踪触发状态TSQ或TST将被推迟,若没有跟踪触
发请求时,信号PCST〔2:0〕将在本应指明状态SEQ或STL的下
一个时钟周期里指明状态为TSQ或TST。

下面介绍调试方式状态DBM的产生

若处理器内核20引起一个调试异常或调试复位,则设置高电
平的调试方式信号DM进入调试方式。然后,跟踪器32提供信号
PCST〔2:0〕表明调试方式状态DBM。

图36是当调试异常出现时,信号PCST〔2:0〕的输出时间图。

当没有提供目标程序计数器信号时,在引起调试异常的指令结
束后,立即启动调试方式,提供出调试异常发生前的程序计数器
跟踪信息。

图37是当调试异常发生时,传送目标程序计数器信号的
PCST〔2:0〕的时序。

在这种情况下,在目标程序计数器信号结束后,启动调试方
式,提供出直到调试异常即将发生前的指令的程序计数器跟踪信
息。当目标程序计数器信号传送的同时,信号PCST〔2:0〕指明状
态为STL。

图38是从调试方式返回时信号PCST〔2:0〕的时序。

调试方式一直持续到由调试异常或调试方式发送的返回指令
DERET的转移延迟间隙指令出现为止。正常方式从DERET指令
的一条目标指令开始,启动程序计数器跟踪。

回到图29,解释跟踪器32。

跟踪器32有一个程序计数器跟踪控制器321,一个目标程序
计数移位寄存器322,一个异常向量编码器323,一个异常编码移
位寄存器324和一个选择器325。

控制器321还有一个异常编码输出状态位326和一个目标程
序计数器输出计数器329。

下面说明跟踪器321的操作。

表3是当寄存器DCR的TM位为0时,信号PCST〔2:0〕的
输出。在表3中,″1″表示有效状态,″X″表示″无关″状态。

                                              表3

调试方式信号DM
  0
  0
  0
      0
    0
    0
    0
  0
    1
      1
间接跳转信号
  0
  0
  0
      0
    0
    1
    0
  0
    X
      X
直接跳转信号
  0
  0
  0
      0
    1
    0
    0
  0
    X
      X
转移进入信号
  0
  0
  0
      1
    0
    0
    0
  0
    X
      X
异常发生信号
  0
  0
  1
      0
    0
    0
    0
  0
    X
      X
流水线执行信号
  0
  1
  1
      1
    1
    1
    0
  1
    X
      X
触发请求信号
  0
  0
  X
      X
    X
    X
    1
  1
    1
      0
提供TPC或异常码
(内部状态)

  X

  X

  X

  1

  0

 1

0

    X

    X

  X

    X

  1

0
PCST[2:0]输出
  STL
  SEQ
  EXP
 BRT
 JMP
 BRT
JMP
   JMP
   TST
  TSQ
   TST
 STL
DBM
在该表中,触发请求信号是指令地址跟踪触发请求信号,数据地址
跟踪触发请求信号和处理器总线跟踪触发请求信号的″或″。

当五位的计数器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〔2:0〕指明状态EXP时,异常代码装入信号被设置。此时,
异常向量编码器323的输出装入到异常代码移位寄存器324中,设
置目标程序计数器装入信号,信号PCST〔2:0〕指明状态JMP。然
后,目标程序计数器的值装入到目标程序计数器移位寄存器322
中。当计数器327非0,且状态位326未设置时,则目标程序计数器
移位信号被设置。

当DCR寄存器的TM位为1时,程序计数器跟踪彻底结束。
若信号DBGE*置,则TM位置位,而且在传送用于间接跳转指令
的目标程序计数器信号时,发生了下一条间接跳转指令,则控制器
321设置流水线失速请求信号,以停止处理器内核20的流水线处
理。当前的目标程序计数器传送结束后,流水线失速信号取消并灰
复流水线操作。

表4是TM位为1时,信号PCST〔2:0〕的输出。在表4中,″
1″表示有效状态,″X″表示″无关″状态。

                                         表4

调试方式信号DM
0
  0
  0
    0
    0
    0
  0
  0
  1
    1
间接跳转指令
0
  0
  0
    0
    0
    1
  0
  0
  X
    X
直接跳转指令
0
  0
  0
    0
    1
    0
  0
  0
  X
    X
转移进入指令
0
  0
  0
    1
    0
    0
  0
  0
  X
    X
异常发生信号
0
  0
  1
    0
    0
    0
  0
  0
  X
    X
流水线执行信号
0
  1
  1
    1
    1
    1
  0
  1
  X
    X
触发请求信号
0
  0
  X
    X
    X
    X
  1
  1
  1
    0
传送目标程序计数器或
异常代码(内部状态)


X


  X


  X


  1


  0


  1


  0


 1


 0


  X


  X


  X


    1


    0

PCST[2:0]输出
STL
  SEQ
  EXP
  BRT
  JMP
  BRT
  JMP
 STL
 JMP
  TST
  TSQ
  TST
   STL
 DBM
流水线失速请求信号
0
  0
  0
 0
 0
 0
  0
 1
 0
  0
  0
  0
   0
 0
在传送目标程序计数器信号时,或异常代码过程中,由于执行间接
跳转指令而使间接跳转信号有效时,对处理器内核20的流水线失
效请求被激活。指明目标程序计数器信号或异常代码正在传送的
内部状态,在目标程序计数器信号开始后的30个时钟周期里为激
活态。

当控制器321的目标程序计数器装入信号被设置时,目标程序
计数器移位寄存器322装入目标程序计数器的输出值。当控制器
321的目标程序计数器移位信号被设置时,寄存器322把它的值
每次一位地从MSB移向LSB。

异常向量编码器323,根据向量地址的位A〔29〕,A〔8〕和A〔7〕
编码出的异常向量地址。如下所示:

  向量地址
 (A29,A8,A7)
   编码
  Reset,Nmi
  UTLB(BEV=0)
  UTLB(BEV=1)
  其它(BEV=0)
  其它(BEV=1)
    BFC0-0000
    8000-0000
    BFC0-0100
    8000-0080
    BFC0-0180
    (100)
    (000)
    (110)
    (001)
    (111)
    4
    0
    6
    1
    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〔2:0〕指示状态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〔2:
0〕指示状态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〔2:0〕指明调试方式状态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〔5:0〕,得以屏蔽中断。

当寄存器DCR的MRST位是0时,在调试异常处理器执行期
间(信号DM为高),则屏蔽电路366屏蔽用户复位信号RESET
*。

输出缓冲器367A向外提供选择器362的输出作为信号
DCLK;输出缓冲器367B向外提供选择器363的输出作为信号
TPC/SDAD;输出缓冲器367C向外提供跟踪器32的信号PCST
〔2:0〕作为外部信号PCST〔2:0〕。

上拉电阻输入缓冲器368A接收外部信号DINT*/SDI,由于
该缓冲器有上拉电阻,所以,当外部信号DINT*/SDI断开时,则
输出总是高电平。上拉电阻输入缓冲器368B接收外部信号DBGE
*,由于该缓冲器有上拉电阻,所以,若外部信号DBGE*断开时,
同输出总是高电平。上拉电阻输入缓冲器368C接收外部信号
DRESET*,由于该缓冲器有上拉电阻,所以,当外部信号
DRESET*断开时,则输出总是高电平。

当调试器60断开时,则外部信号DINT*/SDI,DBGE*和
DRESET*也断开,然后,这些信号成为高电平内部信号,因而,调
试方式的功能被禁止。

输入缓冲器369A接收外部中断信号INT〔5:0〕*,输入缓冲
器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对调试工具的写

微处理器与调试系统.pdf_第1页
第1页 / 共98页
微处理器与调试系统.pdf_第2页
第2页 / 共98页
微处理器与调试系统.pdf_第3页
第3页 / 共98页
点击查看更多>>
资源描述

《微处理器与调试系统.pdf》由会员分享,可在线阅读,更多相关《微处理器与调试系统.pdf(98页珍藏版)》请在专利查询网上搜索。

一个微处理器10有一个处理器内核20和一个调试模块30。处理器内核20执行用户程序和执行用于调试用户目标系统70的监控程序。调试模块30作为与一个调试工具60的接口,使处理器内核20执行存放在调试工具60中的监控程序。调试模块30产生中断或异常请求,使得处理器内核20从用户程序切换到监控程序。 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1