一、OpenOCD 简介
OpenOCD(Open On-Chip Debugger)是一个开源的片上调试工具,支持多种调试器和目标芯片。它通过 JTAG、SWD 等接口与目标设备通信,提供固件烧录、调试、内存操作等功能。
二、快速烧录固件
2.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 启动调试服务
- openocd -f interface/cmsis-dap.cfg -f target/stm32g4x.cfg
复制代码 服务说明:
- 监听 3333 端口(GDB 调试)
- 监听 4444 端口(Telnet 交互)
- 保持终端运行以维持连接
3.2 连接 Telnet
连接成功后进入交互模式,可直接输入 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恢复正常执行
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
|
|
|
|
|
相关推荐
|
|
|