嵌入式处理器的跟踪调试方法

文档序号:6471309阅读:303来源:国知局

专利名称::嵌入式处理器的跟踪调试方法
技术领域
:本发明涉及嵌入式处理器的跟踪调试领域,是实现嵌入式系统的跟踪调试的一种方法。
背景技术
:目前国际上实现跟踪的方法有Nexus标准和ARM的片上调试技术,但是JTAGIEEE1149.1标准只能提供一种静态的调试方法,如处理器的启动和停止、软件断点、单步执行、修改寄存器,而不能提供处理器实时运行时的信息。需要对JTAG的基本功能进行了加强和扩展Nexus将调试开发分成四级,从第一级开始,每级的复杂度都在增加,并且上级功能覆盖下一级。第一级使用JTAG的简单静态调试;第二级支持编程跟踪和实时多任务的跟踪,用户用1/0引脚作为多路复用辅助调试口;第三级包括处理器运行时的数据写入跟踪和存储器的读写跟踪;第四级增加了存储替换并触发复杂的硬件断点。但是Nexus标准比较抽象,实际实现技术难度比较高。ARM处理器中采用的片上调试技术(on-chipdebugger)。片上调试技术通过在芯片的硬件逻辑中加入调试模块,在一定的条件下实现实时跟踪和分析。目前国内芯片实现跟踪功能的比较少,调试手段主要还是静态调试。通过断点和单步把处理器暂停,进行读写寄存器和存储器的操作。但是跟踪可以方便的捕捉高速信号以及实现高级的调试功能,可以记录程序高速运行时轨迹,便于用户程序的查错、恢复等。
发明内容本发明主要目的是为嵌入式系统的调试实现指令跟踪和总线的地址数据跟踪的功能。PC机通过JTAG接口配置跟踪模块里的寄存器。跟踪模块根据已设置好的触发条件,采集需要的数据,并把数据以一定的格式打包后存放到RAM中。PC机通过JTAG接口把RAM中的数据读出,根据预先约定的协议解析包恢复跟踪信息。跟踪包含处理器指令跟踪和数据跟踪。数据跟踪记录存储器总线或待观测总线的地址和数据信息。指令跟踪记录正在运行的指令,可以记录运行程序在每个周期所执行的操作,也可以有选择的只记录跳转异常等特殊行为。处理器指令可以分为两类直接分支指令和间接分支指令。直接分支指令指的是可以通过当前正在执行的指令推出下一条将要执行的指令。仅需要知道当前执行的指令以及这条指令是否被执行,就可以知道下一条指令的地址。间接分支指令指的是不能由当前执行的指令推出下一条将要执行的指令。例如所有的异常如中断和复位等。以及与PC相关的指令。CALL[Rs];JMP[Rs];JMP[[Rs+]];JMP[A+DPTR]。指令执行指的是指令到了执行态,并且通过了条件测试。将会使用字母E(executed)来表示。指令没有执行指的是指令到了执行态,但没有通过条件测试,将会使用字母N(notexecuted)来表示。处理器指令跟踪记录正在运行的指令,详细的记录信息将会导致所需的缓冲的容量要足够大,为了保证足够多的记录,每条记录所包含的信息必然要减少,本发明通过实现触发和滤波的功能并且根据处理器的指令特点有选择的记录信息,减少跟踪缓冲RAM的容量。其中触发表明什么时候开始采集数据,滤波是有选择的把总线的地址数据信息存入RAM。设置存储器地址或数据、PC或者待观测总线的地址或数据为触发条件。设置存储器地址范围或数据范围、PC范围或者待观测总线的地址范围或数据范围为滤波条件。跟踪模块根据已设置好的触发条件,采集需要的数据,并把数据以一定的格式打包后存放到RAM中。输出包包括同步包和指令包,其中同步包是在第一次触发条件满足的时候或者每隔一定的时钟周期输出的同步信息包;指令包首先判断是否是分支指令,如果是分支指令则输出分支地址包,再判断该条指令是否被执行,如果没有被执行则输出指令包;如果被执行且计数器到15,则输出指令包;如果被执行但计数器不到15,则计数器加一。由于一般的程序代码顺序执行的几率比较大,本发明公开的设计输出包的流程如图1所示。当第一次满足触发条件的时候或者同步频率计数器为0的时候输出同步包,同步包中包含程序当前的指令地址。如果当前指令是直接分支指令,则记录该条指令是否被执行的信息,如果没有执行,则输出指令包;如果被执行了,但连续执行的指令个数等于15,则输出指令包;如果被执行了,但连续执行的指令个数小于15,则计数器加一,不打包输出;如果当前指令是间接分支指令,则输出分支地址包,包含下一条指令的地址。图1为输出包流程图2为跟踪模块的整体框图图3为控制模块框图图4为RAM框图图5为包的格式定义具体实施例方式跟踪模块的工作流程是首先通过JTAG接口设置触发条件和滤波条件,触发条件指示什么时候开始采集数据;滤波条件有选择的把采集到的数据存放到RAM中。在处理器正常运行的过程中根据设置的触发条件和滤波条件采集需要的信息,并把采集到的数据按照一定的格式打包存放到RAM中。PC机通过JTAG接口把RAM中的数据读出,根据预先约定的协议解析包恢复跟踪信息。跟踪模块的整体框图如图2,其中控制模块通过JTAG接口配置触发条件和滤波条件。如图3所示,控制模块的输入信号包括指令地址,数据存储器的地址总线,数据存储器的数据总线,程序存储器的地址总线,程序存储器的数据总线,待观测总线的地址,待观测总线的数据,JTAG接口信号。输出信号包括指令跟踪使能,数据跟踪使能,触发使能,同步使能。跟踪模块的输入信号有来自控制模块的控制信号和来自处理器的总线信息,如当前的指令地址,下一条指令地址,数据存储器的地址,数据存储器的数据,程序存储器的地址,程序存储器的数据,待观测总线的地址,待观测总线的数据,是否被执行信号,是否是分支指令信号。跟踪模块的输出信号是RAM的接口信号,如控制信号,数据总线和地址总线。跟踪模块的输出信息以数据包的格式放到RAM中,为了在处理器的一个时钟周期里把数据包写入RAM中,RAM的写入频率是处理器时钟频率的4倍。如图4所示,当RAM中的数据存满之后,新数据取代旧数据存入RAM。根据触发点Triggerpoint的位置,开始计数,当计数到跟踪后的计数器(traceaftercount)的值的时候,就停止往RAM里存数。PC机通过JTAG接口读取RAM的数值。从Endpoint+1的地址开始读,读RAM大小的数据,终其中包是变长包,如图5所示,具体定义如下止点为endpoint。S/Nl位,PCl位,DRl位,DWl位,RRl位,RWl位,CRl位,CWl位,CNTR8位PC—VALUERdAddr;才有该选项。RdData项。WrAddr;才有该选项。J总线的操作,o代表没有读待观测总线的操作。J总线的操作,o代表没有写待观测总线的操作。当PC为1的时候,才有该选项'16位,记录读存储器的数据。当DR,RR,或者CR有效的时候,才有该选24位或者16位,记录写存储器的地址。当DW,RW,或者CW有效的时候,16位,记录写存储器的数据。当DW,RW,或者CW有效的时候,才有该选项。指令跟踪包指的是跟踪模块跟踪指令的运行情况输出的数据包,计算机可以根据指令跟踪包分析出指令执行的情况,实现指令跟踪。指令跟踪包分为分支地址包(间接分支包)和指令包(用于指示指令的执行)。分支地址包给出间接分支指令的目标地址。无论分支包是否被跟踪,都会输出。此时,符号位PC为1,PC—VALUE值为下一条PC值。指令跟踪包有两种基本单元E代表指令条件满足被执行以及N代表指令条件不满足没被执行。举例如下<table>tableseeoriginaldocumentpage5</column></row><table><table>tableseeoriginaldocumentpage6</column></row><table>因为Jb指令没有执行而输出EEN。符号位S/N为1,CNTR值为当前的counter值(10)。因为执行movdata指令,符号位DR,DW为1,CNTR值为当前的counter值(10),RdAddr值为Rs,RdData值为Rs所指的数据,WrAddr值为direct,WrData值为direct所指的数据。因为Cjne指令没有执行,符号位S/N为1,CNTR值为当前的counter值(01)。数据跟踪包跟踪设定的地址和数据值。分别用DR,DW,RR,RW,CR,CW代表数据存储器读,数据存储器写,待观测总线读,待观测总线写,代码存储器读,代码存储器写。由于每条指令只会有一次读,一次写。所以使用RdAddr表示读数据的地址,使用RdData表示读数据的数据,使用WrAddr表示写数据的地址,使用WrData表示写数据的数据。同步包在跟踪使能之后,同步每n条指令同步一次。N条指令的n值应该通过一个控制模块中的同步计数器寄存器进行设置。同步包符号位PC为1,PC—VALUE值为下一条PC值。权利要求一种嵌入式处理器跟踪调试系统的实现方法,其特征在于该方法实现步骤如下(1)通过JTAG接口配置跟踪调试寄存器,设置触发和滤波条件控制跟踪;(2)监视程序存储器地址数据总线,数据存储器地址数据总线,以及待观测总线的地址和数据,与预设的跟踪调试寄存器相比较,根据设置的触发和滤波条件实现触发和滤波;(3)分析采集到的数据,判断指令是否执行、指令是不是分支指令;(4)当预设的数据滤波条件满足的时候输出数据包,输出包按照一定的包格式存到RAM中;(5)计算机通过JTAG接口把RAM中的数据读出,根据约定的协议解析包恢复跟踪信息。2.如权利要求1所述的一种嵌入式处理器跟踪调试系统的实现方法,其特征在于所述设置触发和滤波条件控制跟踪是设置存储器地址或数据、计算机或者待观测总线的地址或数据为触发条件,设置存储器地址范围或数据范围、计算机范围或者待观测总线的地址范围或数据范围为滤波条件。3.如权利要求l所述的一种嵌入式处理器跟踪调试系统的实现方法,其特征在于(3)进一步包括以下步骤当第一次满足触发条件的时候或者同步频率计数器为0的时候输出同步包;如果当前指令是直接分支指令,则记录该条指令是否被执行的信息,如果没有执行,则输出指令包;如果被执行了,但连续执行的指令个数等于15,则输出指令包;如果被执行了,但连续执行的指令个数小于15,则计数器加一,不打包输出;如果当前指令是间接分支指令,则输出分支地址包,包含下一条指令的地址。全文摘要本发明提供一种嵌入式处理器跟踪调试系统的设计方法。该方法可以实现对嵌入式处理器的指令跟踪和数据跟踪。计算机通过JTAG接口配置跟踪模块里的寄存器;跟踪模块根据计算机设置的触发条件获取需要的数据,并把数据暂存到存储器中;计算机通过JTAG接口读取跟踪到的数据,然后对跟踪数据分析重组显示指令和总线的地址/数据信息。本发明所公开的跟踪模块适用于嵌入式处理器的调试模块的跟踪领域,相比一般的跟踪模块,功能强大,设计简洁。文档编号G06F11/36GK101751327SQ20081022798公开日2010年6月23日申请日期2008年12月4日优先权日2008年12月4日发明者李丹,李艳华申请人:北京中电华大电子设计有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1