设计在CPU里的利用映像寄存器组支持“非侵入性”调试的方法技术

技术编号:2873965 阅读:250 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种设计在CPU里的利用映像寄存器组支持“非侵入性”硬件调试的方法。它是应用于嵌入式系统中支持“非侵入性”调试的一种设计方法。对于嵌入式系统的开发和调试具有重要的意义。这个设计的主要特点在于引入映像寄存器,来跟踪CPU的状态,或者通过映像寄存器,来设置CPU的状态。由于使用该映像寄存器不需要在CPU的内部电路中插入额外的扫描单元,不会对CPU的性能造成影响,同时,这种设计方法还具有很强的可伸展性,当CPU微结构复杂程度提高之后,如果需要观察响应的CPU内部状态,不会增加额外的硬件设计和软件设计的难度。(*该技术在2023年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及一种设计在CPU里的利用映像寄存器组支持“非侵入性”调试的方法
技术介绍
微处理器的调试接口是在处理器的开发系统上配置软件/硬件调试功能,通过处理器提供的硬件接口监视、跟踪、改变CPU内部的状态。随着软件/硬件系统复杂程度的提高,和缩短开发时间的需求,提供一个高效的、功能完善的调试接口对于提高系统开发的效率是非常重要的。到目前为止已经有一些策略可以支持嵌入式软件的开发和调试,方案大致可以划分为两类软件和硬件。软件的策略是通过在目标器件的ROM中装入监视程序,监视程序允许将目标代码串行地下载到RAM中,供给CPU执行。这种方法可以实现基本的CPU监视和系统运行控制,如单步调试、设置软件断点等。通过监视程序的方法存在的缺点是不能用软件断点来调试存入ROM中的代码,而且对于存储映像是“侵入性”的。硬件的策略是通过在CPU中集成相关的硬件电路,如跟踪单元、硬件断点单元、跳转目标地址FIFO等硬件电路,通过JTAG接口监视、跟踪并改变CPU的状态。这种方法的弥补了软件策略的缺点,并且允许系统开发人员监视目标系统的所有工作情况。硬件策略的实现的一种方法是在需要观测的电路周围插入扫描链,从而允许CPU外部通过JTAG接口设置CPU的工作状态,或者通过JTAG接口读取CPU的工作状态。这种做法的不足之处在于需要将扫描链单元安插于关键路径上,从而限制了CPU的性能提高;另外,随着CPU微结构复杂程度的提高,需要通过延长扫描链的方法来访问待观察的CPU内部状态,因此,这种方法也增加了硬件设计的难度;同时,当调试主机需要得到下一条指令时,需要在增加额外的数据通道来保存下一条指令的代码。
技术实现思路
本专利技术的目的是提供一种设计在CPU里的利用映像寄存器组支持“非侵入性”调试的方法。它的步骤如下1)当CPU进入调试模式的时候,执行单元负责将PC寄存器的内容送入PC寄存器映像;控制寄存器组将系统状态寄存器的内容送入CPU状态寄存器映像中;2)当CPU进入调试模式时,调试模块提取下一条指令代码;3)当CPU处于调试模式时,允许CPU不退出调试模式通过指令寄存器映像执行调试主机给出的指令,将调试控制/状态寄存器设置为指令的源操作数或者目标操作数;4)当CPU退出调试模式时,通过设置PC寄存器映像来设置指令执行的起始地址,通过CPU状态寄存器映像设置程序运行的状态。本专利技术的优点是这个机制的逻辑含量并不高,对CPU芯片的大小的影响很小,因而不会增加CPU芯片的成本。而且本专利技术的逻辑不在CPU的时序关键路径上,不影响CPU的运行最高频率。同时,这个机制可伸缩性强,当CPU微结构复杂度提高之后,只需要增加相应的影响寄存器来观察CPU的内部状态,而不会提高CPU设计的复杂度。附图说明图1显示了典型调试系统的结构框图;图2是本专利技术的含有调试模块的CPU内部结构框图;图3a是本专利技术的PC寄存器映像和指令寄存器映像使用原理图;图3b是本专利技术中操作数寄存器映像和调试控制/状态寄存器映像的原理图;图4是本专利技术中CPU进入调试模式时数据的流向5是本专利技术中CPU不退出调试模式执行指令的流程图具体实施方式本专利技术基本特点在于使用映像寄存器组支持“非侵入性”的调试,其实现方法概括如下1)在CPU的调试模块中定义一组特殊数据通道的映像寄存器,包括指令寄存器映像、操作数寄存器映像、PC寄存器映像、调试控制/异常状态寄存器映像、CPU状态寄存器映像;2)调试主机通过JTAG结构来设置该映像寄存器组,并且JTAG接口读取该映像寄存器组而得知CPU的信息;3)当CPU进入调试模式时,CPU直接将下一条指令的地址保存到PC寄存器映像;将CPU状态寄存器保存到调试模块中的CPU状态寄存器映像;4)当CPU进入调试模式之后,为了不增加额外的硬件开销,将由调试模块控制指令高速缓存,取得下一条指令代码,保存在指令寄存器映像中;如果访问指令告诉缓存产生异常,将异常写入调试控制/异常状态寄存器;5)CPU可以不退出调试模式执行调试主机给出的指令时,此时,需要通过指令寄存器映像来设置CPU将要执行的指令;同时,调试模块负责产生响应的控制信号,使得执行单元完成该指令之后,让CPU维持在调试模式下,而不执行其他的指令;5)当CPU不退出调试模式执行调试主机给出的指令时,通过调试控制/状态寄存器将操作数寄存器映像设置为源操作数还是目标操作数;6)退出调试模式时,通过设置该寄存器组中的PC寄存器映像来设置程序开始运行的起始地址;通过设置该寄存器组中的CPU状态寄存器映像来设置CPU运行的状态;本专利技术提出了一个新颖的设计方法来支持CPU硬件调试。为对本专利技术做更好的说明,本说明书将对CPU的调试系统做一个简短的介绍,并以它作为本专利技术的解析。但本专利技术对各种CPU具有通用性。图1显示了一个简化的调试系统结构框图。一个调试系统大致由高层调试工具单元33、调试主机单元34、协议转换器35、调试接口与调试逻辑单元17和待调试CPU单元1组成。单元33是调试系统与用户的接口,主要用于发出高层的调试命令;单元34是运行调试工具33的计算机,单元34允许发出单元33给出的高级调试命令,提供给底层的协议转换器;单元35是用于将单元34发出的高层命令转换为JTAG接口协议;下面对高层调试命令的执行过程做一个简短的介绍。其步骤可大致分为1)单元33发出高层调试指令,如设置断点、进行指令跟踪、检查通用寄存器组内容等命令交给单元34。2)单元34将单元33发出的高层命令送到端口上。3)单元35将单元34发出的指令转换到JTAG协议,通过目标调试系统的JTAG接口将单元34发出的高层命令串行地送入目标调试系统的相关寄存器中。4)单元1根据单元35发出的命令,执行相关的指令或者命令,从而完成一条高层调试命令的执行。在目标调试系统中,为了让调试主机能够通过JTAG接口访问到单元1的运行结果并且能够控制单元1的运行状态,通常的做法是将扫描链安插在需要观察的数据通道周围,使得调试主机的命令可以通过JTAG接口串行地输入到这些特殊数据通道,并且可以通过JTAG接口将数据通道的内容串行地送入调试主机。这种做法需要将扫描链单元放置在CPU的关键路径上,从而延长了关键路径的时延,限制了CPU性能的提高。映像寄存器组在本专利技术中定义为能够给调试主机提供一些重要的CPU信息的,但不会对程序正常运行造成映像的一组寄存器。映像寄存器组的使用是本专利技术的关键。本专利技术的具体实施例可以参见图2、图3a、图3b。本专利技术所需要的逻辑单元包括方框19和部分方框36的逻辑,参见图2和图3a。它包括1)一组CPU特殊寄存器的映像寄存器19,包括指令寄存器映像单元20、调试控制/状态寄存器映像单元21、CPU状态寄存器映像单元22、PC寄存器映像单元23、操作数寄存器映像单元24;2)一个地址选择器单元8;3)一个指令选择器单元28;4)一个与门单元37。为了讨论方便,将图2细分为图3-a和图3-b如图3-a所示,为了不增加额外的硬件开销来取得下一条指令代码,本专利技术通过在进入调试模式时,由调试模块直接访问并控制指令提取单元的方法来取得下一条指令代码,如图4所示,其实现的步骤可概括为1)执行单元响应调试模块的调试请求,并清空指令退出FIFO中的指本文档来自技高网
...

【技术保护点】
一种设计在CPU里的利用映像寄存器组支持“非侵入性”调试的方法,其特征在于,它的步骤如下: 1)当CPU进入调试模式的时候,执行单元从指令发射FIFO中提取下一条指令的PC,送入PC寄存器映像;控制寄存器组直接将系统状态寄存器的内容送入CPU状态寄存器映像中; 2)当CPU进入调试模式时,调试模块负责发起提取下一条指令,调试控制/状态寄存器将保存访问数据存储区发生的异常; 3)当CPU处于调试模式时,允许CPU不退出调试模式通过指令寄存器映像执行调试主机给出的指令,将由调试控制/状态寄存器控制操作数寄存器映像设置为指令的源操作数或者目标操作数; 4)当CPU退出调试模式时,通过设置PC寄存器映像来设置指令执行的起始地址,通过CPU状态寄存器映像设置程序运行的状态。

【技术特征摘要】

【专利技术属性】
技术研发人员:陈必龙王界兵严晓浪
申请(专利权)人:杭州中天微系统有限公司
类型:发明
国别省市:86[中国|杭州]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利