首页> 中国专利> 带特殊功能寄存器断点的增强型微处理器片上动态跟踪方法

带特殊功能寄存器断点的增强型微处理器片上动态跟踪方法

摘要

本发明涉及一种带特殊功能寄存器断点的增强型片上动态跟踪方法。本方法通过一个集成在微处理器内部的独立的带有SFR断点功能的增强型片上调试模块,可以将程序执行过程中的某些位置或特殊功能寄存器设置为断点,然后对这些断点处的内部寄存器的信息进行跟踪,记录和实时输出。并通过添加调试使能信号来实现调试模式和正常运行模式的切换。本发明的方法可应用于8051系列微处理器领域,亦可应用于其他微处理器领域。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-11-09

    未缴年费专利权终止 IPC(主分类):G06F11/36 授权公告日:20090708 终止日期:20150927 申请日:20070927

    专利权的终止

  • 2009-07-08

    授权

    授权

  • 2008-07-09

    实质审查的生效

    实质审查的生效

  • 2008-05-14

    公开

    公开

说明书

技术领域

本发明涉及一种带特殊功能寄存器断点的增强型微处理器片上动态跟踪方法,支持在线调试功能,包括单步调试,地址断点和SFR特殊功能寄存器断点的设置和检测,以及微处理器内部寄存器的查看和修改等。可应用于8051系列的单片微处理器,也可应用于其他微处理器、微处理器领域。

背景技术

动态跟踪(Dynamic Trace)是指实时地记录程序运行的轨迹信息,并把这些信息通过某种手段传送到外部的调试工具进行分析和调试的过程。在大多数的逻辑分析仪和在线仿真器等设备中,都有用于动态跟踪处理器运行轨迹的跟踪部件,用来监测处理器的各种内部信息,这样调试者就可以方便地检测程序执行流程、查找程序错误、重构程序运行轨迹等。

摩托罗拉公司最早认识到OCD技术这个发展趋势,并率先在683xx和68HC16处理器上创造了BDM调试接口。而MIPS、Intel、IBM和ARM等实现了基于JTAG标准的串行调试接口。尽管BDM和JTAG调试接口这两者在实现的细节上相差很远,但是从用户的角度看,它们提供相似的调试功能。由于JTAG是IEEE的国际标准,当前绝大多数CPU厂商都用它来实现处理器的片上调试逻辑。现有的片上调试技术依赖于特定结构的实现,对处理器核改动较大,需占用较多资源,实现起来不够方便;同时现有的片上调试技术一般只能实现程序地址断点和单步执行等调试功能,而特殊功能寄存器(SFR-special functionregister)是微处理器的重要组成部分,在微处理器中起着重要的作用,实时了解特殊功能寄存器的运行状态对于用户来说十分重要,所以实现SFR断点十分必要。

发明内容

本发明的目的在于提供一种带SFR断点功能的增强型微处理器的片上动态跟踪方法。通过一个集成在微处理器内部的独立的带有SFR断点功能的增强型片上调试模块(Enhanced OCD module with SFR Breakpoint Function:E-OCD-SFR-B),可以将程序执行过程中调试者关心的一些位置或SFR设置为断点(breakpoint),并对这些位置的信息进行跟踪、记录和实时地输出,以实现动态跟踪的目的。而且整个过程不需要专门的跟踪缓冲单元,只需少量的寄存器就能满足数据的暂存要求。并通过添加外部调试使能信号实现调试和正常运行状态的切换。

为达到上述目的,本发明的构思如下:

