跳转至内容
  • 37 主题
    50 帖子
    FrankieF

    关于HA0 MCAL,掉电后跑不起来,可以查看这个:https://forum.ytmicro.com/topic/2320/ha01-smcal3_0_0-demo-烧录后掉电再上电代码无法运行问题

  • 2k 主题
    9k 帖子
    runR

    https://forum.ytmicro.com/topic/2323/openocd-云途版-使用-dap-link-烧录调试-ytm32-支持-vs-code

  • Blog posts from individual members

    59 主题
    201 帖子
    runR

    本文主要发布 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 路径 serverpath openocd.exe 的实际解压路径(用 / 或 \\) configFiles 第一项为调试器,换 J-Link 就写 interface/jlink.cfg openOCDPreConfigLaunchCommands set DEVICE <芯片型号>,芯片型号写在这里,它会在 ytmicro.cfg 之前执行 svdFile 芯片 SVD 文件,用于查看外设寄存器(可选) armToolchainPath 如果 arm-none-eabi-gdb 不在 PATH 中,加上这一项指向工具链的 bin 目录,例如 "C:/xxx/gcc-arm-none-eabi-10.3-2021.10/bin"

    launch.json 配置

    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_SPEED Not 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 的完整输出,方便我们定位。

  • 云途开发生态介绍

    快速上手云途开发生态

  • 云途论坛规则/Yuntu Forum Rules

    发帖前请查看

  • YT CONFIG TOOL调查问卷

    帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...

  • Online Users