vivado 低级别 SVF JTAG 命令

低级别 SVF JTAG 命令
注释 Versal器件上不支持 SVF
低级别 JTAG 命令允许您扫描多个 FPGA JTAG 链。针对链操作所生成的 SVF 命令使用这些低级别命令来访问链中的
FPGA
报头数据寄存器 (HDR) 和报头指令寄存器 (HIR)
语法
HDR length [TDI (tdi)] [TDO (tdo)] [MASK (mask)] [SMASK (smask)];
HIR length [TDI (tdi)] [TDO (tdo)] [MASK (mask)] [SMASK (smask)];
目的
指定每次扫描操作前移入的默认报头模式。报头模式用于指定如何使用一组前导位来填充扫描语句以供容纳位于扫描
路径上超出感兴趣组件范围的器件。
常规信息
报头数据寄存器 (HDR) 用于指定追加到所有后续 SDR 命令开始位置之前的默认报头模式。报头指令寄存器 (HIR) 用于
指定追加到所有后续 SIR 命令开始位置之前的默认报头模式。报头命令具有一组与之相对的报尾命令TIR TDR),
下一章节中描述了这些报尾命令。可通过将报头长度设置为 0 来移除报头。
报尾数据寄存器 (TDR) 和报尾指令寄存器 (TIR)
语法
TDR length [TDI (tdi)] [TDO (tdo)][MASK (mask)] [SMASK (smask)];
TIR length [TDI (tdi)] [TDO (tdo)][MASK (mask)] [SMASK (smask)];
目的
指定所有后续扫描操作完成后移入的默认报尾模式。报尾模式用于指定如何使用一组尾位元来填充扫描语句以供容纳
位于扫描路径上的感兴趣组件之后的器件。
常规信息
报尾数据寄存器 (TDR) 用于指定将追加到所有后续 SDR 命令末尾的报尾模式。报尾指令寄存器 (TIR) 用于指定将追加
到所有后续 SIR 命令末尾的默认报尾模式。可通过将报尾长度设置为 0 来移除报尾。
示例
在此示例中专为 ASIC 开发了 1 SVF 文件。随后将此 ASIC 布局在开发板上作为 u3如下所示
如果相应的头尾语句定义为适用于 u3 前后的器件那么只需对原先为 ASIC 开发的一组 SVF 语句进行少量修改即可复
用。在此示例中将为器件 u4 u5 定义报头模式并为 u2 u1 定义报尾模式。可选参数可按任意顺序指定。每个
可选参数都仅限指定一次。针对 TDITDOMASK SMASK 指定的十六进制字符串值不得大于长度参数所暗示的最
大值。如果未明确指定那么假定十六进制字符串包含前导零位。
scan_ir_hw
hw_jtag 上执行移位 IR
语法
scan_ir_hw_jtag [-tdi <arg>] [-tdo <arg>] [-mask <arg>] [-smask <arg>] [-
quiet]
[-verbose] <length>
常规信息
scan_ir_hw_jtag 命令用于指定将扫描到 JTG 接口目标指令寄存器中的扫描模式。此命令以 hw_jtag 对象为目
该对象是在 JTAG 模式下使用 open_hw_target -jtag_mode 命令打开 hw_target 时创建的。切换至
scan_ir_hw_jtag 命令中指定的扫描模式之前hw_jtag 对象为目标时最后定义的报头属性 (HIR) 将追加到指定的
数据模式开头位置之前。最后定义的报尾属性 (TIR) 则追加到数据模式的末尾之后。
针对 -tdi-tdo-mask -smask 指定的十六进制字符串所表示的位数不能大于 <length> 所指定的最大值。
scan_ir_hw_jtag 命令用于返回十六进制数组其中包含从 hw_jtag 采集的 TDO 数据或者如果采集失败
返回错误。
示例
以下示例扫描 JTAG 指令寄存器中的 24 位值
scan_ir_hw_jtag 24
以下示例先向 TDI 发送 24 位值 0x00_0010LSB 优先),然后采集 TDO 输出、以 0xF3_FFFF 应用掩码并将返回
TDO 值与指定值 tdo 0x81_8181 进行比较。
scan_ir_hw_jtag 24 -tdi 000010 -tdo 818181 -mask F3FFFF -smask 0
scan_dr_hw
hw_jtag 上执行移位 DR
语法
scan_dr_hw_jtag [-tdi <arg>] [-tdo <arg>] [-mask <arg>] [-smask <arg>] [-
quiet]
[-verbose] <length>
常规信息
scan_dr_hw_jtag 命令用于指定将扫描到 JTG 接口目标数据寄存器中的扫描模式。此命令以 hw_jtag 对象为目
该对象是在 JTAG 模式下使用 open_hw_target -jtag_mode 命令打开 hw_target 时创建的。切换
scan_dr_hw_jtag 命令中指定的扫描模式之前hw_jtag 对象为目标时最后定义的报头属性 (HDR) 将追加到
指定的数据模式开头位置之前。最后定义的报尾属性 (TDR) 则追加到数据模式的末尾之后。
scan_dr_hw_jtag 命令用于返回十六进制数组其中包含从 hw_jtag 采集的 TDO 数据或者如果采集失败则返
回错误。
示例
以下示例扫描 JTAG 数据寄存器中的 24 位值
scan_dr_hw_jtag 24
以下示例先向 TDI 发送 24 位值 0x00_0010LSB 优先),然后采集数据输出 TDO、以 0xF3_FFFF 应用掩码并将
TDO 值与指定值 -tdo 0x81_8181 进行比较。
scan_dr_hw_jtag 24 -tdi 000010 -tdo 818181 -mask F3FFFF -smask 0
<think>好的,用户遇到了一个“cpu-tap not found in jtag chain”的错误,需要我来帮忙解决。首先,我得理解这个错误是什么意思。根据我的知识,JTAG链是用于调试和编程硬件设备的,TAP(Test Access Port)是链上的每个设备的接口。当工具扫描JTAG链时,如果找不到预期的TAP(比如这里的cpu-tap),就会出现这个错误。 接下来,我需要分析可能的原因。常见的可能性有几个方面: 1. **硬件连接问题**:可能是JTAG接口接触不良,或者线缆损坏,导致信号传输不稳定。这时候需要检查物理连接,确保所有线缆正确连接,没有松动或断裂。 2. **电源问题**:目标设备可能没有正确供电,导致JTAG接口无法正常工作。需要确认电源是否开启,电压是否稳定,电流是否足够。 3. **JTAG链配置错误**:比如TAP的数量、顺序或ID设置不正确。不同的设备有不同的IDCODE,工具在扫描时会根据这些ID来识别设备。如果配置的ID与实际不符,或者链的顺序不对,工具就无法找到对应的TAP。这时候需要检查配置文件或命令行参数,确认IR长度、TAP顺序是否正确。 4. **设备损坏**:可能是JTAG接口本身损坏,或者目标设备的TAP部分有问题。这时候需要替换线缆、调试器或目标板来排除故障。 然后,我应该指导用户进行逐步排查。先从最简单的硬件连接开始,确认线缆连接正确且牢固。然后检查电源,用万用表测量电压是否正常。接着,使用工具扫描JTAG链,查看实际检测到的TAP数量和ID,与预期对比。如果有不一致,调整配置参数。如果配置正确但问题依旧,可能需要更换硬件组件。 另外,用户可能不太熟悉JTAG的工作原理,需要解释清楚每个步骤的目的,比如扫描链的顺序、IDCODE的作用,以及如何通过工具的输出信息来判断问题所在。可能还需要推荐一些工具或命令,比如OpenOCD的`scan_chain`命令,来帮助用户获取更详细的信息。 最后,总结可能的解决方案,并建议用户按照步骤逐一排除,确保问题得到解决。同时提醒用户注意静电防护,避免在调试过程中损坏设备。</think>关于“cpu-tap not found in jtag chain”问题的分步解析: $$JTAG \ Chain = [TAP_1] \rightarrow [TAP_2] \rightarrow \cdots \rightarrow [TAP_n]$$ **问题本质**:JTAG调试工具在扫描菊花链时,未能检测到预期命名为"cpu-tap"的测试访问端口(TAP)。 --- ### 一、常见原因分析 1. **物理连接异常** - JTAG接口接触不良(如插座氧化/虚焊) - 线缆损坏(阻抗不匹配或信号衰减) - 调试器供电不足(需确认目标板是否独立供电) 2. **JTAG链配置失配** - TAP顺序与工具配置文件不一致 - 预期IDCODE与实际检测值不符 - IR(指令寄存器)长度设置错误 3. **硬件故障** - 目标芯片的JTAG接口物理损坏 - 菊花链中某器件导致信号完整性破坏 --- ### 二、诊断流程 1. **基础检查** ```bash # 使用OpenOCD验证链检测 openocd -f interface.cfg -f target.cfg ``` - 观察终端输出的`TAP IDCODE`列表 - 对比预期ID:$$IDCODE_{expected} = 0x[厂商ID][部件号][版本号]$$ 2. **信号测量** - 用示波器检查TCK/TMS/TDI/TDO信号质量 - 验证信号幅值(通常需匹配目标电压:1.8V/3.3V等) 3. **配置验证** ```tcl # 示例:Xilinx Vivado JTAG设置 set_property PORT.TCK 1 [get_hw_ports] set_property IRPRE 6 [get_hw_targets] ``` - 确认`IRPRE`(前置指令位数)与器件文档一致 --- ### 三、解决方案 1. **硬件修复** - 重新焊接JTAG连接器 - 采用带信号调理的JTAG适配器(如Digilent HS3) - 在TCK信号线添加端接电阻(典型值22-100Ω) 2. **软件配置调整** ```tcl # 调整JTAG扫描速度(降频率) adapter speed 1000 # 设置TAP检测容错模式 jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf ``` 3. **高级调试** - 使用边界扫描描述语言(BSDL)验证器件兼容性 - 通过SVF文件执行标准化链路测试: ```svf TRST OFF; STATE IDLE; SIR 4 TDI (0E); SDR 32 TDI (00000000); ``` --- **注**:若目标为多核处理器,需确认是否启用`CTI`(交叉触发接口)等高级调试组件,这类模块可能要求特定的TAP激活序列。建议查阅芯片的《Debug Architecture Technical Reference Manual》获取TAP层级详细信息。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cckkppll

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值