扫码加入

  • 正文
  • 相关推荐
申请入驻 产业图谱

RT1170基于Lauterbach的Boundary Scan-JTAG 边界扫描与引脚自动化控制

3小时前
217
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

Boundary Scan(边界扫描)是基于 IEEE 1149.1 JTAG 标准的硬件测试技术,可直接控制 MCU 外部引脚电平、检测引脚状态与电路板互联情况,无需复杂接线或芯片拆卸,是嵌入式硬件调试、故障定位与量产测试的高效方案。本文基于 NXP MIMXRT1170-EVK revC1 开发板与 Lauterbach LA3050 仿真器,详解边界扫描的硬件适配、TRACE32 软件配置、BSDL 文件使用及自动化脚本开发,实现 RT1170 外部引脚的精准控制与板载器件的自动化测试。

资料获取:RT1170 基于lauterbach的Boundary Scan

1. 核心优势与环境准备

1.1 RT1170 边界扫描核心优势

与 RT10XX 系列芯片不同,RT1170原生支持 SWD/JTAG 双模式,无需修改 Fuse 位或芯片配置,直接可通过 JTAG 接口实现边界扫描,大幅简化硬件改造流程,仅需做简单的板级电路隔离即可开展测试。

边界扫描核心功能:

  • 引脚电平控制:直接通过软件指令设置 RT1170 任意 GPIO 引脚的高低电平,控制板载 LED、继电器等器件;
  • 状态检测:读取引脚输入状态,检测电路板互联是否正常、外部器件是否有效;
  • 批量测试:通过自动化脚本实现多引脚、多场景的一键测试,提升量产与调试效率。

1.2 软硬件环境完整准备

(1)硬件清单

  • 主控板:MIMXRT1170-EVK revC1 开发板;
  • 仿真器:Lauterbach LA3050(支持 JTAG 边界扫描,标配 TRACE32 软件);
  • 辅助工具:万用表(验证引脚电平)、杜邦线(JTAG 接口连接);
  • 核心接口:RT1170-EVK 的 J1 接口(JTAG 专用接口,用于连接 Lauterbach)。

(2)软件与配置文件

  • 仿真软件:Lauterbach TRACE32 ICD Arm USB(LA3050 配套软件,自带 JTAG 与边界扫描指令集);
  • BSDL 文件:i.MXRT1170_BSDL.bsdl(芯片边界扫描描述文件,解析引脚与扫描寄存器映射关系);
  • 脚本支持:TRACE32 原生支持.cmm 格式脚本,实现自动化边界扫描操作。

(3)关键文件下载

  • RT1170 BSDL 文件:NXP 官网下载,需放置到 TRACE32 安装根目录(如 C:T32);
  • TRACE32 软件:Lauterbach 官方提供,需与 LA3050 仿真器型号匹配,安装后自动配置 JTAG 驱动。

2. 硬件适配:RT1170-EVK 板级改造(核心:隔离干扰)

RT1170-EVK 板载有调试器与相关电阻,会对 JTAG 引脚产生信号干扰,需做简单的硬件改造,实现JTAG 信号隔离板载调试器断连,确保 Lauterbach 仿真器独占 JTAG 接口,改造共两步,无复杂焊接:

2.1 移除干扰电阻,隔离 JTAG 信号

去掉板载 4 个电阻,禁止外部电路对 JTAG 相关引脚的信号干扰,电阻编号为:R187、R208、R195、R78(具体位置参考 RT1170-EVK 硬件手册,均为靠近 JTAG 接口的贴片电阻,直接拔除即可)。

2.2 断连接板载调试器,独占 JTAG 接口

断开板载调试器与 JTAG 总线的连接,拔下以下跳帽 / 连接器:J5、J6、J7、J8,彻底隔离板载调试器,避免与外部 Lauterbach LA3050 产生总线冲突。

2.3 JTAG 接口连接

将 Lauterbach LA3050 仿真器的 JTAG 线缆连接到 RT1170-EVK 的J1 接口,信号严格一一对应(TCK、TMS、TDI、TDO、GND),无需额外接电,仿真器通过 USB 为 JTAG 接口提供工作电源

