入门篇:调试器选择与 J-Link 工具链

知识库
知识库文档
/tech-stacks/segger-jlink/tutorial/入门篇:调试器选择与 J-Link 工具链.md

文档

SEGGER J-Link 调试与量产完全指南

本章目标

深入理解 J-Link 在专业嵌入式开发中的核心价值,掌握高级调试和量产工具链。


1. J-Link 型号选择

型号 速度 特色 定位
EDU 15MHz 基础教育用途 学生/爱好者
EDU Mini 4MHz 超小体积 入门
BASE 15MHz 无限制商用 中小型公司
Plus 50MHz 以太网 远程调试
Ultra+ 100MHz 4MB/s Flash 高速量产
PRO 100MHz 多核 + ETM 跟踪 高端开发

2. RTT 深入

RTT 通信原理

MCU RAM 中环形缓冲区 (Up Buffer + Down Buffer)
         ↕
J-Link 通过 SWD 直接读取(无需 CPU 参与)
         ↕
PC 端 RTT Viewer / JLinkRTTClient

多通道使用

// 通道 0:主日志
SEGGER_RTT_printf(0, "System boot OK\n");

// 通道 1:性能计数器(高频)
SEGGER_RTT_Write(1, &perf_data, sizeof(perf_data));

// 通道 2:错误日志
SEGGER_RTT_printf(2, "ERROR: %s at %d\n", file, line);

3. Ozone 高效调试

条件断点

Break.SetCondition("count == 42");
Break.SetCondition("data > 0x100 && data < 0x200");

数据采样

1. View → Data Sampling → 添加变量
2. 设置采样率(1kHz)
3. Start → 运行系统
4. 停后导出 CSV 分析

指令跟踪(ETM/ETB)

  • 需要 J-Trace 或 J-Link Pro
  • 记录每条执行的指令
  • 用于分析 HardFault 现场

4. 量产编程策略

离线烧录

  • J-Link + J-Flash:适合小批量(<1000)
  • Flasher ARM:独立烧录器,一键操作

在线烧录(产线)

# 配合测试治具
JLinkExe -device STM32F407VG -if SWD -speed 4000 \
    -autoconnect 1 -CommanderScript flash_script.jlink

# flash_script.jlink
r
loadbin firmware.bin 0x08000000
verifybin firmware.bin 0x08000000
r
g
exit

5. 安全与保护

# 使能读保护 Level 1
JLinkExe -device STM32F407VG -if SWD <;<EOF
r
w4 0x40023C14 0x08192A3B  # unlock OPTCR
w4 0x40023C14 0x08192A3B
w1 0x1FFFC000 0xCC         # RDP=CC (Level 2 不可逆!)
exit
EOF

⚠️ RDP Level 2 不可逆!芯片将永远无法再调试!


思考题

  1. RTT 为什么比串口 printf 快 100 倍?它的瓶颈在哪?
  2. 条件断点对 CPU 实时性有什么影响?
  3. 量产烧录如何保证固件不被窃取?

信息

路径
/tech-stacks/segger-jlink/tutorial/入门篇:调试器选择与 J-Link 工具链.md
更新时间
2026/5/31