STLink 调试探针
STLinkv3 - MINIE 是一款价格低廉、速度快且功能强大的调试探针,可作为 PX4 开发者的独立调试和控制台通信工具:
- 仅需一个 USB - C 接口,就能在一个非常小巧的设备中实现复位、SWD、SWO 和串口通信!
- 支持最高 24MHz 的 SWD 和 SWO 连接。 串口通信速率最高可达 16MBaud。目标电压范围为 1.65V 至 3.6V。 具备 USB2 高速 480Mbps 连接能力。
- 可由 STLink 或 OpenOCD 软件驱动,支持多种设备。
- 价格远低于配备 JLink EDU mini(约 55 欧元)或 JLink BASE(约 400 欧元)的 Pixhawk 调试适配器(约 20 欧元),且硬件规格更优,价格低于 15 欧元。
STLink 调试探针未配备用于与 Pixhawk 飞行控制器配合使用的适配器。下面的 Pixhawk 调试端口适配器 部分将介绍如何自行制作适配器(需要进行一些焊接操作)。
INFO
CUAV C - ADB Pixhawk 调试适配器(约 65 欧元)附带一个 STLinkv3 - MINIE!该适配器有一个用于 Pixhawk 完整调试端口 10 针 SH 接口的连接器(但不支持 Pixhawk 迷你调试端口)。
调试配置
STLink 通过 OpenOCD 提供 GDB 服务器:
# Ubuntu 系统
sudo apt install openocd
# macOS 系统
brew install open-ocd
你可以在新的终端 shell 中启动 GDB 服务器:
openocd -f interface/stlink.cfg -f target/stm32f7x.cfg
配置文件需要根据不同的 FMU 版本进行选择:
- FMUv2 - v4:
-f target/stm32f4x.cfg
- FMUv5:
-f target/stm32f7x.cfg
- FMUv6:
-f target/stm32h7x.cfg
然后你可以通过 GDB 连接到 3333 端口:
arm-none-eabi-gdb build/px4_fmu-v5x_default/px4_fmu-v5x_default.elf -ex "target extended-remote :3333"
有关更高级的调试选项,请参阅 嵌入式调试工具。
Pixhawk 调试端口适配器
要连接到 Pixhawk 调试端口,你需要焊接一个适配器(除非使用 CUAV 调试适配器)。
进行此焊接操作,你需要以下材料:
- 1 个 STLinkv3 - MINIE。
- 1 个用于与 JST SM10B(完整) 或 JST SM06B(迷你) 匹配的电缆连接器。 我们建议购买两端都有连接器的完整组装电缆。
- 1 把烙铁和焊料。
- 一些钳子、剪线钳和镊子。
Pixhawk 调试端口在 DS - 009 中有标准化规定,需要连接到 STLinkv3 - MINIE 的板对板(BTB)卡边缘连接器 CN2。引脚映射如下:
完整端口编号 | 迷你端口编号 | Pixhawk 调试端口信号 | STLinkv3 信号 | BTB 连接器编号 |
---|---|---|---|---|
1 | 1 | 参考电压(VREF) | 电源(VCC) | 10 |
2 | 2 | 控制台发送(Console TX,输出) | 接收(TX,输入) | 8 |
3 | 3 | 控制台接收(Console RX,输入) | 发送(RX,输出) | 7 |
4 | 4 | 串行线调试数据引脚(SWDIO) | 测试模式选择(TMS) | 3 |
5 | 5 | 串行线调试时钟引脚(SWCLK) | 时钟(CLK) | 4 |
6 | 串行线输出(SWO) | 测试数据输出(TDO) | 5 | |
7 | 通用输入输出引脚 1(GPIO1) | |||
8 | 通用输入输出引脚 2(GPIO2) | |||
9 | 复位引脚(nRST) | 复位(RST) | 9 | |
10 | 6 | 接地(GND) | 接地(GND) | 6 |
STLinkv3 不支持 GPIO1/2 引脚,我们建议通过 SWO 使用数字 ITM 性能分析,这种方式更加灵活,并且支持精确到周期的时间戳。
你可以选择将短电缆或长电缆焊接到 BTB 连接器上。短电缆更适合高速通信,但焊接难度较大。我们建议先焊接长电缆,然后测试与目标设备的通信速度。
INFO
本指南是针对完整的 10 针调试端口编写的。如果你想焊接迷你 6 针版本,只需忽略不存在的信号即可。STLink 支持任何基于 SWD/JTAG 的调试接口,因此你可以根据自己拥有的其他连接器对本指南进行调整。调试探针价格低廉,你可以为每个连接器配备一个,而不必使用适配器。
这是 STLinkv3 - MINIE 交付时的样子。
拆开 PCB 包装,检查是否有损坏。插入电源,查看是否能正常开机。
短电缆
短电缆需要使用剥线钳和剪线钳,并且需要一定的焊接技巧。不过,它可以使整个调试探针更加小巧。
组装一个不带 GPIO1/2 的 10 针连接器。如果你已经有组装好的电缆,可以用镊子小心地抬起固定电缆的插脚,移除两根 GPIO1/2 电缆。将电缆剪至约 2 厘米(约 1 英寸)的短长度,并剥去电线外皮。
给 STLink 上的 BTB 连接器和电缆都镀锡。
首先焊接接地(GND)和电源(VCC)信号,使连接器与边缘平行对齐。然后焊接发送(TX)和接收(RX)引脚。最后焊接复位(RST)连接。
将 STLink 翻面,焊接剩下的三根电线。先焊接 SWDIO 到 TMS,然后是 SWCLK 到 CLK,最后是 SWO 到 TDO。
长电缆
如果你使用预组装电缆,长电缆特别有用,因为它无需剪线或剥线。
小心地从电缆的一个连接器上移除两根 GPIO1/2 电缆。然后从另一个连接器上移除所有电缆。这样,电线末端就剩下八个压接连接器。
给压接电缆连接器和 BTB 连接器镀锡,然后将压接连接器直接焊接到 STLinkv3 上。由于压接连接器比较大,要小心避免电缆之间短路。
测试
现在你应该测试调试探针,确保没有电气短路。
- 通过 Pixhawk 调试端口将探针插入目标设备。
- 使用你选择的程序测试串口。
- 通过 OpenOCD 或 STLink 软件测试 SWD 和复位(RST)连接。
- 通过 Orbuculum 测试 SWO 连接。
有关 PX4 FMUv5 和 FMUv6 飞行控制器软件支持的更多信息,请参阅 嵌入式调试工具。
使其更小
此步骤将移除 STLinkv3 - MINIE 背面的 14 针调试接口,并在整个设备周围添加热缩管,以提高操作便利性,并防止 STLink 与金属部件或 PCB 短路。此步骤为可选步骤,需要以下材料:
- 1 根约 5 厘米长、直径 20 毫米的热缩管。
- 1 把扁平钳子,用于通过 USB - C 端口固定 STLinkv3。
- 1 把精细剪线钳或烙铁。
- 1 把热风枪。
用钳子轻轻拔掉 STDC14 连接器的塑料部分,只留下连接器引脚。
使用精细钳子,小心地剪掉连接器引脚,注意不要损坏 PCB 或 PCB 上的任何组件。或者,你也可以用烙铁将这些连接器引脚从 PCB 上焊掉,但这可能需要更长时间。
旋转 STLinkv3,剪掉另一排引脚,同样要小心不要损坏它。
剪下一段约 5 厘米(约 2 英寸)长的热缩管。热缩管应与 USB - C 连接器齐平,并稍微超出末端。
用扁平钳子通过 USB - C 连接器的 底部 金属部分夹住 PCB 和热缩管。注意不要不小心挤压 USB - C 连接器的中间塑料部分!
使用热风枪对调试探针周围的热缩管进行热缩。确保热缩管均匀收缩,并保护整个 PCB。
你可以选择添加一个打印在纸上并裁剪好尺寸的自定义 logo。请注意,热可能会使墨水稍微流动,因此你可能需要试验不同的打印机设置。