实现多核处理器EJTAG可调试性的装置及系统转让专利

申请号 : CN200910237056.8

文献号 : CN101710300B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 胡伟武吴瑞阳钱诚陈云霁

申请人 : 龙芯中科技术有限公司

摘要 :

本发明公开了一种实现多核处理器EJTAG可调试性的装置及系统,所述系统包括外部调试主机、片上调试总线、多核处理器、及控制装置,该控制装置包括:用于接收外部调试主机的调试指令的调试指令输入接口模块,用于储存调试指令信息的数据寄存器模块,用于指示当前操作状态的有限状态机,用于依据调试指令的信息及有限状态机指示的当前控制状态生成对应处理器的EJTAG TAP控制器的信息的控制信息生成模块,用于与各个处理器的EJTAG TAP控制器之间的总线连接的多核处理器接口模块,用于将数据寄存器模块中的调试指令的信息发送至片上调试总线的片上调试总线处理模块。

权利要求 :

1.一种实现多核处理器EJTAG可调试性的装置,用于连接多核处理器与外部调试主机,其特征在于,包括:调试指令输入接口模块,用于与符合IEEE 1149.1JTAG标准的外部调试主机连接,并接收外部调试主机的调试指令,所述调试指令包含选择相应CPU中的EJTAG TAP控制器的信息以及对应的调试数据信息;

数据寄存器模块,用于储存上述调试指令的信息;

有限状态机,用于指示当前的操作状态;

控制信息生成模块,用于依据调试指令的信息及有限状态机指示的当前控制状态,生成对应CPU的EJTAG TAP控制器的信息;

多核处理器接口模块,用于与各个处理器的EJTAG TAP控制器之间的总线连接;以及,片上调试总线处理模块,用于将数据寄存器模块中的调试指令的信息发送至片上调试总线。

2.如权利要求1所述的装置,其特征在于,所述数据寄存器模块包括用于指定欲调试的EJTAG TAP控制器所在的CPU的CPUNO寄存器、用于指定是否控制通过CPUNO数据寄存器指定的EJTAG TAP控制器的控制寄存器、以及用于生成片上调试总线信息的数据寄存器、地址寄存器、写屏蔽寄存器、读写指示寄存器。

3.如权利要求2所述的装置,其特征在于,所述CPUNO寄存器指定多个CPU中的一个,或者将多个CPU中的EJTAG TAP控制器使用链式连接。

4.如权利要求2所述的装置,其特征在于,还包括用于指定数据寄存器模块中各寄存器的指令寄存器、以及将指令寄存器的指令信息翻译为对对应寄存器进行选择的信息的译码模块,所述控制信息生成模块依据译码模块翻译的信息选择对应的寄存器。

5.如权利要求1所述的装置,其特征在于,所述控制信息生成模块生成送往每个EJTAG TAP控制器的TDI和TMS信号,以及处理从各个EJTAG TAP控制器来的TDO信号。

6.一种实现多核处理器EJTAG可调试性的系统,包括外部调试主机、片上调试总线、以及多核处理器,其特征在于,还包括控制装置,所述控制装置设置于多核处理器与外部调试主机之间,所述控制装置包括:调试指令输入接口模块,用于与符合IEEE 1149.1JTAG标准的外部调试主机连接,并接收外部调试主机的调试指令,所述调试指令包含选择相应CPU中的EJTAG TAP控制器的信息以及对应的调试数据信息;

数据寄存器模块,用于储存上述调试指令的信息;

有限状态机,用于指示当前的操作状态;

控制信息生成模块,用于依据调试指令的信息及有限状态机指示的当前控制状态,生成对应CPU的EJTAG TAP控制器的信息;

多核处理器接口模块,用于与各个处理器的EJTAG TAP控制器之间的总线连接;以及,片上调试总线处理模块,用于将数据寄存器模块中的调试指令的信息发送至片上调试总线。

7.如权利要求6所述的系统,其特征在于,所述数据寄存器模块包括用于指定欲调试的EJTAG TAP控制器所在的CPU的CPUNO寄存器、用于指定是否控制通过CPUNO数据寄存器指定的EJTAG TAP控制器的控制寄存器、以及用于生成片上调试总线信息的数据寄存器、地址寄存器、写屏蔽寄存器、读写指示寄存器。

