CN104461796B - 用于嵌入式8051cpu的jtag调试模块及调试方法 - Google Patents
用于嵌入式8051cpu的jtag调试模块及调试方法 Download PDFInfo
- Publication number
- CN104461796B CN104461796B CN201310423338.3A CN201310423338A CN104461796B CN 104461796 B CN104461796 B CN 104461796B CN 201310423338 A CN201310423338 A CN 201310423338A CN 104461796 B CN104461796 B CN 104461796B
- Authority
- CN
- China
- Prior art keywords
- 8051cpu
- instruction
- jtag
- value
- register
- 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.)
- Expired - Fee Related
Links
Abstract
本发明公开了一种用于嵌入式8051CPU的JTAG调试模块,包括:实现JTAG协议的JTAG接口模块;与JTAG接口模块相连接的,实现寄存器地址解析及控制的多路控制模块;与多路控制模块相连接的状态寄存器和断点寄存器;指令缓存器及控制单元,与多路控制模块相连接,其指令缓存器用于缓存外部插入的指令,其控制单元产生读写缓存器的控制信号和读写地址信号;ACC值的读窗口,与多路控制模块相连接,为从8051CPU核输入的信号线;PC值的读窗口,与多路控制模块相连接,为从8051CPU核输入的信号线。本发明还公开了一种采用JTAG调试模块进行调试的方法。本发明能够在一次JTAG通讯中使指令传入,并能减少数据总线的监控逻辑。
Description
技术领域
本发明涉及集成电路设计与测试技术领域,特别是涉及一种用于嵌入式8051CPU的JTAG(Joint Test Action Group联合测试行为组织)调试模块。本发明还涉及一种采用所述JTAG调试模块进行调试的方法。
背景技术
8051CPU作为一款经典的CPU,被广泛的集成在SOC(片上系统)芯片上,应用在工业和消费领域的各个方面,随着近年来集成电路SOC技术的发展,软件的开发也越来越复杂,为提高软件的开发效率,嵌入式8051CPU的调试技术也得到了越来越多的研究。
调试技术的关键是在调试状态下既能观察CPU内部状态或RAM区的值而又不破坏用户程序状态。因此每次进入调试状态时,都需要先备份用户的程序状态,在退出调试状态时,恢复用户程序状态。
JTAG最初是用于测试印刷电路板,后来被广泛应用于嵌入式系统的调试接口,目前主流的调试接口都是基于JTAG的。因为8051核没有专用的调试指令,调试时需要从外部插入指令让CPU执行来获取内部状态。8051CPU是8比特的CPU,指令总线上每次取指令只能是一个字节,而8051的指令中通常包括很多双字节甚至多字节指令。目前为解决此问题,外部插入指令时通常需要在硬件逻辑上分别定义好指令类型和指令地址,通过多次通讯设置好指令类型和指令地址后,才能执行完一条完整指令,降低了效率。另外为获取RAM或8051CPU内部状态的值,通常的做法是监测8051CPU的数据总线,然后再传递到JTAG移位寄存器上,也会增加逻辑的复杂度。
发明内容
本发明要解决的技术问题是提供一种用于嵌入式8051CPU的JTAG调试模块,能够在一次JTAG通讯中使指令传入,并能减少数据总线的监控逻辑;为此,本发明还要提供一种采用所述JTAG调试模块进行调试的方法。
为解决上述技术问题,本发明的用于嵌入式8051CPU的JTAG调试模块,包括:
一JTAG接口模块,用于实现JTAG协议的;
一多路控制模块,与所述JTAG接口模块相连接,用于实现寄存器地址解析及控制;
一状态寄存器,与所述多路控制模块相连接,用于表示CPU的运行状态标志;
一断点寄存器;与所述多路控制模块相连接,用于存储外部接口传入的断点值;
其中,还包括:
指令缓存器及控制单元,与所述多路控制模块相连接,其指令缓存器用于缓存外部插入的指令,且在外部往该指令缓存器一次写入完整指令,使指令在一次JTAG通讯中传入;其控制单元产生读写缓存器的控制信号和读写地址信号;
一ACC(累加器)值的读窗口,与所述多路控制模块相连接,为从8051CPU核输入的信号线,能从8051CPU的外部直接备份用户的ACC值;在8051CPU的外部能将目标地址的值移入ACC,然后再访问ACC的读窗口,获得该值;
一PC(程序计数器)值的读窗口,与所述多路控制模块相连接,为从8051CPU核输入的信号线,能从8051CPU的外部直接备份用户的PC值。
采用上述JTAG调试模块进行调试的方法,包括如下步骤:
步骤一、当进入调试模式时,立即读取ACC和PC值,在外部进行备份;
步骤二、向指令缓存器中写入指令,使8051CPU执行插入的指令,将要读的目标地址的结果移入ACC,并读取ACC的值,使用户程序状态备份;读出8051CPU内部状态和RAM中的值;
步骤三、当要修改8051CPU内部状态值或RAM中的值时,则插入指令执行来直接修改;
步骤四、当要退出调试模式时,插入指令恢复用户程序状态,然后让8051CPU恢复运行。
采用本发明的用于嵌入式8051CPU的JTAG调试模块,由于提供了ACC值和PC值的读窗口,可以从8051CPU的外部直接备份用户的ACC值和PC值。指令缓存器能够缓存外部插入的指令,且在外部可以往指令缓存器一次写入完整指令,这样就可以使指令在一次JTAG通讯中传入。另外,在8051CPU的外部可以执行例如MOV(传送)指令将目标地址的值,移入ACC,然后再访问ACC窗口,获得该值,这样就减少了数据总线的监控逻辑。
本发明不必在硬件模块中预先定义调试指令类型,能使传送,执行外部插入的指令一次完成,减少JTAG通讯的交互次数,最大限度的减小了硬件逻辑的规模,结构简单,易于移植,在8051CPU的外部可进行灵活的处理,实现功能强大,高效的调试功能。
附图说明
下面结合附图与具体实施方式对本发明作进一步详细的说明:
图1是所述用于嵌入式8051CPU的JTAG调试模块结构示意图;
图2是图1中指令缓存器用RAM实现时的结构示意图;
图3是图1中控制单元的逻辑时序图;
图4是监控状态下采用JTAG调试模块进行调试的方法流程图。
具体实施方式
本发明的目的是为了解决传递指令由于需要多次通讯使效率低下的问题;以及解决为了监测数据总线,而增加逻辑复杂度的问题。
参见图1所示,所述用于嵌入式8051CPU的JTAG调试模块在一实施例中,包括:一JTAG接口模块,一多路控制模块,一状态寄存器,一断点寄存器,一指令缓存器及控制单元,一ACC值的读窗口,一PC值的读窗口。其核心在于引入了指令缓存器和提供了ACC值和PC值的读窗口。
状态寄存器,用于表示CPU的运行状态标志;如停止运行,全速运行,遇到断点停止等。断点寄存器,用于存储外部接口传入的断点值。
所述指令缓存器为存储部件,用于缓存外部插入的指令,能够存储一条外部写入的完整的8051CPU的任何指令,其存储深度大于等于8051CPU的最大指令长度。
所述控制单元能够根据所述JTAG接口模块传送的指令数据产生写地址信号和写控制信号,将指令数据缓存入指令缓存器;在调试模式下,能够根据8051CPU的读指令时序,产生8051CPU的读地址信号,使8051CPU像在ROM中读取指令一样,依次读取指令执行。
因为ACC和PC为8051CPU的标准部件,ACC,PC的数据可以直接从8051CPU核中引出,链接到多路逻辑。ACC值和PC值的读窗口能够提供8051CPU内ACC和PC的当前值,反映了8051CPU内真实的ACC和PC值。
图1中,JTAG接口模块的端口包括测试时钟输入端口TCK,测试模式选择端口TMS,测试数据输入端口TDI和测试数据输出端口TDO。
如图2所示,所述指令缓存器可以使用一个伪双端口RAM或寄存器组实现,输出位宽为8位。其中Wr_en为RAM的写使能控制信号,Wr_addr为RAM的写地址信号,Wr_dat为RAM的写数据信号,Rd_addr为读地址信号,Clk为时钟信号,Rd_dat为读数据信号。
指令缓存器的控制单元的时序图如图3所示,要产生RAM的写控制wr_en和写地址信号wr_addr以及读地址rd_addr信号。其中写数据wr_dat通过串并转换逻辑后将JTAG接口模块移入的串行数据转化为8位的并行数据;可以定义一个计数器bit_cnt,当计满8位时,写控制有效,然后写地址加一。而读地址可以在每次8051CPU取指令有效后加一。
参见图4所示,采用上述JTAG调试模块进行调试的方法,在调试模式下,外部首先读取ACC和PC值,进行备份。对于在后面执行插入指令过程中会被破坏的用户程序状态,都要读出保存。然后可以执行各种功能,如读出RAM区的值;要退出调试模式时,外部插入指令,依次恢复保存的用户程序状态的值,再恢复ACC的值,然后可以插入JMP一类的指令并执行,跳转到用户程序中断前的PC处,以恢复用户的PC值,最后让8051CPU恢复运行。
以上通过具体实施方式对本发明进行了详细的说明,但这些并非构成对本发明的限制,在本发明的原则和原理之内,本技术领域的人员还可做出诸多变形和改进,这些也应包含在本发明的保护范围之内。
Claims (5)
1.一种用于嵌入式8051CPU的联合测试行为组织JTAG调试模块,包括:实现联合测试行为组织JTAG协议的联合测试行为组织JTAG接口模块;与该联合测试行为组织JTAG接口模块相连接的,实现寄存器地址解析及控制的多路控制模块;与该多路控制模块相连接的,用于表示CPU的运行状态标志的状态寄存器;与所述多路控制模块相连接的,用于存储外部接口传入的断点值的断点寄存器;
其特征在于,还包括:
指令缓存器及控制单元,与所述多路控制模块相连接,其指令缓存器用于缓存外部插入的指令,且在外部往该指令缓存器一次写入完整指令,使指令在一次JTAG通讯中传入;其控制单元产生读写缓存器的控制信号和读写地址信号;
累加器ACC值的读窗口,与所述多路控制模块相连接,为从8051CPU核输入的信号线,能从8051CPU的外部直接备份用户的ACC值;在8051CPU的外部能将目标地址的值移入ACC,然后再访问ACC的读窗口,获得该值;
程序计数器PC值的读窗口,与所述多路控制模块相连接,为从8051CPU核输入的信号线,能从8051CPU的外部直接备份用户的PC值。
2.如权利要求1所述的联合测试行为组织JTAG调试模块,其特征在于:所述指令缓存器为存储部件,能够完整存储8051CPU的任何指令,其存储深度大于等于8051CPU的最大指令长度。
3.如权利要求1所述的联合测试行为组织JTAG调试模块,其特征在于:所述控制单元能够根据所述联合测试行为组织JTAG接口模块传送的指令数据产生写地址信号和写控制信号,将指令数据缓存入指令缓存器;在调试模式下,能够根据8051CPU的读指令时序,产生8051CPU的读地址信号,使8051CPU像在ROM中读取指令一样,依次读取指令执行。
4.如权利要求1所述的联合测试行为组织JTAG调试模块,其特征在于:累加器ACC值的读窗口和程序计数器PC值的读窗口反映了8051CPU内真实的累加器ACC值和程序计数器PC值。
5.一种采用权利要求1-4任一所述联合测试行为组织JTAG调试模块进行调试的方法,其特征在于,包括以下步骤:
步骤一、当进入调试模式时,立即读取累加器ACC值和程序计数器PC值,在外部进行备份;
步骤二、向指令缓存器中写入指令,使8051CPU执行插入的指令,将要读的目标地址的结果移入累加器ACC,并读取累加器ACC的值,使用户程序状态备份,读出8051CPU内部状态的值和RAM中的值;
步骤三、当要修改8051CPU内部状态值或RAM中的值时,则插入指令执行来直接修改;
步骤四、当要退出调试模式时,插入指令恢复用户程序状态,然后让8051CPU恢复运行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310423338.3A CN104461796B (zh) | 2013-09-17 | 2013-09-17 | 用于嵌入式8051cpu的jtag调试模块及调试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310423338.3A CN104461796B (zh) | 2013-09-17 | 2013-09-17 | 用于嵌入式8051cpu的jtag调试模块及调试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104461796A CN104461796A (zh) | 2015-03-25 |
CN104461796B true CN104461796B (zh) | 2017-12-22 |
Family
ID=52907892
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310423338.3A Expired - Fee Related CN104461796B (zh) | 2013-09-17 | 2013-09-17 | 用于嵌入式8051cpu的jtag调试模块及调试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104461796B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109507991B (zh) * | 2018-12-25 | 2020-08-11 | 中国兵器装备集团自动化研究所 | 一种双轴伺服控制平台调试系统及方法 |
CN109828879A (zh) * | 2019-03-01 | 2019-05-31 | 晶晨半导体(上海)股份有限公司 | 硬件设备的调试方法、装置、计算机设备及存储介质 |
CN110659037B (zh) * | 2019-09-25 | 2021-03-09 | 苏州浪潮智能科技有限公司 | 一种基于jtag的烧录装置 |
CN112486752A (zh) * | 2020-12-18 | 2021-03-12 | 时擎智能科技(上海)有限公司 | 一种处理器跟踪系统、方法、存储介质及终端 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6687857B1 (en) * | 1999-11-10 | 2004-02-03 | Mitsubishi Denki Kabushiki Kaisha | Microcomputer which can execute a monitor program supplied from a debugging tool |
CN1779654A (zh) * | 2004-11-19 | 2006-05-31 | 凌阳科技股份有限公司 | 用于处理器的追踪调试方法及系统 |
CN101154184A (zh) * | 2006-09-29 | 2008-04-02 | 上海海尔集成电路有限公司 | 一种微控制器jtag调试方法 |
CN101261601A (zh) * | 2008-04-25 | 2008-09-10 | 浙江大学 | 一种微处理器调试方法及所用的微处理器调试模块 |
CN101329385A (zh) * | 2008-08-01 | 2008-12-24 | 炬力集成电路设计有限公司 | 一种片上系统的调测系统、调测方法以及片上系统 |
CN102591760A (zh) * | 2011-09-07 | 2012-07-18 | 上海大学 | 基于长短扫描链与jtag接口的片上调试电路 |
-
2013
- 2013-09-17 CN CN201310423338.3A patent/CN104461796B/zh not_active Expired - Fee Related
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6687857B1 (en) * | 1999-11-10 | 2004-02-03 | Mitsubishi Denki Kabushiki Kaisha | Microcomputer which can execute a monitor program supplied from a debugging tool |
JP4190114B2 (ja) * | 1999-11-10 | 2008-12-03 | 株式会社ルネサステクノロジ | マイクロコンピュータ |
CN1779654A (zh) * | 2004-11-19 | 2006-05-31 | 凌阳科技股份有限公司 | 用于处理器的追踪调试方法及系统 |
CN101154184A (zh) * | 2006-09-29 | 2008-04-02 | 上海海尔集成电路有限公司 | 一种微控制器jtag调试方法 |
CN101261601A (zh) * | 2008-04-25 | 2008-09-10 | 浙江大学 | 一种微处理器调试方法及所用的微处理器调试模块 |
CN101329385A (zh) * | 2008-08-01 | 2008-12-24 | 炬力集成电路设计有限公司 | 一种片上系统的调测系统、调测方法以及片上系统 |
CN102591760A (zh) * | 2011-09-07 | 2012-07-18 | 上海大学 | 基于长短扫描链与jtag接口的片上调试电路 |
Non-Patent Citations (1)
Title |
---|
一种基于JTAG的SoC片上调试系统的设计;虞致国等;《微电子学与计算机》;20090531;第26卷(第5期);第5-8页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104461796A (zh) | 2015-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102541707B (zh) | 复用jtag接口的fpga片内逻辑分析仪系统和方法 | |
US7930162B1 (en) | Accelerating hardware co-simulation using dynamic replay on first-in-first-out-driven command processor | |
CN101504692B (zh) | 一种验证和测试片上系统的系统及方法 | |
CN106845219B (zh) | 一种针对多种类型数据的入侵检测智能设备 | |
CN107111572B (zh) | 用于避免死锁的方法和电路 | |
CN107992390B (zh) | 一种基于片上总线的芯片调试方法 | |
CN104461796B (zh) | 用于嵌入式8051cpu的jtag调试模块及调试方法 | |
US10078113B1 (en) | Methods and circuits for debugging data bus communications | |
CN109254883B (zh) | 一种片上存储器的调试装置及方法 | |
KR100954568B1 (ko) | 집적 회로 내에서의 진단 데이터 수집 장치 및 방법 | |
JP5236908B2 (ja) | エミュレーションシステム | |
CN203260029U (zh) | 基于fpga的系统芯片原型验证调试装置 | |
US20190271740A1 (en) | Non-intrusive on-chip debugger with remote protocol support | |
CN100487668C (zh) | 一种嵌入式处理器的调试方法 | |
US20030233601A1 (en) | Non-intrusive signal observation techniques usable for real-time internal signal capture for an electronic module or integrated circuit | |
CN201374062Y (zh) | Fpga在线配置电路 | |
CN101763299A (zh) | 一种通用串行总线设备测试方法和装置 | |
CN102253875B (zh) | 基于PicoBlaze嵌入式软核处理器的FPGA逻辑模块调试与数据采集方法 | |
CN100492315C (zh) | 嵌入式信号处理器模拟器 | |
CN102193860B (zh) | 微控制器在线调试电路及方法、微控制器 | |
EP1125200B1 (en) | Maintaining object size information concurrent with data optimization for debugging | |
CN101782626B (zh) | 一种jtag端口控制器 | |
CN111722968A (zh) | 一种硬件调试方法、装置、系统及可读存储介质 | |
CN101814054B (zh) | 一种用于调试微控制器的指令追踪控制器 | |
CN101968763B (zh) | 高速处理器芯片仿真器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20171222 Termination date: 20210917 |
|
CF01 | Termination of patent right due to non-payment of annual fee |