构建一个集成在处理器内部的带有SFR断点功能的增强型片上调试模块(EnhancedOCD module with SFR Breakpoint Function:E-OCD-SFR-B),通过这个模块将程序执行过程中的某些位置或SFR标记为观察点。E-OCD-SFR-B通过外部的调试使能信号(DBG_enable)的设置,可以实现调试模式和正常工作模式的自由切换。调试使能信号(DBG_enable)保持低电平,正常在工作模式下,E-OCD-SFR-B不干预处理器的工作;调试使能信号(DBG_enable)变为高电平,允许进行调试,调试模式又可以分为地址比较模式和SFR断点模式。1)地址比较模式:在程序执行的过程中,将每条指令的地址与断点寄存器(breakpoint register)值进行比较来检测观察点。如果有观察点被检测到,则输出符合信号到时钟模块,系统时钟(clk)暂停,从而达到暂停微处理器运行的目的,调试时钟(DBG_clk)开始运行,此时将预先设定选择好的内部寄存器的信息输出到指定的输出寄存器(desired_SFR)中。若数据输出完毕,则设置外部调试使能信号为低电平,恢复程序的执行。2)SFR断点模式:选择特定的SFR,程序运行过程中,将此SFR中的值与断点寄存器值进行比较。如果有观察点被检测到,则输出符合信号到时钟模块,系统时钟(clk)暂停,从而达到暂停微处理器运行的目的,调试时钟(DBG_clk)开始运行,此时将预先设定选择好的内部寄存器的信息输出到指定的输出寄存器(desired_SFR)中。若数据输出完毕,则设置外部调试使能信号为低电平,恢复程序的执行。

根据上述构思,本发明采用下述技术方案:

增强型片上调试方法,其特征在于实现一般片上的单步执行、地址断点调试功能的同时,添加SFR断点功能,实现SFR的完全可控制性和可观察性,因此将调试模式分为地址比较模式和SFR断点模式两种,其具体步骤为:

a.设定一个调试命令寄存器模块DBG_command,用于产生调试所需的命令,控制调试的起始和方式。

在调试模块的调试命令寄存器DBG_command中选择断点模式为地址比较模式或SFR断点模式,选择需要输出的特殊功能寄存器。如果选择地址比较模式,可以设定断点为当前地址或断点寄存器指定的地址;若选择SFR断点模式,还需设定选择哪个SFR作为断点;

b.在断点寄存器breakpoint register写入值。

c.若选择地址比较模式,将程序计数器指针PC与预设的断点寄存器值进行比较,相等则停止微处理器的运行,并将预设的特殊功能寄存器的值输出到输出SFR寄存器desired_SFR;

d.若选择SFR断点模式,将选定的SFR值与预设的断点寄存器值进行比较,若相同则停止微处理器的运行,并将预设的特殊功能寄存器的值输出到输出SFR寄存器desired_SFR;

e.通过设置外部的调试使能DBG_en信号为高电平来启动动态跟踪过程,满足设置条件,进入调试状态,这时只需将调试使能DBG_en信号设置为低电平就可以恢复到原来的正常运行状态。

上述的设定一个调试命令寄存器DBG_command的方法为:

定义DBG_command为一个8位的寄存器,它被用来存储调试命令的二进制编码,并将接收到的调试命令译码为相应的控制信号。

DBG_command的格式见说明书附图表1。其中,DBG_command中没有用到的其他二进制编码暂时保留,可以在以后进行扩展。

SFR_output_select——选择进入调试模式后需要输出的特殊功能寄存器。

这里设定了三位,所以可以在8个SFR中进行选择;选择格式如说明书附图表2所示。

SFR_select——在SFR断点模式下,选择哪个SFR作为断点比较。

这里定义了两位,所以可以在4个SFR中进行选择,选择格式如说明书附图表3所示。

PC_break——与SFR_output_select高两位复用,在地址比较模式,选择断点的地址,选择格式如说明书附图表4所示。

single_step——单步运行标志位。

mode——断点模式选择标志位。0为地址比较模式;1为SFR断点模式

在SFR断点模式下,需要设置模式选择位、作为断点比较的SFR以及需要输出的SFR。

start——调试开始标志位。在此位置1,表明调试开始。

上述的设定设置断点寄存器(breakpoint_register)值的方法为:预先定义一个未被定义的特殊功能寄存器,将其定义为断点寄存器,将设定的断点值写入该断点寄存器即可。

上述在片上调试的过程中根据情况进行动态跟踪操作有如下两种:

a)第一种是地址断点模式,即将程序指针PC与预设的断点寄存器值进行比较,如果相等,触发断点条件,输出符合信号给时钟生成模块,停止微处理器核的时钟运行,同时调试时钟开始工作,将需要观察的特殊功能寄存器的值输出到输出寄存器,等待下一步的处理。

b)第二种是SFR断点模式,即将选定的SFR值与预设的断点寄存器值进行比较,如果相等,触发断点条件,输出符合信号给时钟生成模块,停止微处理器核的时钟运行,同时调试时钟开始工作,将需要观察的特殊功能寄存器的值输出到输出寄存器,等待下一步的处理。

上述在片上调试的过程中根据情况进行调试模式和正常运行模式自由切换的操作方法为:

为方便实现两种工作方式的自由切换,添加调试使能(DBG_enable)信号。

a)从正常运行模式进入调试模式:必须设置DBG_enable信号为高电平,否则调试命令寄存器(DBG_command)不起作用;

b)从调试模式恢复到正常运行模式:只需设置DBG_enable信号为低电平,就可以方便地恢复微处理器的正常运行。

本发明与现有技术相比较,具有如下显而易见的突出实质性特点和显著优点:本发明通过一个集成在微处理器内部的独立的带SFR断点功能的增强型片上调试模块,将程序执行过程中的某些位置和特殊功能寄存器设置为断点,然后对这些断点处的内部寄存器的信息进行跟踪,记录和实时输出以实现动态跟踪的目的。并通过添加调试使能信号来实现调试模式和正常工作模式的切换。本发明整个过程不需要专门的跟踪缓冲单元,只需少量的寄存器就能满足数据的暂存要求。本发明适用于8051系列微处理器,且适用于其他微处理器领域。

附图说明:

图1是带有SFR断点功能的增强型片上调试的工作流程图。

图2是断点模块的内部结构示意图。

图3是时钟生成模块。

具体实施方式

本发明的一个优选实施例结合附图详述如下:

本微处理器的片上动态跟踪方法,通过一个带有SFR断点功能的增强型片上调试模块(Enhanced OCD module with SFR Breakpoint Function:E-OCD-SFR-B),采用下述的工作流程(见图1)来实现对处理器运行过程的动态跟踪:

a)如果保持调试使能信号(DBG_enable)为低电平,则此时调试命令寄存器(DBG_command)不起作用,微处理器正常运行。如果要进行调试,设置调试使能信号(DBG_enable)为高电平。

b)向调试命令寄存器(DBG_command)写入初值,调试命令寄存器格式说明如附图表1所示。本设计中,首先定义了调试开始标志位start,如果对该标志位置1,表明调试的开始。设定开始标志位的原因是:如果没有该调试开始标志位,因为调试寄存器(breakpoint_register)的默认值是全0,一旦调试使能信号变为高电平,如果此时PC或选定的SFR值为0,则触发断点条件,这样就带来非预想的断点,降低了该片上调试单元的正确性。本设计中,对于SFR断点的选择(SFR_select)定义了两位,即能对4个特殊功能寄存器进行选择,这里设置为常用的累加器(ACC-Accumulator)、堆栈(SP-Stack Point)、状态(PSW-ProgramStatusWord)、P0(port 0)。对于输出SFR的选择定义了三位,即能从8个SFR中进行输出选择,这里设置为常用的堆栈(SP-Stack Point)、累加器(Acc-Accumulator)、状态寄存器(PSW-ProgramStatusWord)、B寄存器、P0(port0)、P1(port 1)、P2(port 2)、P3(port 3)。模式选择位(mode)选择断点模式,置0时选择地址断点模式,置1时选择SFR断点模式。本设计中,将调试命令寄存器(DBG_command)的高两位复用,用于在地址比较模式进行作为断点的地址选择位(PC_break)。PC_break等于01,选择当前PC为断点,这种模式的优点就是可以在程序中自由选择任何感兴趣的位置设置断点,比较适合在对程序的运行不是很了解的使用者;PC_break等于10,选择指定的PC作为断点,当程序运行到这个特定的地址时,断点条件就触发,进入调试阶段。