3. 软件配置:TRACE32 实现边界扫描基础操作

TRACE32 是 Lauterbach 的核心仿真软件,通过内置的边界扫描指令集,配合 BSDL 文件,可实现 RT1170 引脚的手动控制,核心分为环境初始化、BSDL 文件加载、扫描链验证、引脚电平控制四步。

步骤 1:启动 TRACE32 并初始化系统模式

  1. 连接 LA3050 仿真器到 PC(USB 口),确保硬件识别正常(无设备管理器报错);
  2. 打开 TRACE32 ICD Arm USB 软件,进入主界面,在黄色命令输入框中输入以下指令,初始化边界扫描系统模式:
    SYStem.Mode Down    # 设置系统为Down模式,专注边界扫描操作
    BSDL.RESet           # 重置边界扫描配置,清除原有设置
    BSDL.ParkState Select-DR-Scan  # 设置扫描寄存器Park状态,保证总线稳定
    BSDL.state           # 打开边界扫描配置主窗口
    

    指令执行后,软件将弹出独立的边界扫描配置窗口,用于后续 BSDL 文件加载与参数配置。

步骤 2:加载 RT1170 BSDL 文件

BSDL 文件是边界扫描的 “芯片字典”,包含 RT1170 所有引脚定义、边界扫描寄存器结构、JTAG IDCODE 等关键信息,必须正确加载:

  1. 将下载的i.MXRT1170_BSDL.bsdl文件复制到 TRACE32 安装根目录(如 C:T32),确保软件可直接识别;
  2. 在边界扫描配置窗口中,点击FILESelect,选择上述 BSDL 文件,软件自动解析芯片信息;
  3. 在命令输入框输入软复位指令,让 BSDL 配置生效:
    BSDL.SOFTRESET

步骤 3:验证边界扫描链(必做:确保硬件连接正常)

扫描链验证是检测 JTAG 连接、BSDL 文件是否匹配的关键步骤,需依次执行BYPASSall、IDCODEall、SAMPLEall三项测试,全部 PASS 表示硬件与配置无问题:

  1. 在边界扫描配置窗口中,点击Check → 依次选择BYPASSall、IDCODEall、SAMPLEall
  2. 每项测试完成后,软件将在日志区提示PASS,其中:
    • BYPASSall:验证 JTAG 扫描链通断,无信号中断;
    • IDCODEall:验证读取的芯片 IDCODE 与 BSDL 文件定义一致,确认芯片型号匹配;
    • SAMPLEall:验证边界扫描寄存器可正常采样,为引脚控制做准备。
  3. 若任意测试失败,需重新检查硬件连接(JTAG 线缆、电阻移除、跳帽断开)与 BSDL 文件路径。

步骤 4:手动控制 RT1170 外部引脚(以板载 D34 灯为例)

以控制板载 D34 灯对应的GPIO_AD_26引脚为例,实现引脚高低电平手动控制(1 = 灯亮,0 = 灯灭),核心是配置外部测试模式(EXTEST) 与数据写入模式:

  1. 在边界扫描配置窗口中,找到BSDLSET 1. 配置区,设置以下参数:
    • Instructions:选择EXTEST(外部测试模式,用于控制外部引脚);
    • DR mode:选择Set Write数据寄存器写入模式,可向引脚写入电平值);
    • Filter data:取消intern勾选(禁用内部寄存器过滤,启用外部引脚控制);
  2. BSDL.state配置区,设置运行模式:
    • 勾选SetAndRunTwoStepDR(两步扫描模式,提升电平控制稳定性);
    • 点击RUN,应用所有配置;
  3. 控制引脚电平:在命令输入框输入指令,直接设置 GPIO_AD_26 电平:
    • 灯亮:BSDL.SET 1. PORT GPIO_AD_26 1
    • 灯灭:BSDL.SET 1. PORT GPIO_AD_26 0
  4. 验证:用万用表测量 GPIO_AD_26 引脚,电平变化与指令完全一致,板载 D34 灯随指令亮灭,说明引脚控制有效。

4. 自动化开发:.cmm 脚本实现引脚一键控制