8.如权利要求7所述的系统,其特征在于,所述CPUNO寄存器指定多个CPU中的一个,或者将多个CPU中的EJTAG TAP控制器使用链式连接。

9.如权利要求7所述的系统,其特征在于,还包括用于指定数据寄存器模块中各寄存器的指令寄存器、以及将指令寄存器的指令信息翻译为对对应寄存器进行选择的信息的译码模块,所述控制信息生成模块依据译码模块翻译的信息选择对应的寄存器。

10.如权利要求6所述的系统,其特征在于,所述控制信息生成模块生成送往每个EJTAG TAP控制器的TDI和TMS信号,以及处理从各个EJTAGTAP控制器来的TDO信号。

说明书 :

实现多核处理器EJTAG可调试性的装置及系统

技术领域

[0001] 本发明涉及一种处理器可调试性装置及系统,尤其涉及一种实现多核处理器EJTAG可调试性的装置及系统。

背景技术

[0002] EJTAG技术是一种基于IEEE 1149.1 JTAG(Joint Test Action Group,联合测试行为组织)标准的处理器测试技术。实现在处理器中的EJTAG TAP(Test Access Port,测试访问口)接收外部调试主机串行输入的指令和数据,进行对处理器的测试功能。当前,EJTAG技术已经被龙芯系列处理器所使用,是处理器调试的重要组成部分,但是在多核处理器中,如何对特定的一个或多个处理器的EJTAG TAP控制器做出控制,仍然存在一些问题。修改EJTAG技术的指令长度并不是可行的方法。
[0003] 当前大多数的实现都是将多个EJTAG TAP控制器按照链式连接,进行链式扫描;也有一些实现是通过一条外部线路输入一个值来选择处理器号。但是前一种方法在对单个处理器进行EJTAG操作时相对较慢,后一种方法需要额外的输入线路,不符合JTAG标准所述的TCK(测试时钟输入)、TMS(测试模式选择)、TDI(测试数据输入)、TDO(测试数据输出)和可选的TRST(测试复位)这5根线的接口,致使外部调试主机需要做硬件改动。因此,就需要一个较快而又标准的方法来对多核处理器中每个处理器的EJTAG TAP控制器进行控制。

发明内容

[0004] 本发明针对现有技术的缺陷,提供一种允许外部调试主机发送的调试指令控制多核处理器中特定的CPU内的EJTAG TAP控制器,从而实现多核处理器EJTAG可调试性的装置及系统。
[0005] 本发明所述的实现多核处理器EJTAG可调试性的装置,用于连接多核处理器与外部调试主机,包括:
[0006] 调试指令输入接口模块,用于与符合IEEE 1149.1JTAG标准的外部调试主机连接,并接收外部调试主机的调试指令,所述调试指令包含选择相应CPU中的EJTAG TAP控制器的信息以及对应的调试数据信息;
[0007] 数据寄存器模块,用于储存上述调试指令的信息;
[0008] 有限状态机,用于指示当前的操作状态;
[0009] 控制信息生成模块,用于依据调试指令的信息及有限状态机指示的当前控制状态,生成对应CPU的EJTAG TAP控制器的信息;
[0010] 多核处理器接口模块,用于与各个处理器的EJTAG TAP控制器之间的总线连接;以及,
[0011] 片上调试总线处理模块,用于将数据寄存器模块中的调试指令的信息发送至片上调试总线。
[0012] 本发明所述实现多核处理器EJTAG可调试性的系统,包括外部调试主机、片上调试总线、以及多核处理器,还包括控制装置,所述控制装置设置于多核处理器与外部调试主机之间,所述控制装置包括:
[0013] 调试指令输入接口模块,用于与符合IEEE 1149.1JTAG标准的外部调试主机连接,并接收外部调试主机的调试指令,所述调试指令包含选择相应CPU中的EJTAG TAP控制器的信息以及对应的调试数据信息;
[0014] 数据寄存器模块,用于储存上述调试指令的信息;
[0015] 有限状态机,用于指示当前的操作状态;
[0016] 控制信息生成模块,用于依据调试指令的信息及有限状态机指示的当前控制状态,生成对应CPU的EJTAG TAP控制器的信息;
[0017] 多核处理器接口模块,用于与各个处理器的EJTAG TAP控制器之间的总线连接;以及,
[0018] 片上调试总线处理模块,用于将数据寄存器模块中的调试指令的信息发送至片上调试总线。
[0019] 本发明所述的装置中,所述数据寄存器模块包括用于指定欲调试的EJTAG TAP控制器所在的CPU的CPUNO寄存器、用于指定是否控制通过CPUNO数据寄存器指定的EJTAG TAP控制器的控制寄存器、以及用于生成片上调试总线信息的数据寄存器、地址寄存器、写屏蔽寄存器、读写指示寄存器。其中,所述CPUNO寄存器指定多个CPU中的一个,或者将多个CPU中的EJTAG TAP控制器使用链式连接。
[0020] 本发明所述的装置中,还包括用于指定数据寄存器模块中各寄存器的指令寄存器、以及将指令寄存器的指令信息翻译为对对应寄存器进行选择的信息的译码模块,所述控制信息生成模块依据译码模块翻译的信息选择对应的寄存器。
[0021] 本发明所述的装置中,所述控制信息生成模块生成送往每个EJTAG TAP控制器的TDI和TMS信号,以及处理从各个EJTAG TAP控制器来的TDO信号。
[0022] 本发明中,所述外部调试主机只需输入对应于各个欲操作的处理器的编码,就可实现对各对应处理器EJTAG TAP控制器的选择与控制,而不必如现有技术中必须进行链式扫描或增设外部线路来实现,大大提供了调试的效率;同时,本发明所述的装置及系统还增加了外部调试主机和片上调试总线交流的功能,真正实现了多核处理器EJTAG可调试性。 附图说明
[0023] 图1为包含本发明所述实现多核处理器EJTAG可调试性的装置及应用该装置的系统的结构示意图;
[0024] 图2为本发明所述实现多核处理器EJTAG可调试性的装置及系统的连线示意图; [0025] 图3为本发明所述实现多核处理器EJTAG可调试性的装置的另一种示意图; [0026] 图4为本发明所述装置对外部调试主机发出的命令的处理流程示意图; [0027] 图5为EJTAG控制信号的生成逻辑示意图;
[0028] 图6为进行EJTAG调试的状态转移示意图。