c)将预定的值写入断点寄存器(breakpoint_register),如图2所示,等待比较;断点寄存器因为断点模式的不同选择而不同,如果选择是地址比较模式的当前地址比较模式,则原理上此时是将当前地址与断点寄存器进行比较,实际上两者相同,所以直接触发满足信号(match)即可;如果选择地址比较模式的指定地址比较模式,即选择程序计数器(PC)和断点寄存器值进行比较,此时断点寄存器为16bit;如果是SFR断点模式,选择SFR和断点寄存器值进行比较,此时断点寄存器为8bit。

d)调试使能信号的设置可以实现调试模式和正常工作模式的自由切换。如果调试使能信号保持低电平,则微处理器正常工作。将外部调试使能信号DBG_enable置为高电平,允许进行断点比较。

e)图2中的比较器(compare)将断点寄存器的值和地址或选定的SFR值进行比较。比较器的结构是一组异或门电路,如果两组信号如果相同,则断点条件满足,符合信号(match)变为高电平,并将此信号输出到时钟生成模块;在地址比较的当前地址模式,不用比较器,直接输出match信号;

f)时钟信号是微处理器运行的基础,所以片上调试的最主要的就是实现时钟信号的可控制性。图3中的时钟生成模块可见,若match信号为低电平,则表明断点条件此时没有满足,系统时钟(clk)在与match信号相或后,仍然正常工作;如果match信号为高电平,则此时表明断点条件已经触发,进入调试模式,需要暂停微处理器的运行,match信号与系统时钟信号相或后,输出时钟变为始终是高电平,微处理器的运行停止。

g)在触发断点条件后,可以将需要观察的信号输出到输出寄存器(desired_SFR),因为此时系统时钟已经停止运行,所以需要在时钟生成模块添加调试时钟(DBG_clk),在调试时钟信号作用下,将需要观察的信号值输出。这样就对内部SFR做到了完全的可见性,实现了片上调试的初衷。优点是不需要添加额外的外部专用电路就可以实现对微处理器运行以及特殊功能寄存器的可控制性和可见性。

h)当需要从调试模式重新恢复到正常运行状态时,只需要将调试使能信号(DBG_enable)设置为低电平,DBG_enable为低电平,则调试命令寄存器(DBG_command)值为全0,调试命令寄存器此时无效,程序恢复执行。

上述的调试命令寄存器DBG_command格式如表1所示,SFR输出选择格式如表2所示,SFR断点选择格式如表3所示,地址断点格式如表4所示。

表1

  Bit7 Bit6  Bit5    Bit4    Bit3 Bit2  Bit1  Bit0  SFR_  output_  select.2  或  PC_break.1 SFR_ output_ select.1 或 PC_break.0  SFR_  output_  select.0    SFR_    select.1    SFR_    select.0 Single _step  mode  start  R/W R/W  R/W    R/W    R/W R/W  R/W  R/W  0 0  0    0    0 0  0  0

表2

   SFR_output_select 代码说明   000 desired_SFR<=SP;选择堆栈为输出   001 desired_SFR<=acc;选择累加器输出   010 desired_SFR<=PSW;选择状态寄存器输出   011 desired_SFR<=B;选择B寄存器输出   100 desired_SFR<=p0;选择p0口输出   101 desired_SFR<=p1;选择p1口输出   110 desired_SFR<=p2;选择p2口输出   111 desired_SFR<=p2;选择p3口输出

表3

 SFR_select代码说明 00DBG_data_in<=acc选择累加器值为断点 01DBG_data_in<=SP;选择堆栈值为断点 10DBG_data_in<=PSW;选择状态寄存器值为断点 11DBG_data_in<=p0;选择p0口值为断点

表4

 PC_break说明 01选择当前程序地址为断点 10选择断点寄存器内的值作为断点

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号