CN104380266A - 具有复位条件跟踪能力的处理器装置 - Google Patents
具有复位条件跟踪能力的处理器装置 Download PDFInfo
- Publication number
- CN104380266A CN104380266A CN201380031912.9A CN201380031912A CN104380266A CN 104380266 A CN104380266 A CN 104380266A CN 201380031912 A CN201380031912 A CN 201380031912A CN 104380266 A CN104380266 A CN 104380266A
- Authority
- CN
- China
- Prior art keywords
- reset
- processor device
- trace
- information
- reset signal
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/26—Functional testing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
- G06F11/3656—Software debugging using additional hardware using a specific debug interface
Abstract
本发明涉及一种具有调试能力的处理器装置,其具有:中央处理单元;调试电路,其包含跟踪模块;系统时钟模块,其用于提供内部时钟信号;及复位检测单元,其在调试模式期间防止所述系统时钟模块接收复位信号。
Description
相关申请案交叉参考
本申请案主张于2012年5月7日提出申请、标题为“具有指令跟踪能力的处理器装置(PROCESSOR DEVICE WITH INSTRUCTION TRACE CAPABILITIES)”的第61/643,725号美国临时申请案的权益,所述美国临时申请案的全文并入本文中。
技术领域
本发明涉及处理器装置,特定来说,具有集成调试能力的微控制器装置。
背景技术
现代微处理器及微控制器包含高效地允许借助于所谓的电路内调试器或仿真器装置分析运行程序的电路。为此,微控制器或微处理器提供支持调试功能的内部电路及可(举例来说)通过编程装置的多个功能引脚而激活以作为调试接口操作的特定接口。此接口通常可配置为高速串行接口以允许实际装置与外部调试器或仿真器之间的快速通信。因此,装置自身可在不激活此接口且相关联引脚可用于其它目的的正常操作模式及使用此接口来与相应外部装置(例如可从外部主机计算机及由外部主机计算机操作的调试器或仿真器)交换数据的调试操作模式中操作。所述调试器或仿真器还可作为编程器操作,其中经由相同调试接口将程序传送到目标装置中。主机计算机、外部调试器或仿真器因此形成廉价的分析与调试系统。
现代处理器及微控制器在相应装置内部提供调试功能的经扩展集合。举例来说,可在装置内设置若干个断点以允许装置实际上实时运行,这在仅使用高速串行接口时对于外部调试器将是不可能的且因此将需要外合芯片及昂贵的调试电路。然而,当然,这些内部调试电路的功能性由于有线量的硅面积(real estate)及其它原因而有点受限制。举例来说,外部电路内调试器通常不支持追溯功能,且当在调试模式中时、特定来说当装置执行复位时,甚至更复杂的电路内仿真器也可能不充分地支持跟踪功能。
发明内容
因此,需要一种在处理器或微控制器装置内的经改进的电路内调试单元。举例来说,根据各种实施例,使得通过不同步及同步复位两者的指令跟踪成为可能。
根据一实施例,一种具有调试能力的处理器装置可包括:中央处理单元;调试电路,其包含跟踪模块;系统时钟模块,其用于提供内部时钟信号;及复位检测单元,其在调试模式期间防止所述系统时钟模块接收复位信号。
根据又一实施例,所述跟踪模块可操作以在已检测到复位信号之后记录跟踪信息且在记录所述跟踪信息之后产生将所述系统时钟模块复位的信号。根据又一实施例,所述跟踪信息可包含复位源信息。根据又一实施例,所述跟踪模块可产生包含关于经执行指令的信息的跟踪流,其中所述跟踪流通过外部接口输出。根据又一实施例,所述跟踪流可为基于包的。根据又一实施例,所述跟踪包可包含关于触发源的信息。根据又一实施例,可有条件地提供所述信息,其中所述条件可为用户定义的。根据又一实施例,复位信号可为同步复位信号或不同步复位信号。根据又一实施例,同步复位信号可通过看门狗定时器WDT、由所述中央处理单元执行的RESET指令、堆栈溢出/下溢复位而产生。根据又一实施例,不同步复位信号可通过所述处理器装置的外部引脚而接收。
根据另一实施例,一种用于在处理器装置内调试经执行代码的方法可包括:由中央处理单元(CPU)执行代码;在确定复位后,即刻将复位信号转发到微控制器的除系统时钟模块以外的内部单元以允许跟踪模块的进一步操作;及在接收到所述复位之后记录跟踪信息。
根据所述方法的又一实施例,所述方法可进一步包括在已记录所述跟踪信息之后将所述系统时钟模块复位。根据所述方法的又一实施例,所述跟踪信息可包含复位源信息。根据所述方法的又一实施例,所述跟踪模块可产生包含关于经执行指令的信息的跟踪流,其中所述跟踪流通过外部接口输出。根据所述方法的又一实施例,所述跟踪流可为基于包的。根据所述方法的又一实施例,所述跟踪包可包含关于触发源的信息。根据所述方法的又一实施例,可有条件地提供所述信息,其中所述条件可为用户定义的。根据所述方法的又一实施例,复位信号可为同步复位信号或不同步复位信号。根据所述方法的又一实施例,可通过看门狗定时器WDT、由所述中央处理单元执行的RESET指令、堆栈溢出/下溢复位产生同步复位信号。根据所述方法的又一实施例,可通过所述处理器装置的外部引脚接收不同步复位信号。
附图说明
图1展示根据各种实施例的集成调试模块的框图;
图2更详细地展示图1的硬件断点框图;
图3更详细地展示图1的事件组合器框图;
图4展示用于处置跟踪时钟的框图;
图5展示如在图4中所使用的示范性跟踪Q产生器;
图6更详细地展示如在图4中所使用的示范性ICD模拟复位单元;
图7更详细地展示图1的跟踪框图;
图8展示典型的跟踪信号时序图;
图9展示跟踪子系统的简化框图;
图10展示使用具有根据各种实施例的嵌入式调试单元的微控制器及外部电路内调试(ICD)控制器的系统的框图;且
图11展示系统时钟clkin及相关正交信号的示范性时序图。
图12展示使用具有根据各种实施例的嵌入式调试单元的微控制器及外部电路内调试(ICD)控制器的系统的框图。
具体实施方式
典型的微控制器装置可具有数个不同步及同步系统复位源。即使微控制器单元(MCU)系统在此复位发生后即刻停止操作,但根据各种实施例,装置的调试单元内的指令跟踪模块将记录复位发生及所述源。为此,各种实施例通过外部不同步及内部同步装置复位提供指令跟踪。
根据各种实施例,跟踪系统阻止对系统时钟配置模块的复位、使复位同步(在不同步的情况下)并记录复位。因此,所述系统不具有对复位的时序敏感性。
图1展示根据一实施例可集成于微控制器内的电路内调试模块的框图。然而,可在其它类型的芯片上调试电路中实施如上文所描述的一般概念。所述框图展示可实施于(举例来说)微控制器中且可由五个基本块组成的模块:
·断点比较逻辑135
·秒表循环计数器逻辑150
·控制与状态机逻辑145
·跟踪逻辑120
·事件组合器逻辑125
CPU 110通过内部总线与硬件断点单元135、事件检测单元140、控制逻辑单元145及后台接口155耦合。多路复用器160用于允许调试单元与外部调试器通过专用调试时钟与数据引脚165的耦合。控制逻辑145可与一或多个外部引脚耦合。图1展示示范性TRGIN引脚185。此引脚可为不具有其它功能的专用引脚。然而,特定来说在低引脚装置中,此引脚可为允许在程序控制下指派给不同外围装置且因此可根据其经编程指派执行不同功能的多功能引脚。举例来说,可借助于配置寄存器将此引脚编程为在功能上除跟踪触发以外还充当串行接口时钟引脚、数字I/O引脚、模拟输入引脚等。如图1中所展示,控制逻辑还提供可类似于引脚185(多功能引脚)的触发输出引脚190。跟踪模块120与跟踪停滞输入引脚115及跟踪时钟与数据输出引脚175耦合。图1还展示可通过控制逻辑145配置的脉冲拒斥滤波器170及180。图1中未展示通过此类滤波器的信号路由。根据一些实施例,实施断点调试以使得在执行指令之前执行被异常终止,即所谓的“零滑动”操作。根据其它调试器实施例,并非此情形且可导致关于代码在何处停止或“滑动”的问题,从而允许在处理器被异常终止之前执行指令。外部事件(按照定义)与指令执行流不同步。如此,其操作无法与零滑动概念进行比较。
当内部信号debug_en=1时,模块经启用且监视所有“HALT(异常终止)”事件,产生事件,执行数据捕获等。如果内部信号debug_en=0,那么所有调试逻辑经禁用且模块经配置以消耗最小功率模式。
为使调试较不具有侵入性,具有实时从装置流式传输数据的构件可为有用的。跟踪模块120支持取得正被读取或写入到特定地址的数据并将其发射出跟踪端口的方法。此可描述为实时观察点。当使用观察点时不中断装置的正常操作。
可使用与用于产生硬件断点相同的硬件执行数据捕获。与产生异常终止同时地使用断点进行数据捕获将允许两个操作都发生。然而,同时启用数据捕获及数据匹配可产生意想不到的结果,尤其是对于大于1的断点计数来说。由于数据捕获及数据比较使用相同物理寄存器,所以将在每次捕获时更新比较值。
图2更详细地展示硬件断点单元135。硬件断点可经配置以在程序或数据存储器中的匹配地址处断开。为此,提供相应比较器220及230以及解码单元240,如图2中所展示。当选择了断点来对数据存储器进行操作时,可另外用数据值及掩码限定断点,从而仅允许特定值产生断点事件。数据断点还可任选地经设置以仅在读取或写入循环时断开。在所有情况中,断点具有计数器210,使得只有在特定事件发生了N次之后才产生断点事件。举例来说,根据一些实施例,此可设置为从1次到256次的任何值。
针对单个断点展示图2的框图。然而,所实施的断点的数目可根据各种实施例变化,可存在许多断点。图2展示允许编程各种参数以定义断点的触发要求的示范性实施例。根据其它实施例,可使用更少或更多的此类参数。举例来说,可通过计数器210中的BPxCNT参数设置产生断点所必需的断点发生数目。每一断点模块可具有相同寄存器。
断点在事件通道定义当中列出且可用于启动或停止循环计数器150,设置或复位事件组合器级125,启动或停止跟踪单元120或拍摄堆栈快照。
根据一个实施例,为了启用断点,必须设置控制寄存器ICDBPxCON的位BPEN。如果清除此位,那么此特定断点的所有电路被禁用且将不产生断点事件。断点可经配置以仅在每第N次发生限定条件时触发动作。举例来说,为了将断点设置为在每第三次发生时触发,将计数器210设置为BPxCNT=2。可与计数器210组合地使用相应控制寄存器以重新加载其值及/或监视当前状态。
还可通过(举例来说)在相关联的配置寄存器中设置相应位来基于执行上下文(主线代码、中断处置器或任一者)而限定断点。断点可接着仅在程序依据选定上下文执行时才发生。
可通过在配置寄存器中设置相应位来使用再一断点参数,此允许监视程序计数器(PC执行地址)。程序存储器断开为零滑动,且在执行操作之前发生。PC将指示触发指令的地址。
当清除相应控制位时,例如BPAREN=‘0’,在PC等于预定义地址时触发断开。当BPAREN=‘1’时,在PC属于预定义包含性地址范围内时触发断开。
根据一些实施例,仅经执行指令可产生断点。如果PC在未经执行的地址处,那么断点不触发。此包含:
·流改变指令(CALL、RETURN等),
·所跳过的指令(按照BTFSS、BTFSC),或
·在PCL、FSR或另两个循环指令之后的下一提取。
当在控制寄存器中将另一控制位字段设置为01、10或11时,断点监视数据存取,地址及值两者。相关联位的三个状态选择使用读取还是写入循环来确定断点。
在读取数据或写入数据之后(如适用),数据断点必然地导致指令执行的结束处的断开。在所有情况中,指令运行到完成。因此,“断开”实际上发生在下一指令执行时,且PC将指示在触发指令之后的指令。还可在已满足存储器地址及数据值限定符两者时触发断开。
循环计数器150为用于提供秒表功能以使得可剖析用户代码的计数器。由相应控制寄存器控制循环计数器。计数器150可由四个8位计数器/寄存器组成。可在CPU的每Q循环的结束处使计数器150递增;多循环指令(例如,GOTO)计数多次。
为了允许由特定事件控制多个功能,可将所有可能源组合到一个事件总线中。此允许循环计数器150、跟踪单元120及事件组合器单元125使用相同设置来选择其动作。
如图3中所展示的事件组合器300监视多个事件输入320且可基于那些输入的组合及序列而产生异常终止或触发输出190。在设置相应控制位时启用事件组合器300。经禁用组合器300不产生输出事件。事件组合器300在事件通道定义当中列出且可用于启动或停止循环计数器150,设置或复位事件组合器级310,启动或停止跟踪单元120,或拍摄堆栈快照。当在相关联控制寄存器中设置事件组合器级310的相应控制位时独立地启用所述级。将在相关联状态位中反映级的当前输出。级310具有如图3中所展示的隐含次序,且可以若干种方式组合:
·可由事件个别地激活一级,
·在下一较低级有效时可由事件激活一级,
·可由事件个别地将一级停用,
·可由事件或当下一较低级被停用时将一级停用。
通过设置相应控制位,仅经组合事件的第(N+1)次发生将用信号发送输出事件。N可设置为从0到255。如果满足经组合触发条件,那么使寄存器递减1。如果满足经组合触发条件,那么产生事件组合器事件且给计数器重新加载预设值。同样,在将新计数值写入到相应控制寄存器中的任何时间,重新加载计数器中的值。举例来说,为将断点设置为在第三次发生时触发,应将相应计数器值设置为2。
另外,根据一些实施例,馈送到引脚TRGIN 185的外部信号允许用户输入产生将插入到跟踪流中的跟踪包,产生异常终止且任选地触发TRGOUT信号。当“极性”=0(图6)时,触发输入为高态有效的且上升边缘引起事件。当“极性”=1时,触发输入为低态有效的且下降边缘引起事件。另一控制位可用于控制滤波器(举例来说)以定义:输入必须处于有效状态中达最小时间以便被辨识出。接着忽略较短脉冲。
TRGIN事件可在事件通道定义当中列出且可用于启动或停止循环计数器150,设置或复位事件组合器级310,启动或停止跟踪单元120,或拍摄堆栈快照。如果启用跟踪,那么触发输入的改变将产生跟踪包。
当事件(例如断点)随经启用触发而发生时,产生TRGOUT引脚195上的脉冲。通过设置相应控制位来配置基本触发输出信号操作。举例来说,这些控制位可控制:断言触发输出达大致触发事件的持续时间。邻近或重叠事件可使信号保持处于经断言状态中。所述控制位还可控制输出是否伸展到最小时间周期。一旦触发TRGOUT单发,便将忽略在定时周期内发生的更多事件。在单发超时且TRGOUT返回到零之后,可再次由另一事件触发所述单发。所述单发为边缘触发的,且将在预定义时间周期之后清除,即使事件信号持续。
软件可通过设置相应控制位来引起触发输出。如果装置是唤醒的,那么在1个循环之后通过硬件清除所述位。TRGOUT还可通过写入相应控制位来清除,或将在装置唤醒时自动清除。
外部不同步复位通常影响整个处理器装置。为了恰当地记录已发生此事件,指令跟踪模块经设计以不受复位影响而不顾及复位的定时。因此,各种实施例使芯片上调试能力进步且提供先前在常规微控制器装置上不可用的特征。因此,可在“正常”微控制器或微处理器装置中实施仅从昂贵的专用电路内调试器知晓的高技术调试能力。
图4展示根据各种实施例的高级概念。系统时钟配置模块410产生系统时钟icd_sys_clk。所述系统时钟由跟踪Q产生器420使用,跟踪Q产生器420产生trc_q_clks信号的4个相位,即,trc_q1_clk、trc_q2_clk、trc_q3_clk及trc_q4_clk。图11展示相对于指令的执行的系统时钟clkin及相关正交信号的示范性时序图。在此实例中,从clkin导出的四个时钟q1、q2、q3、q4用于执行一个指令。跟踪时钟可从内部时钟q1、q2、q3、q4导出或可为相同的这些时钟。然而,根据各种其它实施例,可实施可允许(举例来说)在单个循环中执行指令的不同中央处理架构。
图5展示跟踪Q产生器420的示意图的细节。其可为(举例来说)由四个触发器510、520、530及540以常规方式形成的4位循环移位寄存器。复位源的一些实例为:看门狗定时器WDT复位、由中央处理单元执行的RESET指令、堆栈溢出/下溢复位及主清除MCLR复位。然而,其它复位源及信号可适用。
返回到图4,当发生类属复位时,复位模拟单元430允许向整个芯片断言类属复位,系统时钟配置模块410除外。此允许系统时钟保持运行,且跟踪Q产生器420及因此还有跟踪数据产生器120可继续操作。在微控制器中央处理单元110保持处于复位中时,跟踪数据产生器记录复位相关跟踪信息且接着通知跟踪Q产生器:记录完成。
还分别(举例来说)通过触发器450及460使用trc_q2_clk信号及trc_q4_clk信号来使类属复位条件同步,且在跟踪Q产生器420停止时,(举例来说)通过触发器480通知复位模拟单元430以允许系统时钟配置模块430进行复位。
图6中展示复位模拟单元430的示范性实施例。复位模拟单元430允许系统时钟配置模块410在其已被通知复位之后进行复位。在系统时钟配置模块430复位的同时,产生单发脉冲trc_reset_os1_pulse以将同步器寄存器元件450、460、480复位以使得可重新装备整个电路以用于另一复位发生检测。如图6中所展示,可提供用以产生各种控制信号的逻辑。可使用其它逻辑电路并取决于装置的一般设计对其进行调适。
因此,此各种实施例具有处理电平敏感复位及边缘敏感复位两者的能力,且允许整个微控制器系统(系统时钟配置模块除外)在刚发生复位时便进行复位(因此,较接近于本机操作),即使指令跟踪正在进行中。
所述各种实施例确保保证有最小脉冲宽度持续时间来在刚发生芯片复位时便将系统时钟配置模块复位,即使所述模块被阻止进行复位。
以下章节详述装置与外部调试工具之间的跟踪数据接口。如(举例来说)图7中所展示的跟踪子系统提供可由调试工具捕获及分析的指令执行流的实时记录。跟踪操作假定调试工具可存取源代码及程序存储器内容,且可推断CPU操作的一些方面。
当指令写入到PCL(直接或通过INDx)时,新的PC可在程序存储器中的任何地方。在此情况中,指令包由所谓的满程序计数器(FPC)包替换。如图7中所展示的FIFO可用于使核心数据速率与调试工具数据速率(由TRSTALL支配)匹配。FIFO从CPU编码器被填充,且由数据编码器清空,如图7中所图解说明。FIFO保存高达4096个指令包,但有效操作大小可通过相应控制位选择。还将WATCH事件包置于FIFO中,因此飞行中的指令包的实际数目通常将为较少的。TRCLK输出在双态切换时随着每一时钟边缘输出一个数据字。输出时钟速率始终与CPU指令速率有联系,且将在软件改变SYSCLK的情况下或在复位改变SYSCLK的情况下改变。根据相应配置,输出速率可始终为每指令周期两个跟踪字。所述速率可减小到每指令1个及每指令1/2个,但此将可能导致FIFO溢出。TRCLK输出可经选择以与数据改变同相或异相,此取决于TRCPS控制位的设置。输入FIFO编码可不同于线编码,因此在TRDAT接口中每一FIFO位置可表示多达3个数据字。
可实施跟踪停滞功能,其中配置位可确定TRSTALL输入是否具有效应。举例来说,当控制位TRXSE=1且信号TRSTALL=1时,跟踪FIFO将在有效负载边界上停止清空且停止时钟。当TRSTALL(tr_stall_pin)返回到‘0’时,计时将重新开始且FIFO将再次开始清空数据。当启用跟踪且FIFO为空时,根据装置的睡眠状态发送IDLE或SLEEP包。根据一些实施例,还可强制FIFO为空的且可将跟踪停用。如果FIFO变为满的,那么系统响应可取决于相应控制设置。在任一情况中,溢出状态(停滞的或未发布数据)将持续,直到FIFO为25%或75%满(如由相应控制寄存器所选择)为止。根据一些实施例,可添加关于跟踪实施方案的其它功能,且可不实施如所描述的一些功能。图8中展示典型的跟踪信号时序图。
跟踪有效负载包编码CPU核心执行的指令及选定数据事件,且还提供跟踪流同步。根据一实施例,大多数包可由1个或2个七(7)位字组成或针对FPC包由3个字组成。一般来说,所述包由“字1”及任选“字2”组成。然而,根据不同实施例可使用其它格式。根据特定实施例,“字1”的值识别包,且暗示是否存在“字2”。与指令执行(如EX、EXD及RESET)同步的包及不同步“事件”包包含WATCH、RESET及TRIGGER,如下文更详细地描述。
以执行的次序发射同步包。事件包在流中出现在接近事件的时间处,但如果若干个事件同时发生,那么一些报告将延迟。在一些情况中,FPC为同步报告,但在其它时候,其为事件。视需要插入输送层(TR)包RESYNC、IDLE及END以管理及识别接口数据流的各种状态。当分析指令跟踪时,可丢弃TR包RESYNC及IDLE。
依照相应控制位的规定而周期性地插入RESYNC包,以使得接收器可验证其经正确地同步。在大致对应于预定义时间间隔的时间,且仅在于所述间隔内未发送其它FPC的情况下,FPC将被添加到流。此提供对接收器正在正确地追踪指令流的检查。经插入FPC始终指示后面的指令的地址。通过包的字1的值来确定包中的字的数目。如果RESYNC是作为具有针对“字2”的不正确值的字1被接收,那么所述流不同步且应加上错误旗标。
表1图解说明涉及2字包的最糟情况情形,其中第2个字为0x7D,后续接着RESYNC。如果接收器经恰当地同步,那么所接收字#3将为字1,且字#4将为字2,从而形成展示为包#2的完整RESYNC对。包#3以字#5开始,且将被正确地解释。
表1
表2展示与复制第一字且使接收器失去同步的时钟反弹相同的数据。字#1及#2作为具有数据=0x71的EXD包被接收(但此为不正确解释),且字#3及#4显现为RESYNC对。字#5被视为新RESYNC包的字1,但字#6并非0x7D,从而揭露不同步状态。字#6开始新包。
表2
在跟踪开始时或在于跟踪经暂停以用于调试执行之后重新开始时发送的第一包将始终为FPC。满程序计数器(FPC)包报告出现在流中的下一指令的绝对地址。在这些情形中的FPC报告:
—跟踪的开始,
—在溢出之后的重新开始,及
—在调试之后的重新开始,仅仅指示下一指令的地址。
FPC的所有其它使用指示已执行指令,且在一些情况中替换原本针对所述指令报告的包。当FPC表示变更指令的分支或程序计数器的执行时,所报告的值为分支目标地址。在FPC后面的指令包表示FPC所指向的指令的执行。
GOTO及CALL指令假定程序计数器的最低有效位PC[10:0]为调试环境所已知的(以汇编代码的形式),且在上部部分程序计数器(UPC)包中报告新PC的仅上部4个位。然而,其它实施例可报告更多或更少信息。所报告值可为0x0F&(PCLATH>>3),其中PCLATH表示锁存程序计数器的上部位的实施方案特定的寄存器。由于已知相对分支(BRA)的目的地为源代码,因此仅仅将指令报告为EX。可实施多种多样的跟踪有效负载。表3展示不同有效负载信号的实例。
表3
表4展示实际跟踪实例:
表4
注释1:如果TRFPCB=1,那么此指令报告FPC。
2:循环8的PC值并非15'h2205,这是因为PCLATH=8'h23(来自循环2);UI应将此错误加旗标。
如果设置相应控制位,那么触发输入的改变将产生跟踪包。如果极性位=0,那么事件将在上升边缘上触发。如果极性位=1,那么事件将在下降边缘上触发。当指令写入到程序计数器PCL(直接或间接)时,新的PC可在程序存储器中的任何地方。在此情况中,指令包由FPC包替换。
FIFO用于使核心数据速率与调试工具数据速率(由TRSTALL支配)匹配。FIFO从CPU编码器被填充,且由数据编码器清空,如图6所图解说明。FIFO保存高达4096个指令包,但有效操作大小通过控制寄存器中的相应位选择。还将WATCH事件包置于FIFO中,因此飞行中的指令包的实际数目通常将为较少的。
TRCLK输出在双态切换时随着每一时钟边缘输出一个数据字。输出时钟速率始终与CPU指令速率有联系,且将在软件改变SYSCLK的情况下或在复位改变SYSCLK的情况下改变。当设置相关联控制寄存器中的相应位字段时,输出速率可始终为每指令周期两个跟踪字。根据一些实施例,所述速率可减小到每指令1个及每指令1/2个,虽然此将可能导致FIFO溢出。跟踪时钟TRCLK输出可经选择以与数据改变同相或异相,此取决于相应控制位的设置。输入FIFO编码不同于线编码,因此在TRDAT接口中每一FIFO位置可表示多达3个数据字。
图9展示跟踪子系统700的简化框图。子系统700从核心及WATCH事件信号接收指令代码,且格式化此数据以用于在TRDAT信号上递送。序列控制器710负责将指令及WATCH数据加载到FIFO中。每一数据包经编码为单个16位字。在q34期间,对WATCH信号进行取样,且将最高优先级的信号编码、加载及复位。如果断言一个以上信号,那么仅加载最高优先级信号且其它信号必须等待后续q34机会。由于报告优先级是基于断点数目,因此可次序颠倒地报告事件。在q12期间,编码及加载来自先前指令的数据(在q3中编码操作码,且总线数据为稳定q3-q3,且所有数据在上升q1处是有效的)。一般来说,每一指令周期发生此情形。针对分支及调用指令以及中断循环,在第一循环期间不加载任何内容,且在第二循环期间编码包(所谓的“经强制NOP”),从而允许以正确PC值发射UPC及FPC。因此,可在分支期间加载两个WATCH包。基于当前核心操作而编码SKIP及STALL。
序列控制器710可每指令循环加载两次,且流管理器730可每指令循环卸载两次,从而需要每指令循环高达四(4)个存储器循环。FIFO控制器720管理由序列控制器710提供的数据。数据在由流管理器730请求时以相同次序递送。流管理器730将16位FIFO字重新格式化成在TRDAT信号上发射的数据字。一些包(例如,EX)针对每一FIFO字产生单个TRDAT字,而其它包(例如,FPC)产生更多。视需要,将输送管理包RESYNC、IDLE及END插入到流中,且根据TRSTALL输入暂停读出操作。存在在每一指令循环周期期间发射的两个(2)TRDAT字。TRCLK信号将在系统复位(数据将不会丢失)期间暂停(循环的伸展部分)。
图10展示具有与作为跟踪接收器操作的调试工具820耦合的根据各种实施例的微控制器810的系统800。所述调试工具可为(举例来说)由申请人制造的Real-ICE电路内仿真器。接收器820执行跟踪同步,丢弃所有IDLE及输送包,且将剩余包的捆绑件发射到远程主机830(举例来说,个人计算机或工作站),在此处执行包流解释。
·字1分析—将包转换为3字宽的数据总线。
·检查二位字节(RESYNC、溢出等),且当(a)二位字节并非呈连续字的形式或(b)遇到未实施的字1代码值时将同步错误加旗标。
·丢弃IDLE及其它输送包,且将剩余值堆栈到FIFO中。
·将全部包发射到远程主机。
当断言TRSTALL时,接收器820准备接受高达6个以上TRDAT字(2个连续FPC包的等效物)加上可在重新同步管线中排队的2个字。当释放TRSTALL时,保证包字1对准。可丢弃来自一串IDLE包的大多数或有时全部IDLE包且不将其运送到远程主机以减小带宽。也应将未实施的操作码及FPC字3(7’h5x)加旗标为同步错误,且将其视为1字包。
以单字包(例如,代码7’h5x)的样式编码FPC的第3个字。无论是否同步,都可假定在(例如)7’h5x的任何字后面的字为新包的字1。出于跟踪字1的目的,应将OVERFLOW、RESYNC、SLEEP及END包视为1字包。当将7’h7D视为1字包时,后面的包接着将始终为字1值,即使其为另一7’h7D(成对的RESYNC字)。字1对准的(伪)数据传递到二位字节分析,其中在两个RESYNC不连续地出现在流中时辨识出同步失败。同样地,OVERFLOW(7’h77)可在接收器不同步时出现,且必须经准确地解释,即使第二个字不匹配。此还可将同步错误加旗标。类似推理可应用于SLEEP及END包,这是因为如果接收器不同步,那么仅一个7’h7C或7’h7F可在结束处出现,且对于接收器来说暂停同时等待第二值将为不适合的。在另一极端,三个相同字可出现,且根本不会使接收器混乱。
为了完整分析,主机830必须将跟踪数据与用于将微处理器编程的原始源代码进行比较。针对大多数指令,跟踪数据宣布发生执行,但不包含操作细节。当分支仅产生EX包(TRFPCB=0)时,可仅通过检查源代码来确定分支目的地。类似地,根据特定实施例,写入到PCLATH仅发射部分数据,且需要源知识来完成评估。取决于操作,STALL包可在受影响的指令之前或之后。可将STALL包看作已发生非典型操作(例如,文件选择寄存器(FSR)向非易失性存储器写入)的暗示,其中在用户显示器上具有突显的符号。WATCH报告可使触发指令滞后许多包。如果相同观察在发生读出之前触发,那么密布的观察可实际上丢失。由于观察点仅识别数据地址,因此跟踪分析必须能够重建数据存取指针值,而无论是依据直接寻址模式(需要知晓BSR及操作码)还是依据间接模式(需要知晓FSR)。观察数据始终来自观察事件的最近发生。注意一些FPC包暗示已执行指令(例如,RETURN指令),但其它例子仅为告知性的。
图12展示具有运行开发程序且(举例来说)经由USB接口与外部调试器/编程单元520连接的主机(例如个人计算机)的典型调试/编程系统500。外部调试器编程单元520提供可供应在调试器/编程器520内产生的电力供应电压的专用接口。然而,其它实施例可经由专用电源来供应供应电压或目标系统可为自供电的。可通过同步串行接口向实际调试/编程接口提供由调试器/编程单元520所提供的单向时钟信号ICDCLK及双向数据线ICDData。因此,可使用最少三个连接线(ICDCLK、ICDData及参考电位(GND))来耦合调试器/编程单元520与目标系统510(其最低限度可为根据如上文所描述的各种实施例具有调试/编程接口的微控制器)。
此系统允许用户编程在主机上运行的调试程序以设置具有如上文所阐释的条件的各种断点且在程序执行时通过额外连接线实时地接收跟踪信息。尽管调试软件保持追踪各种断点的关于其在源代码中的位置,但调试器/编程器520将断点信息传达到设置相应断点且配置其相关联寄存器的目标装置。而且,由调试器/编程器520将跟踪能力的设置及配置传达到目标装置510。举例来说,可设置通过存储于存储器中的数据值的匹配触发的特定断点。用户接着通过在主机PC530上运行的调试器软件开始目标装置510的软件的执行。仅在检测到断点时停止目标软件的执行。然而,可在目标程序的执行期间连续地转发跟踪信息。主机计算机530可评估此跟踪数据且以任一文本形式或使用图形显示使其可用。如上文所揭示,根据各种实施例,还可在仍对跟踪子系统进行计时时全面地跟踪复位事件。
本发明实施例通过实施如上文所论述的特征而允许跟踪流的更好分析。因此,各种实施例使当前技术水平的芯片上调试能力进步,且将允许给更多不同用户带来高技术调试能力。
Claims (20)
1.一种具有调试能力的处理器装置,其包括:
中央处理单元;
调试电路,其包含跟踪模块;
系统时钟模块,其用于提供内部时钟信号;
复位检测单元,其在调试模式期间防止所述系统时钟模块接收复位信号。
2.根据权利要求1所述的处理器装置,其中所述跟踪模块可操作以在已检测到复位信号之后记录跟踪信息,且在记录所述跟踪信息之后产生将所述系统时钟模块复位的信号。
3.根据权利要求2所述的处理器装置,其中所述跟踪信息包含复位源信息。
4.根据权利要求1所述的处理器装置,其中所述跟踪模块产生包含关于经执行指令的信息的跟踪流,其中所述跟踪流通过外部接口输出。
5.根据权利要求4所述的处理器装置,其中所述跟踪流是基于包的。
6.根据权利要求5所述的处理器装置,其中所述跟踪包包含关于触发源的信息。
7.根据权利要求6所述的处理器装置,其中有条件地提供所述信息,其中所述条件可为用户定义的。
8.根据权利要求1所述的处理器装置,其中复位信号可为同步复位信号或不同步复位信号。
9.根据权利要求8所述的处理器装置,其中同步复位信号是通过看门狗定时器WDT、由所述中央处理单元执行的RESET指令、堆栈溢出/下溢复位而产生。
10.根据权利要求8所述的处理器装置,其中不同步复位信号是通过所述处理器装置的外部引脚而接收。
11.一种用于在处理器装置内调试经执行代码的方法,其包括:
由中央处理单元CPU执行代码;
在确定复位后,即刻将复位信号转发到微控制器的除系统时钟模块以外的内部单元以允许跟踪模块的进一步操作;
在接收到所述复位之后记录跟踪信息。
12.根据权利要求11所述的方法,其进一步包括在已记录所述跟踪信息之后将所述系统时钟模块复位。
13.根据权利要求12所述的方法,其中所述跟踪信息包含复位源信息。
14.根据权利要求11所述的方法,其中所述跟踪模块产生包含关于经执行指令的信息的跟踪流,其中所述跟踪流通过外部接口输出。
15.根据权利要求14所述的方法,其中所述跟踪流是基于包的。
16.根据权利要求15所述的方法,其中所述跟踪包包含关于触发源的信息。
17.根据权利要求16所述的方法,其中有条件地提供所述信息,其中所述条件可为用户定义的。
18.根据权利要求11所述的方法,其中复位信号可为同步复位信号或不同步复位信号。
19.根据权利要求18所述的方法,其中通过看门狗定时器WDT、由所述中央处理单元执行的RESET指令、堆栈溢出/下溢复位产生同步复位信号。
20.根据权利要求18所述的方法,其中通过所述处理器装置的外部引脚接收不同步复位信号。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261643725P | 2012-05-07 | 2012-05-07 | |
US61/643,725 | 2012-05-07 | ||
PCT/US2013/039934 WO2013169766A1 (en) | 2012-05-07 | 2013-05-07 | Processor device with reset condition trace capabilities |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104380266A true CN104380266A (zh) | 2015-02-25 |
CN104380266B CN104380266B (zh) | 2017-07-18 |
Family
ID=48570432
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380031912.9A Active CN104380266B (zh) | 2012-05-07 | 2013-05-07 | 具有复位条件跟踪能力的处理器装置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9298570B2 (zh) |
EP (1) | EP2847682B1 (zh) |
JP (1) | JP6220863B2 (zh) |
KR (1) | KR20150008441A (zh) |
CN (1) | CN104380266B (zh) |
WO (1) | WO2013169766A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150019775A1 (en) * | 2013-03-14 | 2015-01-15 | Microchip Technology Incorporated | Single Wire Programming and Debugging Interface |
US20160103722A1 (en) * | 2014-10-10 | 2016-04-14 | Qualcomm Incorporated | Hardware lockup detection mechanism for user devices |
US9690727B2 (en) * | 2014-10-31 | 2017-06-27 | Atmel Corporation | System internal latency measurements in realtime applications |
US10534688B2 (en) * | 2016-09-30 | 2020-01-14 | Intel Corporation | Trace hub logic with automatic event triggering |
US10754759B1 (en) * | 2018-02-05 | 2020-08-25 | Xilinx, Inc. | Breakpointing circuitry that evaluates breakpoint conditions while running clock to target circuit |
US20190370016A1 (en) * | 2018-05-31 | 2019-12-05 | Hamilton Sundstrand Corporation | Auto detection of jtag debuggers/emulators |
CN109117362B (zh) * | 2018-06-26 | 2020-08-25 | 华东师范大学 | 一种基于中间语言的plc程序验证系统 |
EP3661056B1 (en) * | 2018-11-27 | 2022-05-25 | STMicroelectronics Application GmbH | Processing system, related integrated circuit, device and method |
CN110032482A (zh) * | 2019-04-11 | 2019-07-19 | 盛科网络(苏州)有限公司 | 片上调试装置和方法 |
CN115152184B (zh) * | 2020-02-27 | 2023-11-28 | 微芯片技术股份有限公司 | 网络中序列号的同步 |
US11442805B1 (en) * | 2021-03-03 | 2022-09-13 | Siliconch Systems Pvt Ltd | System and method for debugging microcontroller using low-bandwidth real-time trace |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1133455A (zh) * | 1994-12-28 | 1996-10-16 | 株式会社东芝 | 微处理器与调试系统 |
US20040103271A1 (en) * | 2002-11-22 | 2004-05-27 | Manisha Agarwala | Tracing through reset |
US20040153814A1 (en) * | 2002-12-17 | 2004-08-05 | Swoboda Gary L. | Apparatus and method for trace stream identification of a processor reset |
CN1912849A (zh) * | 2006-09-01 | 2007-02-14 | 上海大学 | 微处理器的片上动态跟踪方法 |
US20080288808A1 (en) * | 2007-05-18 | 2008-11-20 | Moyer William C | Debugging a processor through a reset event |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0736735A (ja) * | 1993-07-22 | 1995-02-07 | Agency Of Ind Science & Technol | デバッグ装置 |
US5825706A (en) * | 1997-10-27 | 1998-10-20 | Motorola, Inc. | Circuit and method for retaining data in DRAM in a portable electronic device |
US6792527B1 (en) * | 2000-12-22 | 2004-09-14 | Xilinx, Inc. | Method to provide hierarchical reset capabilities for a configurable system on a chip |
JP2006011991A (ja) * | 2004-06-29 | 2006-01-12 | Meidensha Corp | コンピュータ制御装置およびこのソフトウェア実行記録方式 |
JP2008129669A (ja) * | 2006-11-17 | 2008-06-05 | Meidensha Corp | ハードウェア異常記録装置及びハードウェア異常記録方法 |
JP2008276324A (ja) * | 2007-04-25 | 2008-11-13 | Kyocera Mita Corp | リセット装置及び当該リセット装置を備えた画像形成装置 |
JP5533097B2 (ja) * | 2010-03-18 | 2014-06-25 | 株式会社リコー | 情報処理装置、画像形成装置及び情報処理プログラム |
-
2013
- 2013-05-07 KR KR20147033969A patent/KR20150008441A/ko active IP Right Grant
- 2013-05-07 CN CN201380031912.9A patent/CN104380266B/zh active Active
- 2013-05-07 EP EP13726614.4A patent/EP2847682B1/en active Active
- 2013-05-07 WO PCT/US2013/039934 patent/WO2013169766A1/en active Application Filing
- 2013-05-07 US US13/888,367 patent/US9298570B2/en active Active
- 2013-05-07 JP JP2015511620A patent/JP6220863B2/ja active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1133455A (zh) * | 1994-12-28 | 1996-10-16 | 株式会社东芝 | 微处理器与调试系统 |
US20040103271A1 (en) * | 2002-11-22 | 2004-05-27 | Manisha Agarwala | Tracing through reset |
US20040153814A1 (en) * | 2002-12-17 | 2004-08-05 | Swoboda Gary L. | Apparatus and method for trace stream identification of a processor reset |
CN1912849A (zh) * | 2006-09-01 | 2007-02-14 | 上海大学 | 微处理器的片上动态跟踪方法 |
US20080288808A1 (en) * | 2007-05-18 | 2008-11-20 | Moyer William C | Debugging a processor through a reset event |
Also Published As
Publication number | Publication date |
---|---|
WO2013169766A1 (en) | 2013-11-14 |
KR20150008441A (ko) | 2015-01-22 |
US9298570B2 (en) | 2016-03-29 |
JP2015516637A (ja) | 2015-06-11 |
US20130297974A1 (en) | 2013-11-07 |
EP2847682B1 (en) | 2019-07-03 |
JP6220863B2 (ja) | 2017-10-25 |
EP2847682A1 (en) | 2015-03-18 |
CN104380266B (zh) | 2017-07-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104380266A (zh) | 具有复位条件跟踪能力的处理器装置 | |
CN104272271B (zh) | 具有指令跟踪能力的处理器装置 | |
EP1690184B1 (en) | Apparatus and method for time ordering events in a system having multiple time domains | |
CN104471545B (zh) | 具有基于中断状态的可配置断点的装置 | |
US7886271B2 (en) | Embedding event information in the timing stream | |
CN102360329B (zh) | 总线监控与调试控制装置及进行总线监控与总线调试的方法 | |
US7590912B2 (en) | Using a chip as a simulation engine | |
KR20140103048A (ko) | 낮은 레벨 프로그래밍 가능한 시퀀서와 조합한 범용 프로그래밍 가능한 프로세서를 사용한 비휘발성 메모리 채널 제어 | |
US6760864B2 (en) | Data processing system with on-chip FIFO for storing debug information and method therefor | |
US20060255976A1 (en) | Distributed Depth Trace Receiver | |
US20060255973A1 (en) | Multi-Port Trace Receiver | |
US7312736B2 (en) | Trading off visibility for volume of data when profiling memory events | |
US20060255983A1 (en) | An Efficient Protocol for Encoding Software Pipelined Loop When PC Trace is Enabled | |
US7590893B2 (en) | Recording control point in trace receivers | |
US7555682B2 (en) | Distributed width trace receiver | |
US7613951B2 (en) | Scaled time trace |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |