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

文档序号:6572878阅读:204来源:国知局

专利名称::带特殊功能寄存器断点的增强型微处理器片上动态跟踪方法
技术领域
:本发明涉及一种带特殊功能寄存器断点的增强型微处理器片上动态跟踪方法,支持在线调试功能,包括单步调试,地址断点和SFR特殊功能寄存器断点的设置和检测,以及微处理器内部寄存器的査看和修改等。可应用于8051系列的单片微处理器,也可应用于其他微处理器、微处理器领域。
背景技术
:动态跟踪(DynamicTrace)是指实时地记录程序运行的轨迹信息,并把这些信息通过某种手段传送到外部的调试工具进行分析和调试的过程。在大多数的逻辑分析仪和在线仿真器等设备中,都有用于动态跟踪处理器运行轨迹的跟踪部件,用来监测处理器的各种内部信息,这样调试者就可以方便地检测程序执行流程、査找程序错误、重构程序运行轨迹等。摩托罗拉公司最早认识到OCD技术这个发展趋势,并率先在683xx和68HC16处理器上创造了BDM调试接口。而MIPS、Intel、IBM和ARM等实现了基于JTAG标准的串行调试接口。尽管BDM和JTAG调试接口这两者在实现的细节上相差很远,但是从用户的角度看,它们提供相似的调试功能。由于JTAG是IEEE的国际标准,当前绝大多数CPU厂商都用它来实现处理器的片上调试逻辑。现有的片上调试技术依赖于特定结构的实现,对处理器核改动较大,需占用较多资源,实现起来不够方便;同时现有的片上调试技术一般只能实现程序地址断点和单步执行等调试功能,而特殊功能寄存器(SFR—specialfunctionregister)是微处理器的重要组成部分,在微处理器中起着重要的作用,实时了解特殊功能寄存器的运行状态对于用户来说十分重要,所以实现SFR断点十分必要。
发明内容本发明的目的在于提供一种带SFR断点功能的增强型微处理器的片上动态跟踪方法。通过一个集成在微处理器内部的独立的带有SFR断点功能的增强型片上调试模块(EnhancedOCDmodulewithSFRBreakpointFunction:E-OCD-SFR-B),可以将程序执行过程中调试者关心的一些位置或SFR设置为断点(breakpoint),并对这些位置的信息进行跟踪、记录和实时地输出,以实现动态跟踪的目的。而且整个过程不需要专门的跟踪缓冲单元,只需少量的寄存器就能满足数据的暂存要求。并通过添加外部调试使能信号实现调试和正常运行状态的切换。为达到上述目的,本发明的构思如下构建一个集成在处理器内部的带有SFR断点功能的增强型片上调试模块(EnhancedOCDmodulewithSFRBreakpointFunction:E-OCD-SFR-B),通过这个模块将程序执行过程中的某些位置或SFR标记为观察点。E-OCD-SFR-B通过外部的调试使能信号(DBG^nable)的设置,可以实现调试模式和正常工作模式的自由切换。调试使能信号(DBG一enable)保持低电平,正常在工作模式下,E-OCD-SFR-B不干预处理器的工作;调试使能信号(DBG—enable)变为高电平,允许进行调试,调试模式又可以分为地址比较模式和SFR断点模式。1)地址比较模式在程序执行的过程中,将每条指令的地址与断点寄存器(breakpointregister)值进行比较来检测观察点。如果有观察点被检测到,则输出符合信号到时钟模±央,系统时钟(clk)暂停,从而达到暂停微处理器运行的目的,调试时钟(DBG一clk)开始运行,此时将预先设定选择好的内部寄存器的信息输出到指定的输出寄存器(desirecLSFR)中。若数据输出完毕,则设置外部调试使能信号为低电平,恢复程序的执行。2)SFR断点模式选择特定的SFR,程序运行过程中,将此SFR中的值与断点寄存器值进行比较。如果有观察点被检测到,则输出符合信号到时钟模块,系统时钟(clk)暂停,从而达到暂停微处理器运行的目的,调试时钟(DBG一clk)开始运行,此时将预先设定选择好的内部寄存器的信息输出到指定的输出寄存器(desired—SFR)中。若数据输出完毕,则设置外部调试使能信号为低电平,恢复程序的执行。根据上述构思,本发明采用下述技术方案增强型片上调试方法,其特征在于实现一般片上的单步执行、地址断点调试功能的同时,添加SFR断点功能,实现SFR的完全可控制性和可观察性,因此将调试模式分为地址比较模式和SFR断点模式两种,其具体步骤为a.设定一个调试命令寄存器模块DBG—command,用于产生调试所需的命令,控制调试的起始和方式。在调试模块的调试命令寄存器DBG一command中选择断点模式为地址比较模式或SFR断点模式,选择需要输出的特殊功能寄存器。如果选择地址比较模式,可以设定断点为当前地址或断点寄存器指定的地址;若选择SFR断点模式,还需设定选择哪个SFR作为断点;b.在断点寄存器breakpointregister写入值。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——调试开始标志位。在此位置l,表明调试开始。上述的设定设置断点寄存器(breakpoint—register)值的方法为预先定义一个未被定义的特殊功能寄存器,将其定义为断点寄存器,将设定的断点值写入该断点寄存器即可。上述在片上调试的过程中根据情况进行动态跟踪操作有如下两种a)第一种是地址断点模式,即将程序指针PC与预设的断点寄存器值进行比较,如果相等,触发断点条件,输出符合信号给时钟生成模块,停止微处理器核的时钟运行,同时调试时钟开始工作,将需要观察的特殊功能寄存器的值输出到输出寄存器,等待下一步的处理。b)第二种是SFR断点模式,即将选定的SFR值与预设的断点寄存器值进行比较,如果相等,触发断点条件,输出符合信号给时钟生成模块,停止微处理器核的时钟运行,同时调试时钟开始工作,将需要观察的特殊功能寄存器的值输出到输出寄存器,等待下一步的处理。上述在片上调试的过程中根据情况进行调试模式和正常运行模式自由切换的操作方法为为方便实现两种工作方式的自由切换,添加调试使能(DBG_enable)信号。a)从正常运行模式进入调试模式必须设置DBG一enable信号为高电平,否则调试命令寄存器(DBG—command)不起作用;b)从调试模式恢复到正常运行模式只需设置DBG—enable信号为低电平,就可以方便地恢复微处理器的正常运行。本发明与现有技术相比较,具有如下显而易见的突出实质性特点和显著优点本发明通过一个集成在微处理器内部的独立的带SFR断点功能的增强型片上调试模块,将程序执行过程中的某些位置和特殊功能寄存器设置为断点,然后对这些断点处的内部寄存器的信息进行跟踪,记录和实时输出以实现动态跟踪的目的。并通过添加调试使能信号来实现调试模式和正常工作模式的切换。本发明整个过程不需要专门的跟踪缓冲单元,只需少量的寄存器就能满足数据的暂存要求。本发明适用于8051系列微处理器,且适用于其他微处理器领域。图1是带有SFR断点功能的增强型片上调试的工作流程图。图2是断点模块的内部结构示意图。图3是时钟生成模块。具体实施例方式本发明的一个优选实施例结合附图详述如下本微处理器的片上动态跟踪方法,通过一个带有SFR断点功能的增强型片上调试模块(EnhancedOCDmodulewithSFRBreakpointFunction: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—StackPoint)、状态(PSW—ProgramStatusWord)、P0(port0)。对于输出SFR的选择定义了三位,即能从8个SFR中进行输出选择,这里设置为常用的堆栈(SP—StackPoint)、累加器(Acc—Accumulator)、状态寄存器(PSW—ProgramStatusWord)、B寄存器、P0(port0)、Pl(portl)、P2(port2)、P3(port3)。模式选择位(mode)选择断点模式,置0时选择地址断点模式,置1时选择SFR断点模式。本设计中,将调试命令寄存器(DBGjommand)的高两位复用,用于在地址比较模式进行作为断点的地址选择位(PC—break)。PC_break等于Ol,选择当前PC为断点,这种模式的优点就是可以在程序中自由选择任何感兴趣的位置设置断点,比较适合在对程序的运行不是很了解的使用者;PC—break等于10,选择指定的PC作为断点,当程序运行到这个特定的地址时,断点条件就触发,进入调试阶段。c)将预定的值写入断点寄存器(breakpointjegister),如图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断点选择格式如表f所示,地址断点格式如表4所示。表1<table>tableseeoriginaldocumentpage10</column></row><table>表2<table>tableseeoriginaldocumentpage11</column></row><table>权利要求1.一种带SFR断点的增强型微处理器片上动态跟踪方法,其特征在于通过一个集成在微处理器内部的独立的带SFR断点功能的增强型片上调试模块,将程序执行过程中的某些位置程序地址或某些SFR设置为观察点,然后对这些观察点处指定的信息进行跟踪、记录和实时的输出;其具体步骤为a.设定一个调试命令寄存器模块DBG_command,用于产生调试所需的命令,控制调试的起始和方式;在调试模块的调试命令寄存器DBG_command中选择断点模式为地址比较模式或SFR断点模式,选择需要输出的特殊功能寄存器。如果选择地址比较模式,可以设定断点为当前地址或断点寄存器指定的地址;若选择SFR断点模式,还需设定选择哪个SFR作为断点;b.在断点寄存器breakpointregister写入值;c.若选择地址比较模式,将程序计数器指针PC与预设的断点寄存器值进行比较,相等则停止微处理器的运行,并将预设的特殊功能寄存器的值输出到输出SFR寄存器desired_SFR;d.若选择SFR断点模式,将选定的SFR值与预设的断点寄存器值进行比较,若相同则停止微处理器的运行,并将预设的特殊功能寄存器的值输出到输出SFR寄存器desired_SFR;e.通过设置外部的调试使能DBG_en信号为高电平来启动动态跟踪过程,满足设置条件,进入调试状态,这时只需将调试使能DBG_en信号设置为低电平就可以恢复到原来的正常运行状态。2.根据权利要求1所述的带SFR断点的增强型微处理器片上动态跟踪方法,其特征在于所述的步骤a中设置调试模块的调试命令寄存器DBG—command的方法为定义DBG_command为一个8位的寄存器,它被用来存储调试工具所发出的调试命令的二进制编码,并将接收到的调试命令译码为相应的控制信号。根据不同的工作方式设定DBG一command:如果工作在地址比较模式,方式选择位mode置0;地址选择位PC—break等于01时选择当前地址,等于10时选择指定的地址;调试开始标志位start置l时调试开始,置零时调试结束。如果工作在SFR断点模式,方式选择位mode置1;输出SFR的选择位SFR_output—select定义了3位,可以在8个不同的SFR中选择;SFR断点选择位SFR—select定义了两位,可以在4个不同的SFR中选择哪个作为断点;单步运行标志single—step置1时,单步运行。3.根据权利要求1所述的带SFR断点的增强型微处理器片上动态跟踪方法,其特征在于所述的步骤b中的断点寄存器的设置方法为如果工作方式选择为地址比较模式,则此时的断点寄存器为16bit,如果工作方式选定为SFR断点模式,则断点寄存器为8bit。4.根据权利要求1所述的带SFR断点的增强型微处理器的片上动态跟踪方法,其特征在于所述的步骤c中的地址比较模式工作的方法为微处理器按照程序地址指针PC运行,所以地址比较的模式就是将PC的值与断点寄存器的值进行比较,当PC运行到特定的地址,即与断点寄存器值相同时,输出符号信号到时钟模块,暂停微处理器的运行,同时调试时钟开始工作。在调试时钟下,将所需察看的特殊功能寄存器值输出到输出寄存器desired—SFR。5.根据权利要求1所述的带SFR断点的增强型微处理器的片上动态跟踪方法,其特征在于所述的步骤d中的SFR断点模式工作的方法为首先,在DBG—command寄存器中设置需要设置为断点的SFR;因为在DBG—command寄存器中定义了了两位用于断点SFR的选择,所以一共可以在4个常用的SFR中进行选择;选择断点SFR后,若将选定的SFR中的值与断点寄存器进行比较,若相等,则触发断点条件,输出符号信号到时钟模块,微处理器暂停运行,进入调试模式;同时调试时钟开始工作;在调试时钟下,将所需察看的特殊功能寄存器值输出到输出寄存器desired—SFR;。6.根据权利要求1所述的带SFR断点的增强型微处理器的片上动态跟踪方法,其特征在于所述的步骤e中的调试模式和正常运行模式切换的方法为正常模式下,微处理器正常运行,若完成以下的工作,则进入调试模式。首先,设定调试使能信号,如果此时信号值设定为"1",则进入调试模式,此时再向调试命令寄存器输入特定的值,此时调试命令寄存器中的调试开始标志位置1时调试开始,当微处理运行到特定的触发条件时,则进行相应的调试处理;从调试状态恢复到正常运行状态,只需将调试使能信号置为低电平即可。全文摘要本发明涉及一种带特殊功能寄存器断点的增强型片上动态跟踪方法。本方法通过一个集成在微处理器内部的独立的带有SFR断点功能的增强型片上调试模块,可以将程序执行过程中的某些位置或特殊功能寄存器设置为断点,然后对这些断点处的内部寄存器的信息进行跟踪,记录和实时输出。并通过添加调试使能信号来实现调试模式和正常运行模式的切换。本发明的方法可应用于8051系列微处理器领域,亦可应用于其他微处理器领域。文档编号G06F11/36GK101178685SQ20071004653公开日2008年5月14日申请日期2007年9月27日优先权日2007年9月27日发明者峰冉,频吴,宣祥光,张科新,胡越黎,陈应植申请人:上海大学;上海飞乐股份有限公司;上海沪工汽车电器有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1