CN101162438A - 一种嵌入式处理器的调试技术 - Google Patents
一种嵌入式处理器的调试技术 Download PDFInfo
- Publication number
- CN101162438A CN101162438A CNA2006101136292A CN200610113629A CN101162438A CN 101162438 A CN101162438 A CN 101162438A CN A2006101136292 A CNA2006101136292 A CN A2006101136292A CN 200610113629 A CN200610113629 A CN 200610113629A CN 101162438 A CN101162438 A CN 101162438A
- Authority
- CN
- China
- Prior art keywords
- debugging
- register
- processor
- service routine
- interrupt service
- 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)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
本发明提供一种基于高速JTAG嵌入式处理器的调试技术,该调试技术支持单步、断点、复位、查看修改存储器或内部SFR寄存器、查看程序变量等调试手段。整个调试系统包括计算机上的开发调试环境,片上仿真模块,嵌入式处理器,以及嵌入式处理器的存储器/外设等。开发调试环境包含编译器,汇编器,连接器,调试器等,它通过计算机的并口发出调试命令和数据,片上仿真模块对接收到的命令进行译码,根据相应的命令把数据以正确的格式传给处理器;通过触发处理器进入中断,实现对程序的单步和断点的控制;通过与中断服务程序的配合读取和修改SFR寄存器。本发明采用高速JTAG技术提高传输速度,并且使用了简洁、严谨的调试流程,适用于嵌入式处理器的调试领域,相比传统的调试技术更简单易行,传输速度快且易于IP共享。
Description
技术领域
本发明涉及嵌入式处理器的调试领域,特别是基于JTAG协议的嵌入式处理器调试领域。
背景技术
传统的调试技术是调试主机通过设置寄存器的某一位产生调试请求,处理器接受调试请求进入调试模式,并置调试应答信号有效。进入调试模式后,处理器停止工作并与系统的其它部分隔离。此时内核不再从ROM中取指,而是由调试主机将需要处理器执行的指令(为实现调试功能的指令)通过JTAG接口插入到处理器的指令寄存器。通过选择适当的指令和控制这些指令的执行,执行的结果可用来检测或者修改存储器内容以及处理器寄存器。由于调试过程中使用了处理器的指令寄存器,在进入调试模式后需要保护以及退出调试模式前需要恢复程序正常运行的寄存器信息。而且这种调试技术调试模块和处理器内部逻辑联系紧密,不宜于调试模块的IP共享;同时一次控制的辅助操作多,导致时间长而效率低。
另外,JTAG(Joint TestAction Group,联合测试行动小组)是一种国际标准测试协议(IEEE1149.1兼容),主要用于芯片内部测试(Boundary Scan&,边界扫描)以及嵌入式系统的仿真器。标准的JTAG接口是5线:TMS、TCK、TDI、TDO,TRST,分别为模式选择、时钟、数据输入、数据输出线和复位。由于标准JTAG协议是串行传输数据导致传输速度慢。然而现在嵌入式系统的存储器容量越来越大,需要传输的数据传输量越来越多,串行传输严重影响调试性能。
发明内容
本发明主要目的是提供一种简单易行,传输速度快且易于共享的调试方法,以解决现有技术的传输速度慢,通信效率低,调试模块与处理器的耦合度高的弊端。该调试技术支持常用的单步、断点、复位、查看修改存储器或内部SFR(Special Function Registers)寄存器、查看程序变量等调试手段。本发明的解决方案是:
片上仿真模块通过硬件逻辑输出中断信号控制处理器进入调试模式,并通过控制中断信号的生成位置来实现单步和断点的功能。处理器响应中断,进入中断服务程序。中断服务程序把处理器的SFR寄存器的值暂放到内部另辟的一段RAM之后等待调试主机的结束命令。这时调试主机通过高速JTAG接口把命令和数据传给片上仿真模块,片上仿真模块对命令译码,读写存储器后写寄存器的某一位,退出中断服务程序。中断服务程序中也支持对处理器的SFR寄存器的读写操作。片上仿真模块和所有存储器直接相连,支持对外部存储器的直接高速读写。
本发明充分利用并口的管脚资源,推出独特的11线JTAG接口,把TDI和TDO由一位增为四位,加快了通信速度。同时修改了调试主机和片上仿真模块之间的通信协议,实现一次传输多个数据,提高了传输效率,节省了传输时间。
本发明的调试技术,无需借用处理器的指令寄存器,无需提前保存和重新回写相关的寄存器,通过中断的方式来实现简单易行,模块比较独立易于移植和共享;而且对接口和传输协议进行了修改,大幅的提高传输效率。
附图说明
图1系统结构框图
图2片上仿真模块的逻辑框图
图3高速JTAG与计算机并口的连接图
图4断点产生原理
图5写存储器的波形
图6读存储器的波形
图7中断服务程序流程
具体实施方式:
下面结合附图和实例进一步说明使用本发明的调试方法支持一个16位CPU的调试。该16位CPU是ASIC设计,进行FPGA验证时需增加支持硬件仿真的功能。使用本发明的调试方法实现了对CPU的单步、断点、复位、暂停、查看修改内存或内部寄存器、查看程序变量的控制。
图1是系统结构框图,其中TCK,TDI[3:0],TDO[3:0],TMS,TRST是计算机上的仿真环境与片上仿真模块之间的高速JTAG接口的信号。中断和复位信号控制CPU的运行,中断服务程序和片上仿真模块之间通过Ack,End,Sfr_change信号配合协作。仿真软件读取CPU的PC指针指示当前程序运行的位置。片上仿真模块支持对所有存储器的直接读写操作。
图2是片上仿真模块的逻辑框图。JTAG接口的数据经过TAP控制器解析存放到命令寄存器中。命令寄存器对命令译码后,根据相应的命令把随后的JTAG接口的数据分别放到数据长度地址寄存器、数据寄存器、断点值寄存器、控制寄存器中。如果是对存储器的读取命令,根据命令类型对对应的存储器输出控制信号,地址以及数据,实现对存储器的读写;如果是设置断点的命令,把断点值放到断点寄存器中;如果读写控制寄存器的命令,则读取或修改控制寄存器的值。根据控制寄存器的内容输出中断以及复位信号来实现对CPU运行的控制。当断点值寄存器的值和PC值相等时,就会输出中断信号。根据CPU输出的Ack信号,以及控制寄存器的End,Sfr_change位来控制中断服务程序的运行,完成调试主机和调试模块以及CPU之间的通信。
图3是高速jtag接口与并口的连接。高速JTAG与普通JTAG接口很相似,区别在于普通JTAG接口的tdi和tdo,都是1bit位串行传输数据,而高速JTAG为4bit位传输数据。这样传输速率提高了四倍。计算机的并口的第3脚经过驱动作为TCK,第4脚经过驱动作为TMS,第9、8、7、6脚经过驱动作为TDI[3:0],TDO[3:0]经过驱动输入到第11、10、12、13脚,由于采用4位的TDI和TDO,接收或发送一个字节的数据,只要两个TCK时钟,大大节约了时间。
如图2所示,内部寄存器有命令寄存器,控制寄存器,断点值寄存器,地址寄存器。主机通过并口发出调试命令和数据,片上仿真模块通过tap控制器把tdi总线上前八位数据保存到命令寄存器中,接着对命令进行译码,再根据不同的命令把数据分别存放到地址寄存器,断点值寄存器和控制寄存器中。表1是命令寄存器的命令类型。包含go,读写存储器,读写断点,读写控制寄存器,读pc。地址寄存器包含了即将要传输的数据的起始地址以及数据长度,格式如表2所示。断点值寄存器是23位的寄存器,存放程序暂停的位置。控制寄存器里包含了整个系统的控制和状态信息,格式如表3所示。
表1命令类型和编码
命令类型 | 编码 |
GO_COMMAND | 0xD |
WRITE_ROM | 0x1 |
READ_ROM | 0x2 |
WRITE_RAM | 0x3 |
READ_RAM | 0x4 |
WRITE_EEPROM | 0x5 |
READ_EEPROM | 0x6 |
WRITE_JRAM(sfr寄存器) | 0x7 |
READ_JRAM(sfr寄存器) | 0x8 |
WRITE_CTRL(控制寄存器) | 0x9 |
READ_CTRL(控制寄存器) | 0xA |
WRITE_BKP1(断点1) | 0xB |
READ_BKP1(断点1) | 0xC |
WRITE_BKP2(断点2) | 0xE |
READ_BKP2(断点2) | 0xF |
WRITE_BKP3(断点3) | 0x10 |
READ_BKP3(断点3) | 0x11 |
READ_PC | 0x12 |
表2地址寄存器
位 | 存取属性 | 描述 |
32:23 | R/W | 数据长度 |
22:0 | R/W | 地址 |
表3控制寄存器
位 | 存取属性 | 描述 |
7:3 | 保留 | |
2 | R/W | CPU_end结束标志位 |
1 | R/W | 单步使能位 |
0 | R/W | CPU复位 |
如图2所示,根据控制寄存器的内容输出中断以及复位信号来实现对CPU的控制,该CPU在每条指令执行的第二个时钟周期时会判断有没有中断信号,如果有就不执行该条指令,响应中断;如果没有,就继续执行该指令。根据这个原理,我们通过写控制寄存器命令配置控制寄存器的单步使能位为高,硬件逻辑在退出中断服务程序后的第二条指令的第一个时钟周期开始输出一个时钟周期长度的中断信号。这样保证在执行完一条指令后进入中断,实现单步功能。如表3所示,写控制寄存器的位2为高,硬件逻辑在退出中断服务程序后执行一条指令后产生中断信号实现单步操作。
图4是断点实现的原理,通过写断点命令配置断点值寄存器为预期的断点地址;程序运行过程中每个时钟周期都采样当前的PC值,与断点寄存器里得值进行比较,相等就产生中断信号。
复位操作通过把控制寄存器的Reset位置高,在退出中断服务程序后产生一个复位信号给处理器。
如图2所示,片上仿真模块直接和存储器的接口直接相联。对存储器的读写分两步执行:首先通过读写存储器命令通知硬件是对哪个存储器的操作,然后保存起始地址和数据长度到地址寄存器;接着通过GO命令,如果上一步的命令是写操作,go之后紧跟的就是待写的数据,如果上一步的命令是读操作,go之后在tdo总线上就会输出相应的数据。读操作如图6所示,根据起始地址和数据长度构造读存储器的时序,读入的数据暂存内部的寄存器中,然后配合tck时钟在tdo总线上输出数据。写操作如图5所示,把tdi上的数据整合成16位放到内部寄存器里,根据起始地址和数据长度构造存储器的写时序,把数据写入存储器中。
如图2所示,根据CPU输出的Ack信号,以及控制寄存器的End,Sfr_change信号来控制中断服务程序的运行。在中断服务程序中实现了对SFR寄存器的读写操作。由于CPU内部的SFR寄存器众多,而且地理位置分布很零乱,如果仍采用与读写存储器的方法来读写SFR寄存器,需要片上仿真模块和每个SFR寄存器都直连,设计会非常复杂。因此我们通过在中断服务程序中添加指令来实现读写SFR的功能。通过mov指令依次把SFR寄存器的值移到内部另辟的一段JRAM空间中,然后再通过JTAG口,使用读存储器的方法把数据传给调试器。通过与软件协商好的寄存器顺序,正确显示所有的寄存器的值。如果更改SFR寄存器,通过写存储器方法把要更改的寄存器的地址和内容放到内部的JRAM空间里,同时硬件更改标志位Sfr_change表明SFR寄存器的值已更改。中断服务程序查询到该标志位后读JRAM得到待更改的寄存器的地址和内容,进行相应的寄存器修改。之后再使能END标志位通知中断服务程序退出中断,中断服务程序的流程如图7。另外,中断服务程序和程序代码是两个ROM存储空间。进入中断后,处理器从中断服务程序的IROM中取指,退出中断服务程序后,程序从程序代码(PROM)中取指。这样实现的目的,是由于该中断是不对用户开放的,属于调试中断。所以不应占用用户的代码空间,以免产生分歧出错。
根据上述方案实现的片上仿真模块,已和调试器,CPU连调成功,工作稳定且速度很快。实际测试传输1兆字节的数据的时间小于1s。为本项目组的16位的CPU验证和用户提供了良好的调试平台。
Claims (6)
1.一种基于JTAG的嵌入式处理器的调试技术,其特征在于片上仿真模块作为调试主机和处理器之间的接口,与调试主机通过JTAG接口相连,与处理器通过中断的方式实现调试。
2.如权利要求1所述的调试技术,其特征在于采用高速JTAG接口实现嵌入式处理器的调试,TDI、TDO都是四位串行数据传输。
3.如权利要求1所述的调试技术,其特征在于中断服务程序和程序代码是两个ROM存储空间,进入中断后,处理器从中断服务程序的IROM中取指,退出中断服务程序后,程序从程序代码(PROM)中取指。
4.如权利要求1所述的调试技术,其特征在于中断服务程序和片上仿真模块之间的配合方法采用在片上仿真模块中设立中断服务程序可以读写的寄存器,中断服务程序和片上仿真模块通过该寄存器了解相互的状态,配合实现控制。
5.如权利要求1所述的调试技术,其特征是在中断服务程序中,通过指令的方式把SFR寄存器的值放到内部另辟的一块RAM中,再通过JTAG口把RAM中的数据即SFR寄存器的值读上来;修改SFR寄存器把需要修改的寄存器的值和地址放到上述的RAM中,中断服务程序读数并进行相应的修改。
6.如权利要求1所述的调试技术,其特征在于单步实现的方法,在退出中断服务程序后的第二条指令的第一个时钟周期输出一个时钟周期长度的中断信号,实现刚好执行了一条指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006101136292A CN100487668C (zh) | 2006-10-10 | 2006-10-10 | 一种嵌入式处理器的调试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006101136292A CN100487668C (zh) | 2006-10-10 | 2006-10-10 | 一种嵌入式处理器的调试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101162438A true CN101162438A (zh) | 2008-04-16 |
CN100487668C CN100487668C (zh) | 2009-05-13 |
Family
ID=39297365
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006101136292A Expired - Fee Related CN100487668C (zh) | 2006-10-10 | 2006-10-10 | 一种嵌入式处理器的调试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100487668C (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010012172A1 (zh) * | 2008-07-31 | 2010-02-04 | 华为技术有限公司 | 一种数据处理方法、控制器及系统 |
CN102063367A (zh) * | 2010-10-29 | 2011-05-18 | 凌阳科技股份有限公司 | 针对当机程序的离线分析方法及装置 |
CN101751327B (zh) * | 2008-12-04 | 2012-04-18 | 北京中电华大电子设计有限责任公司 | 嵌入式处理器的跟踪调试方法 |
CN102902624A (zh) * | 2012-11-09 | 2013-01-30 | 上海斐讯数据通信技术有限公司 | 一种软件调试系统及方法 |
CN101769988B (zh) * | 2008-12-30 | 2013-11-06 | 易视芯科技(北京)有限公司 | 芯片调试方法、系统和调试模块 |
CN110765716A (zh) * | 2019-12-06 | 2020-02-07 | 国微集团(深圳)有限公司 | 数字产品的仿真信号查看方法及系统 |
CN112069020A (zh) * | 2020-08-13 | 2020-12-11 | 中国航空无线电电子研究所 | 基于嵌入式操作系统的机载航电设备软件故障监控系统 |
CN113971982A (zh) * | 2020-07-23 | 2022-01-25 | 广州航新电子有限公司 | 一种绕过定制片上系统芯片进行存储芯片flash读写的测试方法 |
CN114610596A (zh) * | 2020-12-08 | 2022-06-10 | 上海市信息网络有限公司 | 实现用户程序断点调试的处理器芯片调试系统 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102467446A (zh) * | 2010-11-11 | 2012-05-23 | 上海华虹集成电路有限责任公司 | 可设置程序指针值的处理器芯片仿真器 |
-
2006
- 2006-10-10 CN CNB2006101136292A patent/CN100487668C/zh not_active Expired - Fee Related
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010012172A1 (zh) * | 2008-07-31 | 2010-02-04 | 华为技术有限公司 | 一种数据处理方法、控制器及系统 |
CN101639516B (zh) * | 2008-07-31 | 2013-08-28 | 华为技术有限公司 | 一种数据处理方法、控制器及系统 |
CN101751327B (zh) * | 2008-12-04 | 2012-04-18 | 北京中电华大电子设计有限责任公司 | 嵌入式处理器的跟踪调试方法 |
CN101769988B (zh) * | 2008-12-30 | 2013-11-06 | 易视芯科技(北京)有限公司 | 芯片调试方法、系统和调试模块 |
CN102063367A (zh) * | 2010-10-29 | 2011-05-18 | 凌阳科技股份有限公司 | 针对当机程序的离线分析方法及装置 |
CN102063367B (zh) * | 2010-10-29 | 2013-07-17 | 凌阳科技股份有限公司 | 针对当机程序的离线分析方法及装置 |
CN102902624A (zh) * | 2012-11-09 | 2013-01-30 | 上海斐讯数据通信技术有限公司 | 一种软件调试系统及方法 |
CN102902624B (zh) * | 2012-11-09 | 2015-10-21 | 上海斐讯数据通信技术有限公司 | 一种软件调试系统及方法 |
CN110765716A (zh) * | 2019-12-06 | 2020-02-07 | 国微集团(深圳)有限公司 | 数字产品的仿真信号查看方法及系统 |
CN113971982A (zh) * | 2020-07-23 | 2022-01-25 | 广州航新电子有限公司 | 一种绕过定制片上系统芯片进行存储芯片flash读写的测试方法 |
CN112069020A (zh) * | 2020-08-13 | 2020-12-11 | 中国航空无线电电子研究所 | 基于嵌入式操作系统的机载航电设备软件故障监控系统 |
CN112069020B (zh) * | 2020-08-13 | 2023-09-15 | 中国航空无线电电子研究所 | 基于嵌入式操作系统的机载航电设备软件故障监控系统 |
CN114610596A (zh) * | 2020-12-08 | 2022-06-10 | 上海市信息网络有限公司 | 实现用户程序断点调试的处理器芯片调试系统 |
Also Published As
Publication number | Publication date |
---|---|
CN100487668C (zh) | 2009-05-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100487668C (zh) | 一种嵌入式处理器的调试方法 | |
CN110603528B (zh) | 调试系统和方法 | |
CN100565472C (zh) | 一种适用于多处理器核系统芯片的调试方法 | |
CN101154183B (zh) | 一种微控制器嵌入式在线仿真调试系统 | |
CN100573537C (zh) | 一种soc芯片系统级验证系统及方法 | |
CN107992390B (zh) | 一种基于片上总线的芯片调试方法 | |
CN107907814B (zh) | 一种提高芯片量产测试效率的方法 | |
CN101840368B (zh) | 多核处理器的jtag实时片上调试方法及其系统 | |
US10255400B1 (en) | Debugging system and method | |
CN105550119A (zh) | 一种基于jtag协议的仿真装置 | |
CN109254883B (zh) | 一种片上存储器的调试装置及方法 | |
CN105335548B (zh) | 一种用于ice的mcu仿真方法 | |
CN101154184A (zh) | 一种微控制器jtag调试方法 | |
CN101004707A (zh) | 一种嵌入式软件调试装置及其调试实现方法 | |
CN107290656B (zh) | 一种集成双向crc校验功能的可扩展jtag调试结构 | |
CN104461796B (zh) | 用于嵌入式8051cpu的jtag调试模块及调试方法 | |
CN101329650B (zh) | 智能卡仿真器 | |
Hu et al. | A parallel JTAG-based debugging and selection scheme for multi-core digital signal processors | |
CN112557886A (zh) | 协议转换桥接电路、知识产权核以及系统级芯片 | |
CN101788932B (zh) | 一种用于提高可靠性的软硬件协同容错系统 | |
CN203133823U (zh) | 一种嵌入式在线仿真器 | |
US20070198816A1 (en) | Emulation system for a single-chip multiple-microcontroller and emulation method thereof | |
EP4394609A1 (en) | Techniques for debug, survivability, and infield testing of a system-on-a-chip or a system-on-a-package | |
Park et al. | Design of on-chip debug system for embedded processor | |
CN105005522A (zh) | 一种lcd数码管在线模拟方法 |
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: 100015 Beijing city Chaoyang District District No. 1 Gaojiayuan Patentee before: Beijing CEC Huada Electronic Design Co., Ltd. |
|
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090513 Termination date: 20161010 |
|
CF01 | Termination of patent right due to non-payment of annual fee |