2. 搭建SEGGER自动化测试环境
自动化测试环境是后续所有脚本、流水线和回归用例的物理与软件基础。SEGGER工具链并非单一程序,而是由J-Link软件包、Ozone、Embedded Studio、Flasher等多个组件构成,它们各自承担调试探针驱动、图形化调试、编译构建、离线烧录等不同职责。本节的目标是:在一台测试主机上把这些组件安装到位,完成许可证、驱动与USB/网络连接配置,并最终用一条可复现的通信链路验证目标板确实“在线”。
一、组件职责与安装顺序
先明确每个组件在自动化测试中的定位,避免装完却不知道用哪个:
- J-Link软件包:核心中的核心,提供J-Link驱动、DLL(JLinkARM.dll)、命令行工具(JLink.exe/JLinkExe)、J-Flash Lite以及USB驱动。任何脚本化调试、烧录都依赖它。
- Ozone:SEGGER的独立图形调试器,支持ELF加载、断点、实时变量监视和J-Trace流跟踪。自动化中常用于人工复核脚本执行结果,也可通过脚本接口做半自动调试。
- Embedded Studio:集成开发环境,含SEGGER编译器、链接器和工程管理。自动化构建阶段用它生成可烧录的ELF/HEX/BIN产物。
- Flasher:独立烧录器硬件配套软件(Flasher Portable/Compact/ARM),用于产线或无人值守场景的离线烧录,可通过USB或以太网远程触发。
推荐安装顺序为:J-Link软件包 → Embedded Studio → Ozone → Flasher配置工具。原因是Ozone和Embedded Studio在安装时会检测J-Link驱动,先装J-Link可避免重复提示;Flasher的PC端工具依赖J-Link驱动中的USB通信层,放在最后最稳妥。
二、安装J-Link软件包与驱动
从SEGGER官网下载对应平台的J-Link Software and Documentation Pack。Windows下双击安装,注意勾选“Install USB driver”和“Update DLL in system directory”;Linux下使用.deb或.rpm包,安装后需将/opt/SEGGER/JLink加入PATH,并配置udev规则使普通用户可访问探针:
# 以Ubuntu为例
sudo dpkg -i JLink_Linux_V794_x86_64.deb
echo 'export PATH=$PATH:/opt/SEGGER/JLink' >> ~/.bashrc
sudo cp /opt/SEGGER/JLink/99-jlink.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules && sudo udevadm trigger
安装完成后插入J-Link,用lsusb(Linux)或设备管理器(Windows)确认出现“SEGGER J-Link”。随后执行版本自检:
JLinkExe -CommanderScript version.jlink
# version.jlink 内容:
# version
# exit
若输出中包含“J-Link Commander V7.94”及固件版本,说明驱动与DLL已就绪。若提示“Cannot connect to J-Link”,优先检查USB线是否为数据线、是否被虚拟机占用、udev规则是否生效。
三、许可证配置
J-Link本身对多数主流芯片免费,但部分高级功能(如J-Trace流跟踪、部分Cortex-M器件的高速调试)需要许可证。Ozone和Embedded Studio也有商业授权与免费评估之分。许可证通常以.jlicense或序列号形式提供,配置方式为:
- J-Link:将许可证文件放入
%APPDATA%/SEGGER/JLink(Windows)或~/.segger/JLink(Linux),或用JLinkLicenseManager导入。 - Embedded Studio:在“Help → License Manager”中输入序列号,离线环境可用激活文件。
- Ozone:首次启动时选择“Activate”,输入与J-Link绑定的授权信息。
四、USB与网络连接配置
J-Link支持USB直连和以太网两种接入方式。USB方式即插即用,适合单工位;网络方式适合多目标板并行测试或远程机架。网络配置步骤:
- 用USB连接J-Link,打开J-Link Configurator,选中探针。
- 在“Network”页设置静态IP、子网掩码、网关,例如
192.168.10.51/24。 - 点击“Apply”,探针重启后即可拔掉USB,改用网线供电(部分型号支持PoE或外部供电)。
- 用
ping 192.168.10.51确认连通,再用JLinkExe -IP 192.168.10.51连接。
网络模式下,脚本中所有J-Link命令都要加-IP参数,这是后续自动化脚本需要统一封装的差异点。
五、验证目标板通信链路
安装与配置完成后,必须用一条最小链路验证“主机→探针→目标板”全通。以一颗Cortex-M4目标板为例,编写如下J-Link Commander脚本:
si SWD // 选择SWD接口
speed 4000 // 4 MHz
connect // 连接目标
mem32 0xE000ED00 4 // 读取CPUID寄存器
regs // 读取内核寄存器
exit
预期输出中,CPUID应返回0x410FC241(Cortex-M4的典型值,具体以芯片手册为准),寄存器列表能正常打印PC、SP等。若连接失败,按以下顺序排查:目标板是否上电、SWDIO/SWCLK是否接反、复位引脚是否被拉低、接口速率是否过高(可降到1000 kHz重试)。
下面这张图把本节的环境搭建关系与验证链路集中呈现,便于对照检查每个环节是否到位。
六、环境自检清单
在进入脚本编写前,建议逐项确认以下状态,任何一项不通过都会在后续自动化中放大为难以定位的故障:
| 检查项 | 命令/操作 | 通过判据 |
|---|---|---|
| J-Link驱动 | JLinkExe -CommanderScript version.jlink | 打印版本号与固件版本 |
| 探针识别 | 设备管理器 / lsusb | 出现 SEGGER J-Link 设备 |
| 许可证 | JLinkLicenseManager 查看 | 所需功能显示已授权 |
| 网络探针 | ping 192.168.10.51 | 丢包率为 0 |
| 目标板连接 | connect + mem32 0xE000ED00 4 | CPUID 与芯片手册一致 |
| 构建产物 | Embedded Studio 编译示例工程 | 生成 .elf / .hex 文件 |