当前位置:首页 > 嵌入式 > 嵌入式分享
[导读]在 RISC-V 嵌入式开发中,Segger J-Link 配合开源 OpenOCD 是目前性价比极高的调试方案——既能用上 J-Link 稳定的 JTAG/SWD 物理层,又可享受 OpenOCD 对 RISC-V 标准调试模块(DMI/DM)的良好支持。本文将手把手带你走完从环境搭建到 GDB 单步调试的完整流程。



RISC-V 嵌入式开发中,Segger J-Link 配合开源 OpenOCD 是目前性价比极高的调试方案——既能用上 J-Link 稳定的 JTAG/SWD 物理层,又可享受 OpenOCD 对 RISC-V 标准调试模块(DMI/DM)的良好支持。本文将手把手带你走完从环境搭建到 GDB 单步调试的完整流程。


一、软硬件准备


• 硬件:J-Link(V10 及以上推荐,V9 部分支持),目标板(如 GD32VF103、HiFive1 Rev B 或自研 RV32IMAC 核),JTAG 或 SWD 连接线。


- 软件:

 • Segger J-Link Software & Documentation Pack(提供 JLink.exe / JLink.dll,Linux 下用 JLinkExe)


 - OpenOCD ≥ 0.11.0(需编译时开启 --enable-riscv)

 • RISC‑V GNU Toolchain(riscv64-unknown-elf-gdb)


 • 目标固件 .elf 文件(含调试符号)


⚠️ 注意:OpenOCD 需确认 configure --enable-riscv 已打开,否则无 riscv 调试支持。可用 openocd -v 查看编译特性。


二、OpenOCD 配置文件编写(关键!)


OpenOCD 通过 jlink.cfg + 目标接口 + RISC‑V 核心描述来建立连接。


1. 接口配置 jlink_riscv.cfg


# 使用 J-Link 作为调试适配器

source [find interface/jlink.cfg]


# J-Link 速度(kHz),根据板子承受能力调整

adapter speed 4000


# 调试接口选择:JTAG(RISC-V 通常用 JTAG;部分支持 SWD)

transport select jtag


# RISC-V 目标(通用 RV32/RV64 DM 支持)

source [find target/riscv.cfg]


# 若目标有特殊 DMI 抽象,可覆盖:

# riscv set_abstractcommand_timeout_sec 10



2. 启动 OpenOCD


openocd -f jlink_riscv.cfg



成功后会看到类似输出:


Info : J-Link V10 detected

Info : clock speed 4000 kHz

Info : JTAG tap: riscv.cpu tap/device found: 0x100056fd (mfg: 0x37b ...)

Info : Examined RISC-V core; XLEN=32, misa=0x40101104

Info : Listening on port 3333 for gdb connections

Info : Listening on port 4444 for telnet connections


• 端口 3333:GDB 连接用


• 端口 4444:Telnet 命令行(可读寄存器、halt/resume)


若报 tap/device not found,检查 JTAG 接线(TDI/TDO 是否交叉)、芯片是否上电、复位是否释放。


三、GDB 连接与程序下载/调试


1. 启动 RISC‑V GDB 并连接 OpenOCD


riscv64-unknown-elf-gdb your_firmware.elf



在 GDB 交互界面中输入:

target extended-remote localhost:3333   # 连接 OpenOCD

monitor halt                            # 停住 CPU

load                                    # 将 .elf 下载到 Flash/RAM(依链接脚本)

monitor reset halt                      # 复位并停住



2. 常用调试命令


break main              # 设断点

continue                 # 运行

step                     # 单步(进入函数)

next                     # 单步(跳过函数)

info registers           # 查看通用寄存器(x0~x31, pc)

print var_name           # 查看 C 变量

monitor reg read 0x7b0   # 读自定义 CSR(如 mcycle)



3. 退出与复位


monitor reset run       # 复位并继续运行

quit



四、Telnet 辅助调试(不用 GDB 时)


telnet localhost 4444

> halt

> reg read x1

> resume

> reset halt

> dump_image sram.bin 0x20000000 0x4000


dump_image 可抓取 SRAM 内容用于离线分析,非常适合 HardFault 前后状态排查。


五、常见坑与解决办法


现象 原因 解决


OpenOCD 报 Could not find MEM_AP RISC‑V 调试模块未使能或 nRST 拉低 确认 debug_module 在 RTL 中例化且供电正常;用 monitor reset init