手动输入指令效率低,TRACE32 支持.cmm 格式脚本,可将边界扫描的所有操作(初始化、配置、引脚控制、延时)编写为脚本,实现一键运行、自动化测试,以下以板载 D34 灯(GPIO_AD_26)自动闪烁为例,详解脚本开发与运行流程。

4.1 .cmm 脚本核心语法说明

TRACE32 的.cmm 脚本为简单的指令集脚本,无复杂语法,核心规则:

  • 分号;开头为注释行,不执行;
  • 直接调用 TRACE32 内置指令,与命令输入框指令一致;
  • WAIT X.s:延时 X 秒(X 为数字,如 1.s 表示延时 1 秒);
  • BSDL.SET 1. PORT 引脚名 电平:设置指定引脚的高低电平(0 = 低,1 = 高)。

4.2 板载 D34 灯自动闪烁脚本编写

实现功能:GPIO_AD_26 引脚高低电平交替切换,D34 灯闪烁 5 次,每次亮灭间隔 1 秒,脚本全程自动化运行,无需人工干预:

; 系统基础配置:JTAG模式、时钟、边界扫描初始化
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 i.MXRT1170_BDSL.bsdl    # 加载RT1170 BSDL文件

; 边界扫描链验证:确保硬件与配置正常
BSDL.SOFTRESET
BSDL.BYPASSall
BSDL.IDCODEall
BSDL.SAMPLEall
BSDL.RUN                          # 应用验证配置

; 配置引脚控制模式:EXTEST外部测试+两步扫描
BSDL.SetAndRun ON
BSDL.TwoStepDR ON
BSDL.SET 1. IR EXTEST             # 选择外部测试指令
BSDL.RUN                          # 应用引脚控制配置

; 板载D34灯(GPIO_AD_26)自动闪烁:5次,间隔1秒
BSDL.SET 1. PORT GPIO_AD_26 0
WAIT 1.s
BSDL.SET 1. PORT GPIO_AD_26 1
WAIT 1.s
BSDL.SET 1. PORT GPIO_AD_26 0
WAIT 1.s
BSDL.SET 1. PORT GPIO_AD_26 1
WAIT 1.s
BSDL.SET 1. PORT GPIO_AD_26 0
WAIT 1.s
BSDL.SET 1. PORT GPIO_AD_26 1
WAIT 1.s
BSDL.SET 1. PORT GPIO_AD_26 0
WAIT 1.s
BSDL.SET 1. PORT GPIO_AD_26 1
WAIT 1.s
BSDL.SET 1. PORT GPIO_AD_26 0
WAIT 1.s
BSDL.SET 1. PORT GPIO_AD_26 1
WAIT 1.s

4.3 脚本运行与验证

  1. 在 TRACE32 软件中,点击FileNew Script,新建空白脚本;
  2. 将上述代码粘贴到脚本编辑区,点击Save,保存为.cmm格式(如RT1170_LED_Blink.cmm),保存路径无限制;
  3. 进入DEBUG 模式,点击ScriptRun,选择保存的.cmm 脚本,软件将自动执行所有指令;
  4. 验证效果:RT1170-EVK 板载 D34 灯按照脚本设定,自动闪烁 5 次,每次亮灭间隔 1 秒,无卡顿、无断连,说明自动化边界扫描测试成功。

5. 常见问题排查与避坑指南

5.1 TRACE32 无法识别 LA3050 仿真器

  • 原因:仿真器驱动未安装、USB 线缆接触不良、仿真器供电不足;
  • 解决:安装 Lauterbach 官方驱动,更换优质 USB 3.0 线缆,将仿真器直接连接到 PC 后置 USB 口(避免集线器)。

5.2 边界扫描链测试(IDCODEall/SAMPLEall)失败

  • 原因 1:未移除干扰电阻(R187/R208/R195/R78),JTAG 信号受板载电路干扰;
  • 原因 2:未断连接板载调试器(J5/J6/J7/J8),产生 JTAG 总线冲突;
  • 原因 3:BSDL 文件路径错误,软件未正确加载;
  • 解决:重新检查硬件改造点,确保电阻移除、跳帽断开;将 BSDL 文件放到 TRACE32 安装根目录,重新加载。

