CN101751327A - 嵌入式处理器的跟踪调试方法 - Google Patents
嵌入式处理器的跟踪调试方法 Download PDFInfo
- Publication number
- CN101751327A CN101751327A CN200810227987A CN200810227987A CN101751327A CN 101751327 A CN101751327 A CN 101751327A CN 200810227987 A CN200810227987 A CN 200810227987A CN 200810227987 A CN200810227987 A CN 200810227987A CN 101751327 A CN101751327 A CN 101751327A
- Authority
- CN
- China
- Prior art keywords
- data
- instruction
- address
- bus
- bag
- 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
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种嵌入式处理器跟踪调试系统的设计方法。该方法可以实现对嵌入式处理器的指令跟踪和数据跟踪。计算机通过JTAG接口配置跟踪模块里的寄存器;跟踪模块根据计算机设置的触发条件获取需要的数据,并把数据暂存到存储器中;计算机通过JTAG接口读取跟踪到的数据,然后对跟踪数据分析重组显示指令和总线的地址/数据信息。本发明所公开的跟踪模块适用于嵌入式处理器的调试模块的跟踪领域,相比一般的跟踪模块,功能强大,设计简洁。
Description
技术领域:
本发明涉及嵌入式处理器的跟踪调试领域,是实现嵌入式系统的跟踪调试的一种方法。
背景技术:
目前国际上实现跟踪的方法有Nexus标准和ARM的片上调试技术,但是JTAG IEEE1149.1标准只能提供一种静态的调试方法,如处理器的启动和停止、软件断点、单步执行、修改寄存器,而不能提供处理器实时运行时的信息。需要对JTAG的基本功能进行了加强和扩展Nexus将调试开发分成四级,从第一级开始,每级的复杂度都在增加,并且上级功能覆盖下一级。第一级使用JTAG的简单静态调试;第二级支持编程跟踪和实时多任务的跟踪,用户用I/O引脚作为多路复用辅助调试口;第三级包括处理器运行时的数据写入跟踪和存储器的读写跟踪;第四级增加了存储替换并触发复杂的硬件断点。但是Nexus标准比较抽象,实际实现技术难度比较高。
ARM处理器中采用的片上调试技术(on-chip debugger)。片上调试技术通过在芯片的硬件逻辑中加入调试模块,在一定的条件下实现实时跟踪和分析。
目前国内芯片实现跟踪功能的比较少,调试手段主要还是静态调试。通过断点和单步把处理器暂停,进行读写寄存器和存储器的操作。但是跟踪可以方便的捕捉高速信号以及实现高级的调试功能,可以记录程序高速运行时轨迹,便于用户程序的查错、恢复等。
发明内容:
本发明主要目的是为嵌入式系统的调试实现指令跟踪和总线的地址数据跟踪的功能。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。根据触发点Trigger point的位置,开始计数,当计数到跟踪后的计数器(trace after count)的值的时候,就停止往RAM里存数。PC机通过JTAG接口读取RAM的数值。从End point+1的地址开始读,读RAM大小的数据,终止点为end point。其中包是变长包,如图5所示,具体定义如下:
S/N 1位,1代表程序顺序执行,0代表程序跳转。
PC 1位,1代表记录PC,0代表不计录PC。
DR 1位,1代表有读数据存储器的操作,0代表没有读数据存储器的操作。
DW 1位,1代表有写数据存储器的操作,0代表没有写数据存储器的操作。
RR 1位,1代表有读待观测总线的操作,0代表没有读待观测总线的操作。
RW 1位,1代表有写待观测总线的操作,0代表没有写待观测总线的操作。
CR 1位,1代表有读程序存储器的操作,0代表没有读程序存储器的操作。
CW 1位,1代表有写程序存储器的操作,0代表没有写程序存储器的操作。
CNTR 8位,记录当前counter的值。
PC_VALUE 24位,记录下一条指令的PC值。当PC为1的时候,才有该选项。
RdAddr 24位或者16位,记录读存储器的地址。当DR,RR,或者CR有效的时候,才有该选项。
RdData 16位,记录读存储器的数据。当DR,RR,或者CR有效的时候,才有该选项。
WrAddr 24位或者16位,记录写存储器的地址。当DW,RW,或者CW有效的时候,才有该选项。
WrData 16位,记录写存储器的数据。当DW,RW,或者CW有效的时候,才有该选项。
指令跟踪包指的是跟踪模块跟踪指令的运行情况输出的数据包,计算机可以根据指令跟踪包分析出指令执行的情况,实现指令跟踪。指令跟踪包分为:分支地址包(间接分支包)和指令包(用于指示指令的执行)。分支地址包给出间接分支指令的目标地址。无论分支包是否被跟踪,都会输出。此时,符号位PC为1,PC_VALUE值为下一条PC值。指令跟踪包有两种基本单元:E代表指令条件满足被执行以及N代表指令条件不满足没被执行。举例如下:
指令 | Atoms | 指令跟踪包 | 包格式 |
Mov | E | ||
Add | E | ||
Jb<fail> | N | EEN | 10000000 00000010 |
Jmp lable1 | E |
指令 | Atoms | 指令跟踪包 | 包格式 |
……. | |||
Lable1:MOVdirect,[Rs] | E<data1> | EE<data1> | 001100000 0000010Rs Rs所指的数据direct direct所指的数据 |
Cmp | E | ||
Cjne<fail> | N | EN | 100000000 0000001 |
因为Jb指令没有执行而输出EEN。符号位S/N为1,CNTR值为当前的counter值(10)。因为执行mov data指令,符号位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值。
Claims (3)
1.一种嵌入式处理器跟踪调试系统的实现方法,其特征在于该方法实现步骤如下:
(1)通过JTAG接口配置跟踪调试寄存器,设置触发和滤波条件控制跟踪;
(2)监视程序存储器地址数据总线,数据存储器地址数据总线,以及待观测总线的地址和数据,与预设的跟踪调试寄存器相比较,根据设置的触发和滤波条件实现触发和滤波;
(3)分析采集到的数据,判断指令是否执行、指令是不是分支指令;
(4)当预设的数据滤波条件满足的时候输出数据包,输出包按照一定的包格式存到RAM中;
(5)计算机通过JTAG接口把RAM中的数据读出,根据约定的协议解析包恢复跟踪信息。
2.如权利要求1所述的一种嵌入式处理器跟踪调试系统的实现方法,其特征在于所述设置触发和滤波条件控制跟踪是设置存储器地址或数据、计算机或者待观测总线的地址或数据为触发条件,设置存储器地址范围或数据范围、计算机范围或者待观测总线的地址范围或数据范围为滤波条件。
3.如权利要求1所述的一种嵌入式处理器跟踪调试系统的实现方法,其特征在于(3)进一步包括以下步骤:当第一次满足触发条件的时候或者同步频率计数器为0的时候输出同步包;如果当前指令是直接分支指令,则记录该条指令是否被执行的信息,如果没有执行,则输出指令包;如果被执行了,但连续执行的指令个数等于15,则输出指令包;如果被执行了,但连续执行的指令个数小于15,则计数器加一,不打包输出;如果当前指令是间接分支指令,则输出分支地址包,包含下一条指令的地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008102279875A CN101751327B (zh) | 2008-12-04 | 2008-12-04 | 嵌入式处理器的跟踪调试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008102279875A CN101751327B (zh) | 2008-12-04 | 2008-12-04 | 嵌入式处理器的跟踪调试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101751327A true CN101751327A (zh) | 2010-06-23 |
CN101751327B CN101751327B (zh) | 2012-04-18 |
Family
ID=42478334
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008102279875A Active CN101751327B (zh) | 2008-12-04 | 2008-12-04 | 嵌入式处理器的跟踪调试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101751327B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103631739A (zh) * | 2012-08-28 | 2014-03-12 | 华为技术有限公司 | 嵌入式系统的定位分析方法和嵌入式系统 |
CN103902426A (zh) * | 2012-12-27 | 2014-07-02 | 英飞凌科技股份有限公司 | 多层追踪 |
CN104272271A (zh) * | 2012-05-07 | 2015-01-07 | 密克罗奇普技术公司 | 具有指令跟踪能力的处理器装置 |
CN104572515A (zh) * | 2013-10-28 | 2015-04-29 | 重庆重邮信科通信技术有限公司 | 跟踪模块、方法、系统和片上系统芯片 |
CN109450592A (zh) * | 2018-09-29 | 2019-03-08 | 广东雅达电子股份有限公司 | 一种通信协议重组方法 |
CN110032482A (zh) * | 2019-04-11 | 2019-07-19 | 盛科网络(苏州)有限公司 | 片上调试装置和方法 |
WO2019223314A1 (zh) * | 2018-05-22 | 2019-11-28 | 深圳云天励飞技术有限公司 | 神经网络处理器的调试系统及方法 |
CN112486752A (zh) * | 2020-12-18 | 2021-03-12 | 时擎智能科技(上海)有限公司 | 一种处理器跟踪系统、方法、存储介质及终端 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100422953C (zh) * | 2005-12-30 | 2008-10-01 | 北京中电华大电子设计有限责任公司 | 利用HDL扩展串口的SoC系统在线调试方法 |
CN100487668C (zh) * | 2006-10-10 | 2009-05-13 | 北京中电华大电子设计有限责任公司 | 一种嵌入式处理器的调试方法 |
-
2008
- 2008-12-04 CN CN2008102279875A patent/CN101751327B/zh active Active
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104272271A (zh) * | 2012-05-07 | 2015-01-07 | 密克罗奇普技术公司 | 具有指令跟踪能力的处理器装置 |
CN103631739A (zh) * | 2012-08-28 | 2014-03-12 | 华为技术有限公司 | 嵌入式系统的定位分析方法和嵌入式系统 |
CN103631739B (zh) * | 2012-08-28 | 2017-07-21 | 华为技术有限公司 | 嵌入式系统的定位分析方法和嵌入式系统 |
CN103902426A (zh) * | 2012-12-27 | 2014-07-02 | 英飞凌科技股份有限公司 | 多层追踪 |
CN103902426B (zh) * | 2012-12-27 | 2017-04-12 | 英飞凌科技股份有限公司 | 多层追踪 |
CN104572515A (zh) * | 2013-10-28 | 2015-04-29 | 重庆重邮信科通信技术有限公司 | 跟踪模块、方法、系统和片上系统芯片 |
CN104572515B (zh) * | 2013-10-28 | 2019-05-31 | 锐迪科(重庆)微电子科技有限公司 | 跟踪模块、方法、系统和片上系统芯片 |
WO2019223314A1 (zh) * | 2018-05-22 | 2019-11-28 | 深圳云天励飞技术有限公司 | 神经网络处理器的调试系统及方法 |
CN109450592A (zh) * | 2018-09-29 | 2019-03-08 | 广东雅达电子股份有限公司 | 一种通信协议重组方法 |
CN110032482A (zh) * | 2019-04-11 | 2019-07-19 | 盛科网络(苏州)有限公司 | 片上调试装置和方法 |
CN112486752A (zh) * | 2020-12-18 | 2021-03-12 | 时擎智能科技(上海)有限公司 | 一种处理器跟踪系统、方法、存储介质及终端 |
Also Published As
Publication number | Publication date |
---|---|
CN101751327B (zh) | 2012-04-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101751327B (zh) | 嵌入式处理器的跟踪调试方法 | |
US6539341B1 (en) | Method and apparatus for log information management and reporting | |
CN101493847A (zh) | 一种通讯片上系统芯片追踪调试的方法及装置 | |
CN101770424B (zh) | 适于数字通信终端底层协议栈的数据采集与仿真系统 | |
CN100449477C (zh) | 用于嵌入式系统的实时调试器接口 | |
CN102360329B (zh) | 总线监控与调试控制装置及进行总线监控与总线调试的方法 | |
CN101458725B (zh) | 微控制器芯片及其调试方法 | |
CN110032482A (zh) | 片上调试装置和方法 | |
CN101354675B (zh) | 一种嵌入式软件动态内存检测的方法 | |
US20100180245A1 (en) | Methods and products for determining and visualizin ic behavior | |
CN101154184A (zh) | 一种微控制器jtag调试方法 | |
CN103593271A (zh) | 一种片上系统芯片追踪调试的方法及装置 | |
CN100388234C (zh) | 一种基于有限状态机的对内存变量改写进行监控的方法 | |
CN109254883A (zh) | 一种片上存储器的调试装置及方法 | |
CN115221070A (zh) | 基于NVMe盘的片上系统诊断方法 | |
CN111008133B (zh) | 粗粒度数据流架构执行阵列的调试方法及装置 | |
CN109902000A (zh) | 变速多通道调试追踪系统、方法、设备及存储介质 | |
CN202267954U (zh) | 总线监控与调试控制装置 | |
CN106528414A (zh) | 处理器芯片仿真器 | |
CN103631739A (zh) | 嵌入式系统的定位分析方法和嵌入式系统 | |
CN102110045B (zh) | 实时显示调试信息的仿真器 | |
CN103077080A (zh) | 基于高性能平台的并行程序性能数据采集方法及装置 | |
US10970442B1 (en) | Method of debugging hardware and firmware of data storage | |
CN100371907C (zh) | 用于处理器的追踪调试方法及系统 | |
CN101206613A (zh) | 高速基本输入/输出系统调试卡 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C56 | Change in the name or address of the patentee | ||
CP02 | Change in the address of a patent holder |
Address after: 102209 Beijing, Beiqijia, the future of science and technology in the south area of China electronic network security and information technology industry base C building, Patentee after: Beijing CEC Huada Electronic Design Co., Ltd. Address before: 100102 Beijing City, Chaoyang District Lize two Road No. 2, Wangjing science and Technology Park A block five layer Patentee before: Beijing CEC Huada Electronic Design Co., Ltd. |