Boundary Scan(边界扫描)是基于 JTAG 接口的电路板互联测试技术,可直接控制 MCU 外部引脚电平、检测引脚状态与电压,无需拆卸芯片或复杂接线,广泛应用于硬件调试、故障定位与量产测试。本文基于 NXP MIMXRT1050-EVK revA1 开发板与 Lauterbach LA3050 仿真器,详解边界扫描的硬件改造、软件配置、BSDL 文件适配及自动化脚本开发,实现 RT1050 外部引脚的精准控制与测试。
资料获取:RT1050 基于lauterbach的Boundary Scan
1. 核心原理与环境准备
1.1 边界扫描核心逻辑
- 扫描链构建:RT1050 的 JTAG 接口(TCK、TMS、TDI、TDO)与边界扫描寄存器组成扫描链,Lauterbach 仿真器通过 JTAG 信号发送指令;
- 引脚控制:通过 BSDL(Boundary Scan Description Language)文件解析芯片引脚定义,向边界扫描寄存器写入数据,即可控制对应引脚的输出电平(高 / 低);
- 状态检测:读取边界扫描寄存器数据,可获取引脚的输入状态或电压信息,实现硬件互联测试。
1.2 软硬件环境准备
(1)硬件清单
- 主控板:MIMXRT1050-EVK revA1 开发板;
- 仿真器:Lauterbach LA3050(支持 JTAG 模式);
- 辅助工具:100K 电阻、杜邦线、万用表(用于验证引脚电平);
- 接线:Lauterbach 仿真器通过 J21 接口连接 RT1050-EVK,需严格对应 JTAG 信号(TCK/TMS/TDI/TDO/GND)。
(2)软件环境
- 仿真软件:Lauterbach TRACE32 ICD Arm USB(配套 LA3050);
- 配置文件:RT1050 BSDL 文件(芯片边界扫描描述文件);
- 脚本工具:TRACE32 支持的.cmm 脚本(实现自动化测试);
- 参考文档:NXP 应用笔记 AN13507(LPC 系列)、AN12919(RT 系列)。
(3)关键文件下载
- RT1050 BSDL 文件:NXP 官网下载,用于解析芯片引脚与边界扫描寄存器映射关系;
- TRACE32 软件:Lauterbach 官方提供的配套软件,需与 LA3050 仿真器型号匹配。
2. 硬件改造:RT1050-EVK 适配 JTAG 边界扫描
2.1 修改 Fuse 位(切换 JTAG 模式)
- 操作方式:将开发板设置为 Serial Download 模式,通过 MCUbootUtility 工具修改 Fuse 位,保存后重启开发板。
2.2 移除指定电阻(断开冲突链路)
- R38、R323、R309、R152、R303(具体位置参考 RT1050-EVK 硬件手册)。
2.3 JTAG_MODE 引脚拉高
2.4 增加上拉电阻
- R35 位置焊接 100K 电阻,用于信号上拉;
- ONOFF 引脚(SW2 的 pin3 或 pin4)焊接 100K 电阻,上拉到 J24_8(3.3V),确保供电稳定。
2.5 断开板载调试器
2.6 确认 JTAG 接口连接
| Lauterbach 引脚 | RT1050-EVK J21 引脚 | 信号名称 |
|---|---|---|
| TCK | TCK | 时钟信号 |
| TMS | TMS | 模式选择 |
| TDI | TDI | 数据输入 |
| TDO | TDO | 数据输出 |
| GND | GND | 接地 |
3. 软件配置:TRACE32 与 BSDL 文件适配
步骤 1:安装与启动 TRACE32 软件
- 安装 Lauterbach TRACE32 ICD Arm USB 软件,连接 LA3050 仿真器到 PC;
- 启动软件,若仿真器连接正常,将自动识别设备并进入主界面,黄色命令框可输入边界扫描指令。
步骤 2:BSDL 文件配置
- 将下载的
RT1050.bsdl文件复制到 TRACE32 安装路径(如C:T32); - 在 TRACE32 命令框输入以下指令,初始化边界扫描环境:
SYStem.Mode Down # 设置系统模式为Down BSDL.RESet # 重置边界扫描配置 BSDL.ParkState Select-DR-Scan # 设置Park状态 BSDL.state # 打开边界扫描配置窗口 - 在弹出的边界扫描窗口中,点击「FILE」→「Select」,选择
RT1050.bsdl文件; - 输入指令触发软复位,加载 BSDL 配置:
BSDL.SOFTRESET
步骤 3:BSDL 文件适配(解决 IDCODE 不匹配问题)
BSDL.IDCODEall指令时,可能出现 “读取 IDCODE 为 188c301d,期望 088c301d” 的报错,原因是 BSDL 文件版本与芯片实际 IDCODE 不匹配:- 查阅 RT1050 参考手册(RM),确认芯片实际 JTAG IDCODE 为
188C_301Dh(Rev1.1 版本),与读取结果一致,说明芯片正常; - 打开
RT1050.bsdl文件,找到第 408 行的IDCODE_REGISTER属性,将版本号从0000修改为0001:attribute IDCODE_REGISTER of MXRT: entity is "00011000100011000011000000011101"; - 保存 BSDL 文件,重新执行
BSDL.SOFTRESET,再次运行BSDL.BYPASSall、BSDL.IDCODEall、BSDL.SAMPLEall,三项测试均显示 “PASS”,说明配置成功。
4. 引脚控制:手动操作与自动化脚本
4.1 手动控制引脚电平
- 在 TRACE32 边界扫描窗口中,配置参数:
- Instruction:选择
EXTEST(外部测试模式); - DR mode:选择
Set Write(写入模式); - Filter data:取消「intern」勾选,启用外部引脚控制;
- Instruction:选择
- 配置运行模式:
BSDL.SetAndRun ON # 启用SetAndRun模式 BSDL.TwoStepDR ON # 启用两步DR扫描 BSDL.RUN # 应用配置 - 控制引脚电平:
- 输入指令
BSDL.SET 1. PORT GPIO_AD_B1_06 1,引脚输出高电平; - 输入指令
BSDL.SET 1. PORT GPIO_AD_B1_06 0,引脚输出低电平;
- 输入指令
- 验证:用万用表测量 J22_2 引脚,电平变化与指令一致,说明控制有效。
4.2 自动化脚本开发(.cmm 文件)
; 系统初始化配置
SYStem.Mode Down
SYStem.CPU CortexM7
SYSTEM.CONFIG.DEBUGPORTTYPE JTAG # 指定调试端口为JTAG
SYStem.JtagClock 1MHz # 设置JTAG时钟为1MHz
; 边界扫描配置
BSDL.RESet
BSDL.ParkState Select-DR-Scan
BSDL.state
BSDL.FILE RT1050.bsdl # 加载BSDL文件
; 边界扫描链检查
BSDL.SOFTRESET
BSDL.BYPASSall # BYPASS模式测试
BSDL.IDCODEall # IDCODE验证
BSDL.SAMPLEall # SAMPLE模式测试
BSDL.RUN
; 配置引脚控制模式
BSDL.SetAndRun ON
BSDL.TwoStepDR ON
BSDL.SET 1. IR EXTEST # 选择EXTEST指令
; GPIO_AD_B1_06引脚高低电平循环(6次)
BSDL.SET 1. PORT GPIO_AD_B1_06 0 # 低电平
BSDL.SET 1. PORT GPIO_AD_B1_06 1 # 高电平
BSDL.SET 1. PORT GPIO_AD_B1_06 0 # 低电平
WAIT 6.s # 延迟6秒
BSDL.SET 1. PORT GPIO_AD_B1_06 1 # 高电平
WAIT 6.s
BSDL.SET 1. PORT GPIO_AD_B1_06 0 # 低电平
WAIT 2.s
BSDL.SET 1. PORT GPIO_AD_B1_06 1 # 高电平
WAIT 2.s
BSDL.SET 1. PORT GPIO_AD_B1_06 0 # 低电平
WAIT 2.s
BSDL.SET 1. PORT GPIO_AD_B1_06 1 # 高电平
WAIT 2.s
BSDL.SET 1. PORT GPIO_AD_B1_06 0 # 低电平
WAIT 2.s
BSDL.SET 1. PORT GPIO_AD_B1_06 1 # 高电平
WAIT 2.s
4.3 脚本运行与验证
- 在 TRACE32 软件中,点击「File」→「New Script」,粘贴上述脚本,保存为
RT1050_BoundaryScan.cmm; - 进入 DEBUG 模式,运行脚本,软件将自动执行初始化、测试、引脚控制全流程;
- 用万用表实时测量 GPIO_AD_B1_06 引脚,电平将按脚本设定的节奏循环切换,延迟时间符合预期,且无断连现象,说明自动化测试成功。
5. 常见问题排查与避坑指南
5.1 TRACE32 无法识别仿真器
- 原因 1:仿真器驱动未安装或安装异常;
- 原因 2:USB 线缆接触不良或损坏;
- 解决:重新安装 Lauterbach 驱动,更换优质 USB 线缆,确保仿真器供电稳定。
5.2 BSDL.IDCODEall 测试失败
- 原因 1:BSDL 文件版本不匹配,IDCODE 定义错误;
- 原因 2:Fuse 位未正确修改,JTAG 模式未启用;
- 解决:按本文步骤修改 BSDL 文件的 IDCODE 版本号,重新检查 Fuse 位配置与硬件改造点。
5.3 引脚控制无响应
- 原因 1:BSDL 文件路径错误,未正确加载;
- 原因 2:Instruction 未选择
EXTEST,或 DR mode 配置错误; - 原因 3:硬件改造不完整(如 JTAG_MODE 未拉高、板载调试器未断开);
- 解决:确认 BSDL 文件路径正确,重新配置边界扫描参数,逐项检查硬件改造点是否符合要求。
5.4 脚本运行过程中断连
- 原因:JTAG 时钟频率过高,信号传输不稳定;
- 解决:在脚本中降低 JTAG 时钟频率(如
SYStem.JtagClock 1MHz),避免时钟过快导致的信号失真。
6. 进阶扩展与实用建议
6.1 多引脚同时控制
BSDL.SET指令,指定不同引脚名称与电平值,例如:; 同时控制GPIO_AD_B1_06(高)与GPIO_AD_B1_07(低)
BSDL.SET 1. PORT GPIO_AD_B1_06 1
BSDL.SET 1. PORT GPIO_AD_B1_07 0
6.2 引脚状态读取
BSDL.GET指令读取引脚输入状态,用于硬件互联测试:; 读取GPIO_AD_B1_06引脚状态
BSDL.GET 1. PORT GPIO_AD_B1_06 status
PRINT status # 输出引脚状态(0=低电平,1=高电平)
6.3 量产测试适配
- 脚本中添加故障判断逻辑,测试失败时自动记录日志;
- 统一 JTAG 接口接线标准,避免量产时接线错误。
6.4 兼容其他 RT 系列芯片
RT1050 基于 Lauterbach 的 Boundary Scan 实现,核心是硬件 JTAG 模式改造 + BSDL 文件适配 + 自动化脚本开发,通过 Lauterbach 仿真器与 TRACE32 软件,可精准控制外部引脚电平、检测引脚状态,无需复杂硬件接线,适配硬件调试、故障定位与量产测试等场景。
关键要点:硬件改造需确保 JTAG 模式启用与板载调试器隔离,BSDL 文件需根据芯片实际 IDCODE 修改版本号,脚本开发可大幅提升测试效率。该方案兼容性强,可扩展至其他 RT 系列芯片,是嵌入式硬件开发中高效的调试与测试方案。
148