OpenOCD 云途版:使用 DAP-Link 烧录调试 YTM32(支持 VS Code)
-
本文主要发布 OpenOCD 云途版 工具包:无需安装 Keil / J-Link 补丁包,使用 DAP-Link(CMSIS-DAP) 就能对 YTM32 系列芯片进行 烧录、擦除、校验和在线调试,也可以直接配合 VS Code + Cortex-Debug 使用。
下面以 YTM32B1HA01 开发板 + DAP-Link(SWD) 为例,演示从烧录到在 VS Code 里单步调试的完整流程,文中截图均为实板操作。
一、下载
- 工具包:openocd-ytmicro-20261024.zip(Windows 64 位,约 5.4 MB)
openocd-ytmicro-20261024.zip
解压即可使用,无需安装,也不依赖其他运行库。可以放在任意目录,下文假设解压到
D:\tools\openocd:D:\tools\openocd\ ├── openocd.exe ├── YTMicro\ <- 各系列芯片的下载算法和器件信息 ├── interface\ <- cmsis-dap.cfg、jlink.cfg、stlink.cfg └── target\ <- ytmicro.cfg(所有云途芯片通用)二、支持的芯片和调试器
芯片(
DEVICE取下面任意一个名字,不区分大小写):系列 DEVICE 名称 YTM32B1HA0 YTM32B1HA01 YTM32B1LD0 YTM32B1LD04 YTM32B1LE0 / LE1 YTM32B1LE04、YTM32B1LE05、YTM32B1LE14、YTM32B1LE15 YTM32B1MC0 YTM32B1MC03 YTM32B1MD1 / MD2 YTM32B1MD14、YTM32B1MD24 YTM32B1ME0 / ME1 YTM32B1ME05、YTM32B1ME15 YTM32Z1LS0 / LS1 YTM32Z1LS06、YTM32Z1LS16 YTM32Z1MC0 / MD0 / ME0 YTM32Z1MC03、YTM32Z1MD04、YTM32Z1ME05 PFlash 和 DFlash 都会自动识别,可直接烧录。
调试器(接口均为 SWD):
调试器 配置文件 驱动 DAP-Link / CMSIS-DAP interface/cmsis-dap.cfg免驱,插上即用(推荐) J-Link interface/jlink.cfg需用 Zadig 把 J-Link 切换为 WinUSB 驱动 ST-Link interface/stlink.cfg需用 Zadig 安装 WinUSB 驱动 提示:J-Link 切换为 WinUSB 后,SEGGER 官方软件(J-Flash、Ozone 等)就无法识别它了,需要时再在设备管理器中改回来。日常使用 OpenOCD 更推荐 DAP-Link。
三、命令行烧录(一条命令搞定)
打开
cmd,进入工程目录(固件路径相对于当前目录),执行:D:\tools\openocd\openocd.exe -f interface/cmsis-dap.cfg -c "set DEVICE YTM32B1HA01" -f target/ytmicro.cfg -c "program build/HA0_Adc_Demo.elf verify reset exit"参数说明:
-f interface/cmsis-dap.cfg:使用的调试器,换成jlink.cfg/stlink.cfg即可切换;-c "set DEVICE YTM32B1HA01":芯片型号,必须写在target/ytmicro.cfg前面;-f target/ytmicro.cfg:云途芯片通用配置,所有型号都用这一个;program ... verify reset exit:烧录 → 校验 → 复位运行 → 退出。
实板运行结果(HA01 + DAP-Link,ADC Demo 约 14 KB,烧录 + 校验约 1 秒):

