基于龙芯一号IP核的EJTAG调试_第1页
基于龙芯一号IP核的EJTAG调试_第2页
基于龙芯一号IP核的EJTAG调试_第3页
基于龙芯一号IP核的EJTAG调试_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于龙芯一号IP核的EJTAG调试    引 言    目前,随着嵌入式系统在各个领域中的广泛应用,人们对嵌入式开发工具的需求也变得非常迫切。嵌入式系统的开发需要特殊的开发环境,一般包括交叉编译器、交叉调试器等。交叉调试器有两种实现方式:一种是片上调试,另一种是在目标机端运行监控程序来完成调试。前者是处理器的硬件调试模块支持的,如MIPS架构的EJTAG,国芯CPU的OnCE等,由于接近硬件底层,可以在裸机状态下提供调试手段,不仅可以调试监控程序、系统软件,也可以利用边界扫描单元来测试硬件电路及故障定位;而后者一般是在处理器

2、正常工作后,才可以使用的一种调试手段。    EJTAG(Enhanced Joint Test Action Group)是MIPS公司根据IEEE 11491协议的基本构造和功能扩展而制定的规范,是一个硬件软件子系统,在处理器内部实现了一套基于硬件的调试特性,用于支持片上调试。    龙芯一号处理器IP核是在龙芯一号处理器基础上,对功耗、面积和性能等各方面进行改进而得到的高度灵活、适用于更广泛领域的处理器内核。它采用RISC架构,可运行MIPS III指令集,支持EJTAG调试功能,采用可配置架构,可在满足用户性能要求的前提下,实

3、现最低成本的产品集成。 1 EJTAG工作机制及实现11 EJTAG组成    所有MIPS的微处理器或是包含MIPS核的SoC芯片组件均提供对EJTAG调试的支持。EJTAG接口利用JTAG的TAP(Test Access Port)访问方式,将测试数据传入或者传出处理器核。EJTAG可实现的功能包括:访问处理器的寄存器、访问系统内存空间、设置软件硬件断点、单步多步执行等。如图1所示,EJTAG调试功能模块由4部分组成:CPU核内部的组件扩展,硬件断点单元,调试控制寄存器(DCR)以及TAP接口。12 EJTAG工作机制    处理

4、器在某个调试例外(debug exception,如单步运行、断点等)产生以后,进入到调试模式(debug mode),直到DERET指令执行以后从调试模式退出来。在这段时间里,处理器执行调试例外处理过程。在调试例外处理过程中,调试软件通过对TAP处理器的访问操作,实现了对普通寄存器的访问、协处理器的访问、系统内存空间的访问等功能。系统退出调试模式以后允许应用程序或是系统代码继续执行,直到遇到下一个调试例外。重复以上过程,EJTAG实现了单步运行或者多步运行等调试功能。121 调试例外    在体系结构的设计上,EJTAG并不需要与CPU紧密结合,但CPU必须提供

5、调试寄存器、进入调试模式和在调试模式下执行指令的能力,更重要的是调试例外的优先级必须高于其他处理器的例外(exception)。EJTAG调试是通过处理器的调试例外来实现的,调试例外将CPU从非调试模式(non-debug mode)转到调试模式。在调试模式下也可以再发生调试例外,这种例外就叫做“调试模式例外(debuIg mode exception)”。    MIPS 4KC处理器提供的调试例外如表1所列。    当CPU执行了软件断点指令(SDBBP),或者发生了单步调试,或者在EJTAG回路中产生了JtagBrk调试事件,或

6、者发生了硬件断点时,CPU就会产生调试例外。SDBBP是一个标准的MIPS指令集指令,软件断点的设置就是调试软件通过把正常的应用程序代码替换成软件断点指令来实现的。EJTAG支持指令断点和数据断点两种类型的硬件断点,指令断点发生在处理器取指过程中,数据断点发生加载存储传输过程中,它们可以设置在任何地址空间中,包括不能被改写的ROM空间。调试例外发生后,CPU首先屏蔽地址错误异常和中断异常,然后转向调试例外处理程序的执行。调试例外处理程序是由调试软件通过与TAP处理器的配合,利用EJTAG接口实现的。在调试模式下,CPU仍能够正常地访问协处理器和系统内存空间等处理器资源。  

7、  调试寄存器包括DEBUG寄存器、DEPC寄存器和DESAVE寄存器,都被定义在协处理器中。DEBUG寄存器保存了CPU进入调试模式的原因,以及同时是否发生了其他CPU例外的标志位,也被用来控制单步运行的设置。DEPC(Debug Exception Program Counter)寄存器保存了发生调试例外时将要执行的那条指令的地址,当退出调试模式后,该地址恢复到PC寄存器中。DESAVE (Debug Exception Save)寄存器是一个草稿寄存器,被调试软件用在对普通寄存器的处理过程中,该寄存器的内容不需要保存。122 调试例外处理过程   

8、 所有的调试例外都有相同的基本流程:    DEPC保存了中断返回后重新开始执行的指令PC值,设置DEBUG寄存器中的DBD位(表示DEBUG中断是否发生在分支延迟槽中)。如果不在延迟槽中,DEPC保存的就是当前的PC值;如果在延迟槽中,DEPC保存的就是那条跳转指令的PC值。    根据调试例外更新Debug寄存器中的内容DSS,DBp,DDBL,DDBS,DIB,DINT位)。    DEBUG寄存器中的DExcCode域变为非定义的。    DEBUG寄存器中的Halt

