JTAG总线测试

问题描述

Bypass命令测试是否可以确保CPLD升级的JTAG通道是可靠的,而不需要通过真正的固件升级来确认?
以EXU CPLD为例:

~ ~ # busctl --user call bmc.kepler.hwproxy /bmc/kepler/Chip/Cpld/Cpld_1_0101 bmc.kepler.Chip.JtagTarget BypassChannelTest a{ss}yy 0 0 2
b true

EXU、BCU、SEU等位置CPLD升级的JTAG通道都可以用这种方式验证吗?

环境信息

  • 软件版本:OpenUBMC2512

答案内容由AI生成,仅供参考:

3. 总结与操作建议

对比项 Bypass 测试 实际固件升级
验证内容 JTAG 链路物理连通性(TMS/TCK/TDI/TDO 信号路径) 完整的升级流程,包括 SVF 文件解析、TDO 数据校验、CPLD 编程时序
耗时 秒级 几分钟到几十分钟
风险 无风险(不烧写 CPLD) 有风险(可能导致 CPLD 损坏或系统异常)
可靠性 必要但不充分 最终确认手段

推荐的验证流程(基于文档块 #5、#6 的故障排查思路):

  1. 基础检查:使用 busctl call ... GetChipIdcode 读取厂商 ID,确认 CPLD 能被识别。
  2. Bypass 测试:执行 BypassChannelTest,验证 JTAG 通道硬件连通性。
  3. SVF 文件预检:在已知正常的测试环境上执行同一 SVF 文件,确认文件本身无误。
  4. 实际升级:在目标环境中进行升级,并监控 linux_kernel_log 中的 verify TDO 日志。
  5. 故障定位:若升级失败且 sample 值为 0,优先排查硬件链路(TDO 波形);若 sample 值非 0,优先排查 SVF 文件匹配性。

注意:即使 bypass 测试通过,也不能排除升级过程中 TDO 数据异常的可能性。因此,不要仅依赖 bypass 测试结果来决策升级的可靠性。

点击此处查看详细分析解答

JTAG 总线测试的可靠性分析

根据您提供的上下文信息,Bypass 命令测试可以验证 JTAG 通道的基本连通性(即硬件链路是否正常),但不能完全确保 CPLD 升级成功,也不能替代真正的固件升级验证。以下是对您问题的详细分析。


1. Bypass 测试的作用与局限

:white_check_mark: 能验证的部分

  • JTAG 通路物理连通性:通过 BypassChannelTest 命令(例如您给出的 Mode=2 测试 Jtag0 通路),可以确认 TMS、TCK、TDO、TDI 信号路径在硬件层面是否正常。
  • 快速定位链路问题:如果 bypass 测试失败,通常意味着 JTAG 链路存在物理或配置问题(如 CSR 配置错误、信号电平异常等)。

:cross_mark: 不能验证的部分

  • SVF 升级文件的正确性:即使 bypass 测试通过,升级过程中 SVF 文件的指令、位宽、掩码或目标器件不匹配仍会导致 TDO 校验失败。
  • TDO 数据校验的完整性:升级失败案例中(参考文档块 #6),bypass 测试显示通路 OK,但内核日志报错 verify TDO [5] expect:0xfe, mask: 0xfe, sample:0x0,最终升级失败。这说明 bypass 测试不涉及 TDI/TDO 数据交互,无法发现数据层面的问题。

结论:Bypass 测试是必要但不充分的检查手段,它只能确认 JTAG 链路的基本连通性,无法保证固件升级过程的完整性。建议在完成 bypass 测试后,仍需要通过实际升级或针对性的 SVF 文件确认来验证。


2. 对不同位置 CPLD 的适用性(EXU、BCU、SEU)

通用性原理

BypassChannelTest 是作用于 JTAG 目标子系统(bmc.kepler.Chip.JtagTarget)的方法,其测试对象是抽象的 JTAG 通道(Jtag0、Jtag1、JtagOverLocalBus)。只要某个 CPLD 通过 JTAG 接口连接到 BMC 的 JTAG 总线,且 CSR 配置中正确关联了该 CPLD 的通道信息,就可以通过类似方式测试。

文档中的案例

  • 在文档块 #5 中,BypassChannelTest 命令的调用对象是 /bmc/kepler/Chip/Cpld/Cpld_1_010101,这是一个具体的 CPLD 实例,说明该方法适用于特定 CPLD 芯片。
  • 在文档块 #1(CSR 配置字典之 DftJTAG 类)中,InputChip 属性用于关联被测 CPLD 芯片对象,Channel 属性指定测试通道,这进一步说明该机制可以支持多个不同位置的 CPLD。

实践建议

  • EXU、BCU、SEU 等位置的 CPLD 如果均通过 JTAG 总线与 BMC 连接,且各自的 CSR 配置(如 DftJTAG 类)正确定义了芯片关联和通道信息,则均可以用 BypassChannelTest 进行验证。
  • 但需要注意:不同 CPLD 的 JTAG 链路可能存在层级或切换逻辑(如 EXU CPLD 作为中间选路设备),bypass 测试结果仅反映当前选路下的通道状态,不代表所有可能的升级路径均正常。例如,如果升级需要先切换 JTAG 开关(如 LogicFirmware 中的 Routes 设置),则 bypass 测试需要配合正确的选路配置进行。

3. 总结与操作建议

对比项 Bypass 测试 实际固件升级
验证内容 JTAG 链路物理连通性(TMS/TCK/TDI/TDO 信号路径) 完整的升级流程,包括 SVF 文件解析、TDO 数据校验、CPLD 编程时序
耗时 秒级 几分钟到几十分钟
风险 无风险(不烧写 CPLD) 有风险(可能导致 CPLD 损坏或系统异常)
可靠性 必要但不充分 最终确认手段

推荐的验证流程(基于文档块 #5、#6 的故障排查思路):

  1. 基础检查:使用 busctl call ... GetChipIdcode 读取厂商 ID,确认 CPLD 能被识别。
  2. Bypass 测试:执行 BypassChannelTest,验证 JTAG 通道硬件连通性。
  3. SVF 文件预检:在已知正常的测试环境上执行同一 SVF 文件,确认文件本身无误。
  4. 实际升级:在目标环境中进行升级,并监控 linux_kernel_log 中的 verify TDO 日志。
  5. 故障定位:若升级失败且 sample 值为 0,优先排查硬件链路(TDO 波形);若 sample 值非 0,优先排查 SVF 文件匹配性。

注意:即使 bypass 测试通过,也不能排除升级过程中 TDO 数据异常的可能性。因此,不要仅依赖 bypass 测试结果来决策升级的可靠性。

是的,BypassChannelTest仅用来测试通道链路正常