具体实施方式

[0029] 下面结合附图对本发明做进一步说明,以使本领域普通技术人员参照本说明书后能够据以实施。
[0030] 图1所示为实现多核处理器EJTAG可调试性的系统的结构示意图。如图1中所示的,本发明中所述系统包括外部调试主机、片上调试总线、多核处理器、以及在所述多核处理器与外部调试主机之间设置有装置(即后述的实现多核处理器EJTAG可调试性的装置)。本实施例中以连接8个处理器为例。所述装置与外部调试主机通过标准JTAG通道连接,和多核处理器的连接包括通向8个处理器的JTAG通道和通向片上调试网络的总线。具体连线可如图2所示。
[0031] 如图3所示,本发明中,所述实现多核处理器EJTAG可调试性的装置包括:调试指令输入接口模块、数据寄存器模块、有限状态机、控制信息生成模块、多核处理器接口模块、以及片上调试总线处理模块。
[0032] 具体来说,所述调试指令输入接口模块与符合IEEE 1149.1 JTAG标准的外部调试主机连接,其包含了TCK、TMS、TDI、TDO以及可选的TRST接口,该调试指令输入接口模块接收外部调试主机的调试指令。所述的调试指令包含了选择具体哪一个CPU中的EJTAG TAP控制器的信息,以及对该EJTAG TAP控制器采取如何调试方式的调试数据信息。 [0033] 所述数据寄存器模块用于储存上述符合IEEE 1149.1 JTAG标准的调试指令的信息,该数据寄存器模块可按自定义数量和位长进行设置。所述数据寄存器可具体包括用于指定欲调试的EJTAG TAP控制器所在的CPU的CPUNO寄存器、用于指定是否控制通过CPUNO数据寄存器指定的EJTAG TAP控制器的控制寄存器、以及用于生成片上调试总线信息的数据寄存器、地址寄存器、写屏蔽寄存器、读写指示寄存器。所述CPUNO寄存器可指定多个CPU中的一个,或者将多个CPU中的EJTAG TAP控制器使用链式连接。
[0034] 所述有限状态机,用于指示当前的操作状态。
[0035] 所述控制信息生成模块,用于依据调试指令的信息及有限状态机指示的当前控制状态,生成对应处理器的EJTAG TAP控制器的信息。该控制信息生成模块可生成送往每个TJTAG TAP控制器的TDI和TMS信号,以及处理从各个EJTAG TAP控制器来的TDO信号。 [0036] 所述多核处理器接口模块,用于与各个处理器的EJTAG TAP控制器之间的总线连接。该多核处理器接口模块仅为形式性的接口,为了方便,还可将TCK和TRST并上TDI和TMS形成一个4位总线送至处理器。
[0037] 所述片上调试总线处理模块用于用于将数据寄存器模块中的调试指令的信息发送至片上调试总线。
[0038] 本发明中,所述数据寄存器模块中储存调试指令的信息,而控制信息生成模块根据该数据寄存器模块中的调试指令信息生成对应的控制信息。在具体操作中,所述装置内还可包括指令寄存器及译码模块,所述指令寄存器用于指定数据寄存器模块中各个对应的寄存器,而指定的依据则来源于外部调试主机的调试指令;所述译码模块将指令寄存器的指令信息翻译为对相应的寄存器进行选择的信息,使得控制信息生成模块可依据该译码模块翻译而得到的信息来选择对应的寄存器,进而执行其他调试操作。对有限状态机、指令寄存器、数据寄存器模块等进行的基本操作,都按照JTAG标准来实现,对译码模块的运行模式,也可以按照JTAG标准实现,译码的原则可以为自定义的。
[0039] 下面详细描述数据寄存器模块、译码模块的运作方式。
[0040] 如图5所示,是EJTAG控制信号的生成逻辑。依据控制寄存器和CPUNO寄存器的值,可以得知是否在控制状态下,以及是处在链式扫描状态还是选择单个CPU的状态。由图5也可以看出,送往CPU1到CPU4的TMS信号,是低电平0和调试主机输入的TMS选择得到的结果。而根据控制寄存器和CPUNO寄存器的值可以得到如下表1的设定: [0041] 表1
[0042]选择哪个CPU 生成的TMS控制信号(4-3-2-1)
CPU1 0,0,0,TMS
CPU2 0,0,TMS,0
CPU3 0,TMS,0,0
CPU4 TMS,0,0,0
未在控制模式下 0, 0, 0, 0
链式扫描 TMS,TMS,TMS,TMS
[0043] 对于TDI,情况较为简单:当处在链式扫描下时,TDI4=TDO3,TDI3=TDO2,TDI2=TDO1,TDI1=TDI;当处在非控制状态,或者控制单个的EJTAG TAP控制器时,4个TDI输出都等于TDI。
[0044] 由IEEE 1149.1 JTAG标准可知这是正确的。
[0045] 图6所示为进行EJTAG调试的状态转移示意图,其中,以TMS的值为0或1进行状态转移。当通过写控制寄存器进入或者退出控制状态时,状态机的转移固定,都是回到IDLE状态等待下一个指令,此时的TMS变成恒为0,即可以将目标EJTAG(JTAG也可)控制器保持在IDLE状态;或者TMS开始接收外部调试主机的信息,也可以直接无差错的恢复运转。 [0046] 再来看译码模块的配置。
[0047] 由于在控制某个CPU的EJTAG TAP控制器的时候,TDI所承载的信息只在目标EJTAG模块中有意义的,对于总TAP控制器(即本实施例中所述的装置)没有意义,错误的做出反应甚至会导致有意义的数据丢失的后果。因此应该选择和EJTAG同样长的指令长度:5位,这样总TAP控制器的指令寄存器就可以得到外部调试主机写入的指令。(不论这条指令是给总TAP控制器的,还是某一个CPU的,在链式扫描情况下是写给最后一个CPU的EJTAG指令)在控制模式下,总TAP控制器不得对操作数据寄存器的指令做出反应。但是,为了可以退出控制模式,控制寄存器要随时可写。
[0048] 因此设定:当处在控制模式下时,(包括控制链式和控制单个CPU)除了写控制寄存器的指令,其余的译码为JTAG标准所定义的Bypass(旁路)操作;当不在控制模式下时,按正常的定义译码。这样,编码也不用担心和EJTAG的编码冲突,只需要将控制寄存器编码选为EJTAG不使用的编码即可。即使一个操作控制寄存器的命令被错误的送到了目标CPU处理器,也会被EJTAG模块默认译码为Bypass指令,不会引发任何不良后果,因此可以容忍某些误操作。
[0049] 本发明的CPUNO编码方式如下表所描述。仍然按照8核处理器为例,我们使用5位的CPUNO编码,以便支持扩展。
[0050]试图进行的操作 CPUNO寄存器编码
控制CPU1 0x00
控制CPU2 0x01
控制CPU3 0x02
控制CPU4 0x03
控制CPU5 0x04
控制CPU6 0x05
控制CPU7 0x06
控制CPU8 0x07
控制链式扫描 0x0f
无效数据 0x08--0x0e 0x10--0x1f
[0051] 以上描述的也可以推导出图4所描绘的工作流程:当处在控制模式下,对不操作控制寄存器的指令,直接译码为Bypass,对操作CONTROL的指令,做出操作,按照是否写为0,确定是否退出控制模式;没有处在控制模式下时,按照JTAG标准操作进行指令寄存器所指示的数据寄存器修改。
[0052] 以下描述CPUNO和CONTROL两个状态信号。
[0053] 这两个信号,也可以归结为一个可以表示三种控制模式的控制量:不在控制模式,在控制某个确定的CPU的EJTAG TAP控制器,在控制链式扫描。在8核处理器的例子下就是10种可能性。这个控制量一旦进入控制模式,转发模块运算得到的送往各个处理器的JTAG/EJTAG控制信号就已经变化了。同时译码模块DECODE接到该命令,修正对不是CONTROL指令的译码为Bypass。
[0054] 这两个信号属于本系统和本控制装置的核心控制信号,在控制寄存器处在Update-DR状态后,就会导致控制装置,也即总TAP控制器状态的转变。由于目前的EJTAG调试软件在Update-DR之后会进入IDLE状态1到2拍,因此,该控制信号量的生成是及时的,不会出现应该送到某处理器的EJTAG TAP控制器的数据没有发送,也不会出现从某处理器的控制返回后仍然向该处理器送数据的情况。
[0055] 根据上文的叙述,控制流程有如下几种情况:
[0056] 情况1:当利用当前外部调试主机的输入生成片上调试总线的信息时,只要按照所述的控制装置,也即总TAP控制器的编码,输入数据、地址、写屏蔽和读写指示信息,就可以向片上调试总线上送出消息;
[0057] 情况2:当试图控制CPU1时,先向CPUNO寄存器写入CPU1的编码0x00,然后向控制寄存器写1,这时总TAP控制器内部已经处于转发状态,随后写入TDI的数据,TMS的状态,都被无条件转发给了CPU1,同时总TAP控制器在监控指令寄存器,当指令为控制寄存器时,按TMS,TDI进行操作。由上面所提到的指令定义,除非是外部调试主机意图取消对当前CPU的控制,否则指令不可能是控制寄存器。
[0058] 情况3:当试图退出控制模式时,写控制寄存器0,写完后,总TAP控制器的工作模式就回到了非控制模式。
[0059] 情况4:若想继续控制某个CPU,按照情况2的方法操作,若要继续片上调试总线上的操作,按照情况1的方法操作。
[0060] 情况5:若要将所有的8个CPU做链式扫描,则向CPUNO寄存器写入链式扫描的编码0x0f,然后就可以按链式扫描的方法输入数据了:输入8条指令,提交指令,再输入8个CPU所需要的数据,提交数据。JTAG标准专门提供了Bypass指令,用于链式扫描中不关心的TAP控制器节点。
[0061] 情况6:当试图从链式扫描模式退出时,输入8条指令,可以全为CONTROL命令,也可以是7条Bypass最后一条CONTROL命令。提交指令后,移位入一位数据0即可。总TAP控制器就回到了非控制状态。
[0062] 以上6种情况就包括了所述外部调试主机的所有工作状态。
[0063] 本发明中,所述外部调试主机只需输入对应于各个欲操作的处理器的编码,就可实现对各对应处理器EJTAG TAP控制器的选择与控制,而不必如现有技术中必须进行链式扫描或增设外部线路来实现,大大提供了调试的效率。同时,本发明所述的装置及系统还增加了外部调试主机和片上调试总线交流 的功能,真正实现了多核处理器EJTAG可调试性。 [0064] 尽管本发明的实施方案已公开如上,但其并不仅仅限于说明书和实施方式中所列运用,它完全可以被适用于各种适合本发明的领域,对于熟悉本领域的人员而言,可容易地实现另外的修改,因此在不背离权利要求及等同范围所限定的一般概念下,本发明并不限于特定的细节和这里示出与描述的图例。