找回密码
 立即注册
首页 业界区 业界 OpenOCD简明指南

OpenOCD简明指南

鄂缮输 5 小时前
一、OpenOCD 简介

OpenOCD(Open On-Chip Debugger)是一个开源的片上调试工具,支持多种调试器和目标芯片。它通过 JTAG、SWD 等接口与目标设备通信,提供固件烧录、调试、内存操作等功能。
二、快速烧录固件

2.1 基本烧录命令
  1. openocd -f interface/stlink-v2.cfg -f target/stm32f1x.cfg -c "program Project.hex verify reset exit"
复制代码
命令解析:

  • -f interface/stlink-v2.cfg:指定 ST-Link V2 调试器接口
  • -f target/stm32f1x.cfg:指定 STM32F1 系列目标芯片
  • program Project.hex:烧录 Project.hex 固件
  • verify:验证烧录结果
  • reset:复位芯片
  • exit:退出 OpenOCD
2.2 适用场景

适用于 STM32F1 系列芯片的快速固件烧录,一次性完成烧录→验证→复位全流程。
三、Telnet 调试模式

3.1 启动调试服务
  1. openocd -f interface/cmsis-dap.cfg -f target/stm32g4x.cfg
复制代码
服务说明:

  • 监听 3333 端口(GDB 调试)
  • 监听 4444 端口(Telnet 交互)
  • 保持终端运行以维持连接
3.2 连接 Telnet
  1. telnet 127.0.0.1 4444
复制代码
连接成功后进入交互模式,可直接输入 OpenOCD 指令操作目标芯片。
四、基本控制指令

4.1 基本控制指令汇总

指令名称命令格式示例说明initinitinit初始化调试接口和目标芯片resetresetreset简单复位芯片reset runreset runreset run复位后立即运行程序reset haltreset haltreset halt复位后暂停执行(调试常用)reset initreset initreset init复位并初始化芯片状态halthalthalt暂停目标执行resumeresumeresume从当前地址恢复执行resume 地址resume [address]resume 0x08000000从指定地址开始执行stepstepstep单步执行(进入函数)五、常用操作指令

5.1 内存操作指令

指令名称命令格式示例说明读 32 位mdw [addr] [count]mdw 0x08000000 4读取 4 个 32 位数据读 16 位mdh [addr] [count]mdh 0x20000000 5读取 5 个 16 位数据读 8 位mdb [addr] [count]mdb 0x08001000 8读取 8 个 8 位数据写 32 位mww [addr] [value]mww 0x20000000 0x12345678写入 32 位数据写 16 位mwh [addr] [value]mwh 0x20000004 0xABCD写入 16 位数据写 8 位mwb [addr] [value]mwb 0x20000006 0xEF写入 8 位数据保存内存dump_image [file] [addr] [size]dump_image ram.bin 0x20000000 0x1000保存内存数据到文件5.2 Flash 操作指令

指令名称命令格式示例说明探测 Flashflash probe [num]flash probe 0探测 Flash 设备显示信息flash info [num]flash info 0显示 Flash 详细信息地址擦除flash erase_address [addr] [size]flash erase_address 0x08000000 0x1000按地址范围擦除扇区擦除flash erase_sector [num] [first] [last]flash erase_sector 0 0 3按扇区擦除烧录固件flash write_image [erase] [file] [addr]flash write_image erase firmware.bin 0x08000000烧录固件到 Flash5.3 程序加载与执行

指令名称命令格式示例说明程序烧录program [file] [addr] [verify] [reset]program Project.bin 0x08000000 verify reset烧录并验证程序加载到内存load_image [file] [addr]load_image test.elf 0x20000000加载程序到 RAM验证固件verify_image [file] [offset]verify_image Project.hex 0x00验证烧录结果复位运行reset runreset run复位后运行程序指定地址执行resume [address]resume 0x20000000从指定地址执行5.4 调试指令

指令名称命令格式示例说明显示寄存器regreg显示所有 CPU 寄存器设置寄存器reg [name] [value]reg R1 0x1234设置寄存器值硬件断点bp [addr] [length] hwbp 0x08000100 0x01 hw设置硬件断点移除断点rbp [addr]rbp 0x08000100移除断点数据监视点wp [addr] [length] r/wwp 0x20000000 0x04 r设置数据监视点单步执行stepstep单步执行(进入函数)步过执行nextnext单步执行(跳过函数)六、总结

OpenOCD 是嵌入式开发中强大的调试工具,掌握基本控制指令是有效调试的基础。建议按照标准调试流程操作,结合实际项目多加练习,逐步掌握各种调试场景的应用技巧。
核心要点:

  • 始终以 init开始调试会话
  • 使用 reset halt获得可控的调试起点
  • 善用 step进行精细调试
  • 调试完成后用 reset run恢复正常执行

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册