一. 概述
在 JTAG 边界扫描之基本原理介绍(上篇)里我们描述了边界扫描基本原理,对边界扫描有大概认识,接下来将描述其具体实现方式。不同平台实现边界扫描方式多种多样,以下将介绍一种基于 μTrace 和 Trace32 的 RT1170 边界扫描测试方式。
二. 边界扫描描述语言(BSDL)
在边界扫描测试开始前通常需要先准备测试芯片的 BSDL 文件。 BSDL 文件使用边界扫描描述语言(BSDL)描述了在特定组件内实现边界扫描的关键要素。如图 1 所示为 BSDL 文件包含的要素,只要设备符合 JTAG 标准,那么必定具有对应的 BSDL 文件。BSDL 文件可以在一些边界扫描的软件中被使用,通过加载对应的 BSDL 文件可以实现对芯片外部所有管脚的读取和控制。具体芯片最新 BSDL 文件可以从对应官网下载,在 BSDL Library: BSDL Library - Over 9000 JTAG Models 同样可以查找到部分芯片 BSDL 文件。
图 1 BSDL 文件包含要素
三. 标准指令集
JTAG 协议里规定了边界扫描指令,如下图 2 描述了 IEEE Std 1149.1 中定义的边界扫描指令。一些边界扫描软件中集合了这些指令操作,直接使用指令选项可实现对应操作,具体指令说明如下。
图 2 标准指令集
四. 测试环境
测试使用的是 Lauterbach 工具套件,测试软件 TRACE32 安装包可在 Lauterbach 官网页面下载。
图 3 针对 Cortex®-M 的 µTrace® 调试器
图 4 针对 Arm 的 TRACE32 主页
五. 测试方式
使用针对 Cortex®-M 的 µTrace® 调试器和 TRACE32 软件执行边界扫描测试,按照以下步骤操作:
1. 硬件操作
(1) 使用硬件平台 RT1170 开发板,测试前去掉板载电阻 R187、R208、R195、R78 防止外部电路引脚干扰。去掉 J5、J6、J7、J8 跳帽断开板载 debugger,将外部 Lauterbach 调试器连接 RT1170 MIPI20T JTAG 接口,使用 USB 电缆将调试器连接到 PC,通过 5V 电源适配器为调试器供电。总体连接如图 5 所示。
图 5 硬件连接
(2) 打开 PC 上的“设备管理器”。 Lauterbach 设备会出现在 Trace32 器件中,如图 6 所示。如果未显示 Lauterbach 设备,需要检查是否连接正确。
图 6 Lauterbach 设备出现在设备管理器中
(3)为 RT1170 EVK 板上电,连接 EVK 板上标有 J1 或 J2 的 USB 端口到 PC 端,注意在 RT1170 EVK 板带电时勿拔插适配器,防止调试器或目标器件损坏,上电/掉电顺序如下:
— 上电:调试器 > 目标器件
— 掉电:目标器件 > 调试器
2. 软件操作
(1) 打开 TRACE32 软件图标,进入 TRACE32 主页。主页面底部的状态栏显示 “system down”,而不是“power down”则表示连接正常,如图 7 所示。
图 7 TRACE32 主页状态栏与命令栏
(2) 在命令栏输入以下命令,并在每个命令后按下回车键:
SYStem.Down
BSDL.RESet
BSDL.ParkState
Select-DR-Scan BSDL.state
输入完后将弹出 BSDL. 状态窗口,如图 8 所示,单击文件(FILE)按钮加载要验证的 BSDL 文件。这里选择的是准备好的 RT1170 芯片 BSDL 文件,NXP BSDL 文件通常会放在 nxp.com 的芯片介绍页,比如 RT1170 的 BSDL 文件链接为:https://www.nxp.com/downloads/en/bsdl/i.MXRT1170_BDSL.bsdl。
图 8 加载 BSDL 文件
(3) 加载文件后,在命令栏输入如下命令 BSDL.SOFTRESET,弹出 BSDL.状态窗口的“检查”选项卡。单击 BYPASSall 和 IDCODEall 选项,两个均测试通过(在标准指令集 BYPASS 是 TDI 通过移位寄存器连接到 TDO,IDCODE 是读取器件的识别寄存器)。点击 IDCODEall 测试结果可以查看识别到的 ID code。
图 9 IDCODEall 测试结果
(4) 单击 SAMPLEall 按钮(标准指令集 SAMPLE 是对 IC 标准操作进行快照),此时“No result”变为“Test done”。双击如图所示实体名称,在 BSDL.SET 窗口中可以看到 SAMPLE 测试结果。
图 10 SAMPLEall 测试结果
(5)在 BSDL.SET 窗口不选中 intern 以过滤掉内部寄存器,剩下的内容是每个信号引脚上的采样值。使用万用表测量至少三个信号引脚的电压,判断 SAMPLE 测试是否通过,以引脚 GPIO_AD_05 为例,执行以下步骤:
① 某引脚测量得为低电平(如 GPIO_AD_05)。
② 用杜邦线给该引脚施加高电平。
③ 命令栏输入 BSDL.RUN 并回车运行。
④ 读取 Reg.列中的寄存器值由 0 变为 1。
⑤ 使用杜邦线对该引脚施加低电平,Reg.列中的寄存器结果变为 0。
⑥ 引脚 GPIO_AD_05 通过了 SAMPLE 测试。
图 11 SAMPLE 测试
(6) SAMPLE 测试引脚输入信号,TRACE32 也可以通过 EXTEXT 进行输出控制测试(标准指令集 EXTEXT 是将边界扫描的预加载数据应用到端口),只需执行以下步骤:
① 选择 EXTEXT 指令。
② DR mode 选择 Set Write。
③ 取消 intern 过滤内部寄存器。
④ 选择 SetAndRun,TwoStepDR。
⑤ 点击 Run。
⑥ Reg.列中输入逻辑控制想要控制的引脚。
图 12 EXTEXT 测试
六. 参考资料
1. AN12919: Introduction to Boundary Scan of i.MX RT Series – Application Note (nxp.com.cn)
2. How to Perform Boundary Scan for LPC55(S)xx based on μTrace (nxp.com.cn)