温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
基于
JTAG
高效
调试
系统
设计
实现
张梅娟
电子技术应用 2023年 第49卷 第4期Microelectronic Technology微电子技术基于 JTAG 的高效调试系统设计与实现张梅娟,辛昆鹏,王丽娟,邓佳伟(中国电子科技集团公司第五十八研究所,江苏 无锡 214063)摘 要:为了给自研处理器芯片提供一种高效方便的调试方法,提出了一种基于 JTAG 的片内调试系统设计方法。该调试系统在遵循 JTAG 标准协议的基础上,简化片内调试硬件模式设计,以较少的硬件开销和精简高效的专用调试指令设计,不仅实现了调试中断、指令/数据断点设置、单步执行及寄存器/存储器数据读写等基本调试功能,还支持现场保护与恢复、Trace Buffer、指令插入执行等高级调试功能。经实际芯片测试证明,该调试系统具有兼容 JTAG协议、功能全面、灵活高效、结构简单、便于操作等特点。关键词:调试系统;JTAG 接口;IEEE1149.1;TAP 控制器中图分类号:TN407 文献标志码:A DOI:10.16157/j.issn.0258-7998.223168中文引用格式:张梅娟,辛昆鹏,王丽娟,等.基于 JTAG 的高效调试系统设计与实现J.电子技术应用,2023,49(4):39-43.英文引用格式:Zhang Meijuan,Xin Kunpeng,Wang Lijuan,et al.Design and implementation of high performance debugging system based on JTAGJ.Application of Electronic Technique,2023,49(4):39-43.Design and implementation of high performance debugging system based on JTAGZhang Meijuan,Xin Kunpeng,Wang Lijuan,Deng Jiawei(The Fifty-Eighth Research Institute of China Electronic Technology Group Corporation,Wuxi 214063,China)Abstract:A debugging system based on JTAG interface is proposed in this paper to provide an effective and convenient debugging method for domestic processor chip.The debugging system,which is based on JTAG standard,simplifies the design of the on-chip debugging hardware module.With little hardware overhead,simple and high performance design of the debugging instruction,it is used to realize the debugging interrupt,breakpoint and watch point setting,single step running,register or memory read and write,and other base debugging functions,as well as sence protection and recovery,trace buffer,instruction insert execution and other advanced debugging functions.After passed the actual chip testing,the debugging system has compatibility with JTAG protocol,comprehensive functions,high performance,simple structure,convenient for operation and other features.Key words:debugging system;JTAG protocol;IEEE1149.1;TAP control0 引言随着集成电路技术的飞速发展,芯片规模越来越大,集成度和复杂度也越来越高,这就对芯片调试提出了更高的要求。一个高效可靠的芯片调试系统是提升芯 片 开 发 的 效 率、保 证 芯 片 成 功 率 和 可 靠 性 的 关 键手段16。片上调试(On-Chip Debugging,OCD)是目前应用最广泛的一种芯片调试技术,它是一种在芯片内部提供相应调试功能模块的调试技术,目前最流行的 OCD 技术是 JTAG 技术7。联合测试行动小组(Joint Test Action Group,JTAG)是一种国际标准测试协议 IEEE1149.17,主要作用是完成芯片内部测试。它具有灵活高效、易于实现等优点,是目前使用最为广泛的调试技术,大规模应用在各种处理器芯片中710。本文通过研究与对比主流处理器如 ARM、INTEL 等的调试系统,综合学习各方先进设计理念如 trace 跟踪、现场保护与恢复、指令插入执行等功能,又针对如 ARM调试系统结构过于复杂等问题进行简化与改进,基于自研处理器提出并设计实现了一种基于 JTAG 接口的调试系统。该调试系统的接口设计复用遵循 IEEE1149.1 协议的标准 JTAG 接口设计,无需额外设计且稳定性高,同时也可以快速适配市场上的各种开源调试软件,节约调试软件工具开发时间。简化片内调试硬件模块设计,采用内部逻辑电路互连实现调试系统与 CPU 的数据交互,39Microelectronic Technology微电子技术www.ChinaAET.com同时只设计 3 条专用调试指令即实现调试系统的寄存器读写和指令执行功能,详情可参见 1.3 节,指令设计结构简单、灵活高效、便于操作。此外,该调试系统功能强大,除了实现调试中断、断点设置、单步调试、寄存器和存储器读写等基本调试功能外,还具有调试现场保护与恢复、Trace Buffer、指令插入执行等高级调试功能。1 调试系统设计1.1 调试系统概述如图 1 所示,一个调试系统一般包括三个部分:调试主机、仿真器和调试目标。调试主机一般是一台运行调试软件的计算机,它可以发出调试命令,如设置断点、单步调试、访问寄存器等。仿真器用来接收由调试主机通过 USB 转 串 口 发 送 的 调 试 命 令,并 将 其 转 为 标 准 的JTAG 协议格式,发送给目标处理器。目标处理根据相应的调试指令进行相应的功能操作。目前主流的芯片厂商的调试系统都是针对自家芯片专门设计的,虽然调试技术十分先进,功能也很强大,但一般都结构比较复杂,且不具备一定的通用性。以ARM 处理器为例,它的调试系统是基于自身独有的 coresight 框架,通过 DP、AP 以及 debug 三个模块实现其各项调试功能,每个模块都有着很复杂的逻辑设计。而本文的目标是希望在满足调试各项功能基础上,尽可能简化片内调试模块设计,以较少的硬件开销和精简高效的专用调试指令设计来实现一个功能全面、灵活高效、结构简单、便于操作的调试系统。1.2 调试系统框架本文提出的调试系统结构如图 2 所示,该调试系统包括 JTAG 接口和片内调试硬件模块。其中 JTAG 调试接口完全遵循 IEEE1149.1 协议标准设计,用于指令的发送与接收;片内硬件调试模块包括 TAP 控制器、指令寄存器及译码、数据寄存器等,用于解析 JTAG 调试指令,并根据指令进行相应调试功能操作。该调试系统各子模块详细说明如下:(1)测试访问端口 TAP(Test Access Port):定义了 4个基本端口:TDI、TDO、TMS 和 TCK,分别实现测试数据的输入与输出。(2)TAP 控制器:它是 JTAG 调试逻辑的核心控制器,用于实现存储单元的信息输入输出和控制,根据TAP 控制器当前状态和以 TMS 为条件进行状态转移,访问数据寄存器组和指令寄存器,实现控制寄存器组的捕获、移位、更新等操作。(3)指令寄存器(包括指令译码器):指令寄存器的作用是存储 TDI 串行输入的指令码流,并对指令进行译码。(4)数据寄存器组:数据寄存器的作用是存储 TDI 或TDO 通信的数据码流,根据 IEEE1149.1 规定,必须有边界扫描寄存器和 BYPASS 寄存器1113。此外,本调试系统通过内部逻辑电路互连方式实现操作调试系统的 DATA 指令寄存器即等同于操作 CPU的 DATA 寄存器,来直接与 CPU 进行指令和数据的交互,从而实现对处理器的各项功能调试。设计实现方法简单高效,稳定性高。1.3 调试指令与协议JTAG 将调试指令通过 TDI 以串行方式移入到指令寄存器中,调试指令选择不同的数据寄存器接入到 TDITDO 扫 描 链 中,进 而 实 现 不 同 的 调 试 功 能。在IEEE1149.1 标准中,指令有两大类,一类是通用公共指令,标准规定公共指令必须实现 3 条基本指令,即旁路(BYPASS)、采 样/预 装 载(SAMPLE/PRELOAD)和 外 测试(EXTEST)。本调试系统按照标准要求实现了以上 3条公共指令,同时也新增一条 IDCODE 公共指令,用于查询调试系统厂商和版本号。另一类是专用指令,由每个芯片厂商为特有功能专门设计。本调试只设计了 3 条专用指令就实现调试系统的寄存器读写和指令执行功能,指令设计结构简单、灵活高效、便于操作。调试指令详细说明如表 1 所示。调试系统专用指令寄存器功能说明如下:(1)DCR 指令:调试系统通过 DCR 指令实现对 CPU的正常模式和调试模式的切换控制,以及对 CPU 的 reset、halt 及 stop 状态控制。(2)DATA 指 令:通 过 DATA 指 令 实 现 调 试 系 统 和CPU 特殊寄存器间的数据输入输出传递功能,进而实现对 CPU 寄存器和存储器数据的读写功能。(3)INSN 指令:实现指令单步/连续执行功能,发送图 1调试系统示意图图 2调试系统结构图40Microelectronic Technology微电子技术电子技术应用 2023年 第49卷 第4期要执行的指令给 CPU 执行。一条完整的调试命令除调试指令外,还有对应寄存器用于数据存储。本文中调试系统的调试命令长度为40 位,格式如表 2 所示:其中调试指令为 7 bit,读写判断位为 1 bit,数据和 CPU 命令长度为 32 bit,与处理器数据总线保持一致。如表 2 所示,以 DCR 指令读写为例,设置读写判断位值为“1”表示写,“0”表示读。当 TAP 接收到“0 x2C,0 x0,0 x0000,0000”时表示读 DCR 寄存器的值。当 TAP 接收到“0 x2C,0 x1,0 x8000,0000”时表示写 0 x8000,0000 到DCR 寄存器。2 调试系统功能实现片内调试硬件模块是调试系统的核心模块,调试系统的各个硬件操作如调试模式进出、单步执行、寄存器和存储器访问等,都是由片内调试硬件模块来操作完成的。本节将对本文中调试系统的功能及实现进行详细说明。2.1 调试中断及 CPU 状态控制(1)调 试 模 式 的 进 出:通 过 设 置 指 令 寄 存 器 DCR STOP 位可控制调试模式的进入和退出;(2)CPU 状 态 控 制:可 分 别 通 过 DCR RESET/HALT位来控制 CPU 的 reset 和 halt 状态。2.2 调试系统的指令执行(1)指令单步执行:DCR STEP设置为 1 时,再通过INSN 指令写入要执行指令,即可实现处理器核指令单步执行;(2)指 令 连 续 执 行,当