GDB load 卡住 Flash 算法未配置 / 链接脚本地址错 确认 .text 地址在 Flash 映射区;部分芯片需专用 Flash Loader(如 GD32VF103 需 flash load_image)


J-Link 报 VTref=0.000V 未接目标板电源到 VTref 引脚 将目标 3.3V 接到 J-Link VTref


riscv.cpu not found OpenOCD 未编译 RISC‑V 支持 重新编译 OpenOCD 加 --enable-riscv


单步后 PC 不更新 内核在 WFI 休眠 在 GDB 发 monitor resume; monitor halt 唤醒再停


六、结语


J-Link + OpenOCD + RISC‑V GDB 的组合构成了完整的开源可商用调试链:J-Link 负责物理链路稳定性,OpenOCD 翻译 RISC‑V Debug Module 协议,GDB 提供源码级单步与变量观察。掌握 jlink.cfg + riscv.cfg 的正确配置与 monitor halt / load / reset halt 三板斧,你就能在 RISC‑V 芯片上像调试 ARM Cortex‑M 一样从容地下断点、看寄存器、抓现场。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

在嵌入式开发领域,数字信号处理(DSP)需求正在快速增长。从智能家居的语音交互到无线耳机的主动降噪,从工业电机控制到便携式医疗设备的信号分析,越来越多的低功耗嵌入式设备需要高效完成信号运算。传统方案中,我们要么依赖昂贵的...

关键字: DSP RISC-V

格罗方德的物理 AI 产品组合与 MIPS 的 RISC-V 技术及从软件到芯片的专长相结合,赋能汽车、工业及边缘智能体平台等领域加速定制化、软件优先型产品落地

关键字: 物理AI RISC-V 边缘智能

在RISC-V开发中,交叉编译工具链是连接x86主机与RISC-V目标板的唯一桥梁。无论是裸机MCU还是运行Linux的SoC,一套配置正确的GCC工具链是项目成功的基石。本文将手把手带你完成从工具链获取到自动化Make...

关键字: RISC-V Makefile配置

在FPGA上构建RISC-V SoC时,从复位向量到串口打印“Hello World”的启动流程,是验证软核能否“自主呼吸”的关键。本文将基于常见的PicoRV32或VexRiscv软核,详解从硬件复位到软件驱动的完整链...

关键字: RISC-V FPGA

春节过后,全球半导体行业展会密集启幕。华兴万邦先后实地走访德国2026嵌入式世界展(EW26)、巴塞罗那世界移动通信大会(MWC)、2026玄铁RISC-V生态大会、第十四届电子信息博览会(CITE 2026)、香港春季...

关键字: AI SoC RISC-V

在AI边缘计算领域,传统处理器架构常面临算力与能效的双重挑战。基于FPGA的RISC-V软核定制与硬件加速器(HLS)协同设计,为边缘AI算法落地提供了新范式。本文以Sobel边缘检测算法为例,解析如何通过软核定制与HL...

关键字: HLS RISC-V 硬件加速器

在FPGA上移植RISC-V核并实现自定义指令扩展,已成为推动嵌入式系统创新的关键路径。这一过程既充满技术挑战,也蕴含着性能优化的巨大潜力。本文将结合实际案例,深入剖析调试过程中的常见陷阱,并阐述自定义指令扩展的完整流程...

关键字: RISC-V FPGA

在嵌入式开发中,OpenOCD与GDB的组合调试方案因其强大的跨平台支持能力,成为开发者破解复杂系统问题的利器。本文深入解析这一组合如何通过硬件协同实现断点设置与变量监视,揭示其底层工作原理。

关键字: OpenOCD GDB

在AIoT设备开发中,某团队曾尝试将开源RISC-V核移植到FPGA实现边缘计算,却因未充分验证指令集兼容性导致系统频繁崩溃。这一案例揭示了RISC-V移植的关键挑战:如何在保持指令集完整性的同时,实现硬件资源的高效利用...

关键字: RISC-V FPGA

随着端侧AI和高性能计算需求的快速增长,处理器产业的分工模式正在发生变化。近期,Arm 已发布其自研AI芯片,这一动向也让产业对IP模式的开放性与生态中立性产生了更多关注。

关键字: SoC RISC-V CPU
关闭