看到
** Programming Finished **和** Verified OK **就表示烧录成功。常用操作
rem 烧录 hex / elf(自带地址) openocd.exe -f interface/cmsis-dap.cfg -c "set DEVICE YTM32B1HA01" -f target/ytmicro.cfg -c "program app.hex verify reset exit" rem 烧录 bin 文件,需要指定起始地址(HA0 PFlash 起始地址为 0x02000000,其他系列请查手册存储器映射) openocd.exe -f interface/cmsis-dap.cfg -c "set DEVICE YTM32B1HA01" -f target/ytmicro.cfg -c "program app.bin 0x02000000 verify reset exit" rem 擦除第一个 flash bank(PFlash) openocd.exe -f interface/cmsis-dap.cfg -c "set DEVICE YTM32B1HA01" -f target/ytmicro.cfg -c "init; reset halt; flash erase_sector 0 0 last; exit" rem 调低 SWD 速率(线较长或连接不稳定时),单位 kHz,默认 4000 openocd.exe -f interface/cmsis-dap.cfg -c "set DEVICE YTM32B1HA01" -c "set ADAPTER_SPEED 1000" -f target/ytmicro.cfg -c "program app.elf verify reset exit"四、在 VS Code 中调试(Cortex-Debug)
1. 准备
- VS Code 安装扩展 Cortex-Debug(marus25.cortex-debug);
- 安装 ARM GCC 工具链(需要其中的
arm-none-eabi-gdb.exe)。用云途 YCT 配置工具生成过 GCC 工程的话,工具链已经自带了; - 工程能正常编译出
.elf。
2. 配置
.vscode/launch.json{ "version": "0.2.0", "configurations": [ { "name": "HA0_Adc_Demo Debug", "type": "cortex-debug", "request": "launch", "cwd": "${workspaceFolder}", "executable": "${workspaceFolder}/build/HA0_Adc_Demo.elf", "servertype": "openocd", "device": "YTM32B1HA01", "serverpath": "D:/tools/openocd/openocd.exe", "configFiles": [ "interface/cmsis-dap.cfg", "target/ytmicro.cfg" ], "openOCDPreConfigLaunchCommands": [ "set DEVICE YTM32B1HA01" ], "svdFile": "${workspaceFolder}/.vscode/chip.svd", "runToEntryPoint": "main", "liveWatch": { "enabled": true, "samplesPerSecond": 4 } } ] }需要按自己的情况修改的地方:
字段 说明 executable编译生成的 elf 路径 serverpathopenocd.exe的实际解压路径(用/或\\)configFiles第一项为调试器,换 J-Link 就写 interface/jlink.cfgopenOCDPreConfigLaunchCommandsset DEVICE <芯片型号>,芯片型号写在这里,它会在ytmicro.cfg之前执行svdFile芯片 SVD 文件,用于查看外设寄存器(可选) armToolchainPath如果 arm-none-eabi-gdb不在 PATH 中,加上这一项指向工具链的bin目录,例如"C:/xxx/gcc-arm-none-eabi-10.3-2021.10/bin"
3. 开始调试
按 F5(或点击 运行和调试 → 开始调试)。Cortex-Debug 会自动启动 OpenOCD、下载程序,并停在
main()。之后就可以正常设置断点、单步、查看变量:
上图在 ADC 采样循环中设置了断点,左侧 Variables 中可以看到实时读到的
voltage值。配置了
svdFile后,在 XPeripherals 面板中可以按位域查看外设寄存器,例如 ADC0 的 CFG0:
五、注意事项
set DEVICE一定要在target/ytmicro.cfg之前。命令行中放在-f target/ytmicro.cfg前面;VS Code 中写在openOCDPreConfigLaunchCommands里。- 烧录会占用一段 SRAM 作为工作区,烧录完成后不会恢复其中的内容。正常的"烧录 → 复位运行"流程没有影响;如果在调试过程中写 flash 后不复位直接继续运行,需要注意这一点。
- 芯片处于低功耗模式、或 SWD 引脚被复用时,可能连不上,可以在复位状态下连接(按住复位键再启动 OpenOCD)。
六、常见问题
现象 处理方法 Device 'XXX' not found芯片名写错了,对照第二节表格检查 Error: unable to find a matching CMSIS-DAP device调试器没插好,或被其他软件(Keil、其他 OpenOCD 进程)占用 Error connecting DP: cannot read IDR检查 SWD 接线和目标板供电;可尝试降低 ADAPTER_SPEEDNot enough working area可在 set DEVICE后加-c "set WORKAREASIZE 0x4000"增大工作区VS Code 提示找不到 gdb 在 launch.json中加armToolchainPath七、性能参考
YTM32B1ME05,1 MB PFlash,DAP-Link SWD 4 MHz:
- 整片擦除:约 0.1 s
- 写入速度:约 160 KB/s
- 1 MB 完整镜像烧录 + 校验:约 9 s
使用中遇到问题,欢迎在本帖回复,附上芯片型号、调试器型号和 OpenOCD 的完整输出,方便我们定位。
- 工具包:openocd-ytmicro-20261024.zip(Windows 64 位,约 5.4 MB)
-
R run 被引用 于这个主题
快速上手云途开发生态
发帖前请查看
帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...