9、和Doze位更新。    在调试处理开始时设置IEXI位来确定是否精确中断。    DEBUG寄存器中的DM位设置为1。    处理器开始从调试例外向量取指令进行例外处理。    处理过程用程序描述如下:2 龙芯一号处理器IP核简介    龙芯一号处理器IP核是北京神州龙芯集成电路设计有限公司与中国科学院计算技术研究所共同研制的,兼顾通用及嵌入式CPU特点的32位处理器内核。龙芯一号处理器IP核具有可配置特性,用户可以根据自己的需求进行选择配置,

10、从而定制出最适合用户应用的处理器结构。图2显示了龙芯一号IP核的可配置结构,其中虚线部分表示用户可根据自己的需求进行选择配置,从而定制出最适合用户应用的处理器结构。    GS32S是龙芯一号处理器系列中的一款,采用RISC架构,可运行MIPS III指令集,有7级流水线,具有32位整数单元,典型工作频率为200266 MHz,典型功耗为05W。GS32S不含浮点部件(FPU)、媒体部件(MMX),以及哈佛结构SRAM接口。固定内核、EJTAG、TLB、Cache、AMBA接口和协处理器接口为固定配置。图2中的阴影部分为GS32S处理器的配置模块。3 GS32S处

11、理器EJTAG调试的实现31 TAP处理器的访问    GS32S CPU从EJTAG Probe取指执行,或向EJTAGProbe访问数据(LoadStore),实现处理器进入调试模式后的调试例外执行,整个处理过程需要调试软件通过Probe监测进行。在这种情况下,EJTAG的TAP就相当于一个从设备,TAP模块接收处理器内部对dmseg段进行的取指、LoadStore操作等发出的访问,等待外部响应。    GS32 CPU处于调试模式时,如果ProbEn有效,则对0xFF2000000xFF2FFFFF的访问转向dmseg段;如果P

12、robTrap有效,则发生调试例外的处理器转向0xFF200200取指。TAP处理器访问流程如图3所示。    发生调试例外时,如果DCR中的ProbTrap位是1,则GS32S CPU跳转到0xFF20 0200取指执行的过程如下:    处理器把PC值(如0xFF200200)送到TAP模块中的Address寄存器中。    处理器写TAP模块中的ECR寄存器,设置PrAcc=1,PRnW=0,Psz1:0=2。    处理器不停地测试PrAcc位,为1处于等待状态。&#

13、160;   EJTAGProbe选择ECR寄存器,串行移出其内容,看PrAcc 位是否为1。为1表示处理器等待通过TAP输入要执行的指令,同时也表示地址寄存器的值是有效的。    EJTAG Probe判断ECR寄存器的PRnW位,0表示读。    EJTAGProbe选择地址寄存器,并移出其内容。    EJTAG Probe选择数据寄存器,把对应于上一步地址的指令移入数据寄存器里。    EJTAG Probe选择ECR寄存器,把PrAcc位置0,其

14、他位保持不变,表示开始由处理器来执行数据寄存器中的指令。    处理器测试PrAcc值为0,把数据寄存器中的指令取走执行。    处理器把PC值加4,发出读下一条指令的命令,因为地址仍然在dmseg区域中,所以重复上面的过程,读入下一条指令。    由于流水线的存在,发生在dmseg内的LoadStore操作分2步进行。第1步,取指译指;第2步,将指定地址的数据装入寄存器将寄存器的数据装入指定地址。在指令执行过程中这2步之间会有间隙,为了获得正确的执行结果,需要检测Address寄存器里的内容是否为操作数

15、地址。若不是则插入nop指令,继续检测Address寄存器里的内容。32 与标准的EJTAG的差异性及应对措施    在实现GS32S EJTAG调试功能的过程中,发现GS32S处理器的EJTAG与标准EJTAG存在着差异性,因此需要调试软件针对这些差异性采取相应的应对措施。    (1)TAP状态机进入复位状态后异常    “Test-Logic-Reset”是TAP有限状态机16个状态中的其中之一。一般来说,在处理器复位后,TAP状态机会处于不确定的状态。为了使TAP状态机正常工作,需要在5个时钟周期

16、内,置高TDI输入,让TAP状态机进入“Test-Logic-Reset”的指定状态。GS32S处理器的TAP状态机在进入“Test-Logic-Reset”状态后,会改变3个寄存器的内容:清除DCR寄存器的ProbEn和ProbTrap位;置高协处理器Debug的DM位;修改协处理器DEPC的内容为0xBFC00500。然后处理器进入调试模式中,这样的结果会导致后继的调试过程被打断。    应对措施:调试软件限制TAP状态机进入“Test-LogiC-Reset”状态的时机与次数,并在TAP状态机进入“Test-Logic-Reset”状态后,进行必要的清理工作

17、。    (2)进入调试模式后PC的输出值高8位全为零    进入调试模式后,处理器会把PC值送到TAP模块中的Address寄存器中,而通过TAP模块输出的Address值高8位全为零。由于对发生在dmseg段内的LoadStore操作,调试软件会依据Address寄存器里的内容是否为操作数地址来判断LoadStore操作是否执行完毕,因此会发生比较总是失败的情况。    应对措施:该情况仅仅影响Address寄存器输出值的高8位数据(0xFFXXXXXX0x00XXXXX),因此可在判断Address寄存器数据是否等于操作数地址时,只比较低24位数据。    (3)未被正确初始化的处理器会进入死机状态    目标机上电后,处理器将从复位例外向量处取指令执行。如果复位向量处为随机数据或不完整的初始化代码,则处理器执行后将会进入死机状态,不再响应任何EJTAG的TAP处理器的访问。    应对措施:首先让EJTAG TAP执行EJTAGBOOT的命令,处理器复位后将会进入调试模式,此后即可使用TA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论