hi
OpenOCD:必备的嵌入式调试工具
更新于 2026年1月8日
Open On-Chip Debugger(OpenOCD)是一个开源的调试框架,为嵌入式系统提供全面的开发能力。对于W55MH32芯片,OpenOCD通过标准化的调试接口提供专业的调试、编程和测试工具。
特性
- 多协议支持:JTAG、SWD、cJTAG、CMSIS-DAP接口
- 跨平台兼容性:支持Windows、Linux、macOS
- 生产就绪:自动化烧录、批量编程、验证
- 开源:无厂商锁定,社区驱动开发
- 可扩展架构:基于插件的接口驱动器和目标支持
OpenOCD 应用
- 开发与制造
- 工业:生产线编程、工厂测试、批量更新
- 汽车:ECU调试、信息娱乐系统更新、ADAS开发
- 消费电子与IoT
- 消费电子:智能家居设备、可穿戴设备、家用电器
- IoT系统:传感器网络、边缘设备、网关编程
- 医疗与专业领域
- 医疗设备:诊断设备、病人监护仪、可穿戴健康设备
- 航空航天/国防:航空电子测试、军用设备、无人机开发
- 服务与支持
- 现场服务:现场设备维护、紧急维修、远程更新
- 教育:嵌入式课程、学生项目、研究原型开发
工作原理
- 三层结构
- 命令接口层:Telnet (4444)、GDB (3333)、其他协议
- 服务器核心层:目标状态管理、闪存算法
- 驱动层:接口驱动器、传输协议
- 配置系统
OpenOCD使用分层配置方法:- 接口配置:调试适配器设置
- 目标配置:MCU/CPU特定设置
- 板级配置:开发板特定连接
- 用户脚本:自定义初始化序列
- 针对W55MH32的通信流程
- OpenOCD通过CMSIS-DAP连接到W55MH32
- 识别目标芯片(W55MH32 ARM Cortex-M3)
- 调试以暂停/恢复控制开始
- 使用芯片特定算法进行闪存编程
- 通过断点/观察点进行实时调试
实现过程(MicroPython环境)
此方法利用开发板集成的CMSIS-DAP调试接口对MicroPython固件进行编程。OpenOCD工具通过标准化接口提供全面的编程和调试能力。此方法需要连接CMSIS-DAP+UART+ISP端口,建议用于需要同时进行编程和串口控制台访问的开发环境。
所需硬件
- W55MH32开发板
- USB Type-C数据线(用于DAPLink端口)
- 启用WSL2的Windows 10/11系统
软件要求
- Windows: usbipd, 设备管理器访问权限
- WSL: OpenOCD, GNU工具链, git, make
步骤 1:USB设备转发到WSL
此过程将开发板的USB编程接口从Windows转发到WSL环境,使基于Linux的工具能够访问硬件。
硬件连接
- 将Type-C数据线插入USB设备端口
- 打开设备管理器
- 导航到"通用串行总线设备"
- 确认设备列表中出现"CMSIS-DAP v2"

- 启动终端环境:
- 以管理员权限打开Windows PowerShell
- 打开一个WSL终端
在Windows PowerShell中执行以下命令序列:
a.usbipd list
* 识别对应W55MH32设备的USB端口。将显示总线ID(例如:4-3)。
b.usbipd bind --busid 4-3
* 此命令绑定指定的USB设备以用于WSL共享。
c.usbipd attach --wsl --busid 4-3
* 此命令将绑定的USB设备附加到WSL环境。
注意:将 4-3 替换为 usbipd list 命令显示的实际总线ID。有关usbipd的详细文档,请参考此链接
- 通过检查WSL中的USB设备来验证连接:
a.lsusb
- 输出中应包含该设备

步骤 2:构建并烧录MicroPython
本节详细介绍了通过OpenOCD方法将MicroPython固件编译并编程到W55MH32开发板的过程。在继续之前,请确保所有先前的步骤——包括代码仓库准备、DFU引导加载程序安装和USB设备转发——均已成功完成。
1.在WSL终端中依次执行以下命令:
a. cd /home/你的用户名/micropython/ports/w55mh32
* 切换到MicroPython仓库中的W55MH32端口目录。
b. make clean
* 清理构建环境
c. make flash
* 编译并烧录固件
注意:
2.将 /home/你的用户名 替换为您的MicroPython安装的实际路径。

构建和编程过程
链接器脚本编译 (w55mh32.ld)
W55MH32 链接器脚本将这些指令组织到特定的内存区域,中断向量表首先放置在地址 0x08000000 处。MEMORY { FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 1024K /* entire flash */ FLASH_ISR (rx) : ORIGIN = 0x08000000, LENGTH = 16K /* sector 0 */ FLASH_FS (rx) : ORIGIN = 0x08004000, LENGTH = 0K /* sectors 1,2,3 are 16K */ FLASH_FIRMWARE (rx) : ORIGIN = 0x08010000, LENGTH = 972K /* sector 4 is 64K, sectors 5,6,7 are 128K */ RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 96K }OpenOCD 编程 (Makefile)
当您执行
make flash时,OpenOCD 会将整个firmware.bin文件传输到 W55MH32 的闪存中,起始地址为0x08000000。此操作在一次写入中同时完成中断向量表和主程序代码的烧录。flash: $(BUILD)/firmware.bin $(ECHO) "Writing firmware.bin to the board via CMSIS-DAP using OpenOCD" $(Q)$(OPENOCD) -f $(OPENOCD_CONFIG) -c "w55mh32_flash $(BUILD)/firmware.bin 0x08000000 " @echo "Flash complete!"- OpenOCD 编程 (board.cfg)
执行make flash时,OpenOCD 会运行w55mh32_flashTCL 脚本,该脚本通过 CMSIS-DAP 调试接口对芯片进行编程。以下是向 W55MH32 烧录固件时的通信流程命令:
proc w55mh32_flash { BIN0 ADDR0 } {
reset halt # Stop CPU execution
sleep 100 # Wait 100ms for stabilization
flash write_image erase $BIN0 $ADDR0 # Erase and write binary
sleep 100 # Wait 100ms for completion
reset run # Restart CPU
shutdown # Close OpenOCD connection
}步骤 3:串口终端验证
成功安装MicroPython后,通过串口终端访问验证固件功能。
打开串口终端
a. 启动串口终端应用程序(如Tera Term、PuTTY等)
b. 配置连接设置:
i. 波特率:115200
ii. 数据位:8
iii. 校验位:无
iv. 停止位:1
v. 流控制:无
c. 选择对应开发板UART接口的正确COM端口
d. 按下W55MH32开发板上的 RESET 按键
e. 这将触发MicroPython固件重启并显示REPL界面

总结
此演示展示了使用OpenOCD将MicroPython烧录到W55MH32芯片的完整工作流程:
- DFU准备:通过Keil进行初始引导加载程序安装
- 环境设置:克隆和准备MicroPython仓库
- USB转发:使用usbipd将Windows USB桥接到WSL
- OpenOCD烧录:使用CMSIS-DAP接口进行编程
- 验证:测试烧录的MicroPython固件
OpenOCD方法提供:
- 可靠的编程:通过行业标准调试接口
- 调试能力:与编程并行
- 可脚本化自动化:用于CI/CD工作流
- 厂商独立性:使用开源工具