5.3 引脚控制无响应,电平无变化

  • 原因 1:Instructions 未选择EXTEST,仍为默认模式,无法控制外部引脚;
  • 原因 2:Filter data 未取消intern勾选,软件仅控制内部寄存器,不映射到外部引脚;
  • 原因 3:引脚名输入错误(需与 BSDL 文件中的引脚名完全一致,区分大小写);
  • 解决:重新核对 BSDLSET 配置参数,确保 EXTEST 模式与外部过滤生效;对照 BSDL 文件检查引脚名。

5.4 脚本运行报错,指令无法执行

  • 原因 1:脚本中存在语法错误(如指令拼写错误、延时格式错误,需为 X.s);
  • 原因 2:JTAG 时钟频率过高,信号传输不稳定(如设置 10MHz,超出 RT1170 支持范围);
  • 解决:检查脚本指令拼写,确保与 TRACE32 内置指令一致;将 JTAG 时钟降至 1MHz,提升兼容性。

5.5 部分引脚无法控制,提示 “未定义”

  • 原因:BSDL 文件未包含该引脚定义,或引脚为芯片内部专用引脚,不支持边界扫描;
  • 解决:对照 RT1170 数据手册,确认引脚为外部 GPIO 引脚;重新下载最新版 BSDL 文件,确保包含完整引脚定义。

6. 进阶扩展与实用场景

6.1 多引脚同时控制

在脚本中添加多条BSDL.SET指令,可实现多个引脚的同时电平控制,适用于多器件联动测试(如同时控制多个 LED、继电器),示例:

; 同时控制GPIO_AD_26(D34灯)亮、GPIO_AD_27(D35灯)灭
BSDL.SET 1. PORT GPIO_AD_26 1
BSDL.SET 1. PORT GPIO_AD_27 0

6.2 引脚输入状态读取

除了输出电平控制,还可通过BSDL.GET指令读取外部引脚的输入状态,用于检测电路板互联是否正常、外部传感器信号是否有效,示例:

; 读取GPIO_AD_28引脚的输入状态,并打印到日志
BSDL.GET 1. PORT GPIO_AD_28 Pin_State
PRINT Pin_State  # 0=低电平,1=高电平,-1=读取失败

6.3 量产电路板互联测试

将脚本扩展为全板引脚测试脚本,依次检测所有 GPIO 引脚的输入 / 输出功能,验证电路板焊接、互联是否正常,实现量产时的自动化快速测试:

  1. 编写脚本,遍历所有板载外部引脚,依次设置输出电平并读取反馈;
  2. 添加故障判断逻辑,引脚状态异常时自动打印错误日志并停止运行;
  3. 配合 Lauterbach 量产测试平台,实现多块电路板的批量自动化测试。

6.4 兼容其他 RT1170 开发板 / 自定义板

本方案可直接迁移到 RT1170 自定义板或其他型号开发板,仅需两点适配:

  1. 根据硬件原理图,确定需要控制 / 检测的引脚名(需与 BSDL 文件一致);
  2. 移除自定义板上的 JTAG 信号干扰电阻,断连板载调试器,确保 Lauterbach 独占 JTAG 接口。

RT1170 基于 Lauterbach LA3050 的 Boundary Scan 实现,核心优势是RT1170 原生支持 JTAG 模式,无需芯片配置修改,仅需简单的板级硬件隔离(移除干扰电阻、断连接板载调试器),配合 TRACE32 软件与 BSDL 文件,即可实现外部引脚的精准控制与自动化测试。

整个流程的关键节点:硬件干扰隔离是基础,确保 JTAG 信号无冲突;BSDL 文件正确加载是核心,实现芯片引脚与扫描寄存器的映射;自动化.cmm 脚本是效率提升的关键,实现一键测试,适配研发调试与量产场景。

该方案无需编写任何底层驱动代码,直接通过 TRACE32 内置指令实现引脚控制,操作简单、稳定性高,可广泛应用于 RT1170 硬件调试、电路板故障定位、量产批量测试等场景,是嵌入式硬件开发工程师的高效工具。

相关推荐