<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[OpenOCD 云途版：使用 DAP-Link  烧录调试 YTM32（支持 VS Code）]]></title><description><![CDATA[<p dir="auto">本文主要发布 <strong>OpenOCD 云途版</strong> 工具包：无需安装 Keil / J-Link 补丁包，使用 <strong>DAP-Link（CMSIS-DAP）</strong> 就能对 YTM32 系列芯片进行 <strong>烧录、擦除、校验和在线调试</strong>，也可以直接配合 <strong>VS Code + Cortex-Debug</strong> 使用。</p>
<p dir="auto">下面以 <strong>YTM32B1HA01 开发板 + DAP-Link（SWD）</strong> 为例，演示从烧录到在 VS Code 里单步调试的完整流程，文中截图均为实板操作。</p>
<hr />
<h2>一、下载</h2>
<ul>
<li>工具包：<strong>openocd-ytmicro-20261024.zip</strong>（Windows 64 位，约 5.4 MB）<br />
<a href="https://yt-static-main.oss-cn-shanghai.aliyuncs.com/nodebb/8/c9a191fe-ff67-47ad-9858-e08c8f6ecad1.zip" rel="nofollow ugc">openocd-ytmicro-20261024.zip</a></li>
</ul>
<p dir="auto">解压即可使用，无需安装，也不依赖其他运行库。可以放在任意目录，下文假设解压到 <code>D:\tools\openocd</code>：</p>
<pre><code>D:\tools\openocd\
├── openocd.exe
├── YTMicro\          &lt;- 各系列芯片的下载算法和器件信息
├── interface\        &lt;- cmsis-dap.cfg、jlink.cfg、stlink.cfg
└── target\           &lt;- ytmicro.cfg（所有云途芯片通用）
</code></pre>
<h2>二、支持的芯片和调试器</h2>
<p dir="auto"><strong>芯片</strong>（<code>DEVICE</code> 取下面任意一个名字，不区分大小写）：</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>系列</th>
<th>DEVICE 名称</th>
</tr>
</thead>
<tbody>
<tr>
<td>YTM32B1HA0</td>
<td>YTM32B1HA01</td>
</tr>
<tr>
<td>YTM32B1LD0</td>
<td>YTM32B1LD04</td>
</tr>
<tr>
<td>YTM32B1LE0 / LE1</td>
<td>YTM32B1LE04、YTM32B1LE05、YTM32B1LE14、YTM32B1LE15</td>
</tr>
<tr>
<td>YTM32B1MC0</td>
<td>YTM32B1MC03</td>
</tr>
<tr>
<td>YTM32B1MD1 / MD2</td>
<td>YTM32B1MD14、YTM32B1MD24</td>
</tr>
<tr>
<td>YTM32B1ME0 / ME1</td>
<td>YTM32B1ME05、YTM32B1ME15</td>
</tr>
<tr>
<td>YTM32Z1LS0 / LS1</td>
<td>YTM32Z1LS06、YTM32Z1LS16</td>
</tr>
<tr>
<td>YTM32Z1MC0 / MD0 / ME0</td>
<td>YTM32Z1MC03、YTM32Z1MD04、YTM32Z1ME05</td>
</tr>
</tbody>
</table>
<p dir="auto">PFlash 和 DFlash 都会自动识别，可直接烧录。</p>
<p dir="auto"><strong>调试器</strong>（接口均为 SWD）：</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>调试器</th>
<th>配置文件</th>
<th>驱动</th>
</tr>
</thead>
<tbody>
<tr>
<td>DAP-Link / CMSIS-DAP</td>
<td><code>interface/cmsis-dap.cfg</code></td>
<td>免驱，插上即用（推荐）</td>
</tr>
<tr>
<td>J-Link</td>
<td><code>interface/jlink.cfg</code></td>
<td>需用 Zadig 把 J-Link 切换为 WinUSB 驱动</td>
</tr>
<tr>
<td>ST-Link</td>
<td><code>interface/stlink.cfg</code></td>
<td>需用 Zadig 安装 WinUSB 驱动</td>
</tr>
</tbody>
</table>
<blockquote>
<p dir="auto">提示：J-Link 切换为 WinUSB 后，SEGGER 官方软件（J-Flash、Ozone 等）就无法识别它了，需要时再在设备管理器中改回来。日常使用 OpenOCD 更推荐 DAP-Link。</p>
</blockquote>
<h2>三、命令行烧录（一条命令搞定）</h2>
<p dir="auto">打开 <code>cmd</code>，进入工程目录（固件路径相对于当前目录），执行：</p>
<pre><code class="language-bat">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"
</code></pre>
<p dir="auto">参数说明：</p>
<ul>
<li><code>-f interface/cmsis-dap.cfg</code>：使用的调试器，换成 <code>jlink.cfg</code> / <code>stlink.cfg</code> 即可切换；</li>
<li><code>-c "set DEVICE YTM32B1HA01"</code>：芯片型号，<strong>必须写在 <code>target/ytmicro.cfg</code> 前面</strong>；</li>
<li><code>-f target/ytmicro.cfg</code>：云途芯片通用配置，所有型号都用这一个；</li>
<li><code>program ... verify reset exit</code>：烧录 → 校验 → 复位运行 → 退出。</li>
</ul>
<p dir="auto">实板运行结果（HA01 + DAP-Link，ADC Demo 约 14 KB，烧录 + 校验约 1 秒）：</p>
<p dir="auto"><img src="https://yt-static-main.oss-cn-shanghai.aliyuncs.com/nodebb/8/4a7daaaf-47b1-4864-96cf-74631f3e6927.png" alt="命令行烧录" class=" img-fluid img-markdown" /></p>
<p dir="auto">看到 <code>** Programming Finished **</code> 和 <code>** Verified OK **</code> 就表示烧录成功。</p>
<h3>常用操作</h3>
<pre><code class="language-bat">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"
</code></pre>
<h2>四、在 VS Code 中调试（Cortex-Debug）</h2>
<h3>1. 准备</h3>
<ul>
<li>VS Code 安装扩展 <strong>Cortex-Debug</strong>（marus25.cortex-debug）；</li>
<li>安装 ARM GCC 工具链（需要其中的 <code>arm-none-eabi-gdb.exe</code>）。用云途 YCT 配置工具生成过 GCC 工程的话，工具链已经自带了；</li>
<li>工程能正常编译出 <code>.elf</code>。</li>
</ul>
<h3>2. 配置 <code>.vscode/launch.json</code></h3>
<pre><code class="language-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
            }
        }
    ]
}
</code></pre>
<p dir="auto">需要按自己的情况修改的地方：</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>字段</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>executable</code></td>
<td>编译生成的 elf 路径</td>
</tr>
<tr>
<td><code>serverpath</code></td>
<td><code>openocd.exe</code> 的实际解压路径（用 <code>/</code> 或 <code>\\</code>）</td>
</tr>
<tr>
<td><code>configFiles</code></td>
<td>第一项为调试器，换 J-Link 就写 <code>interface/jlink.cfg</code></td>
</tr>
<tr>
<td><code>openOCDPreConfigLaunchCommands</code></td>
<td><code>set DEVICE &lt;芯片型号&gt;</code>，<strong>芯片型号写在这里</strong>，它会在 <code>ytmicro.cfg</code> 之前执行</td>
</tr>
<tr>
<td><code>svdFile</code></td>
<td>芯片 SVD 文件，用于查看外设寄存器（可选）</td>
</tr>
<tr>
<td><code>armToolchainPath</code></td>
<td>如果 <code>arm-none-eabi-gdb</code> 不在 PATH 中，加上这一项指向工具链的 <code>bin</code> 目录，例如 <code>"C:/xxx/gcc-arm-none-eabi-10.3-2021.10/bin"</code></td>
</tr>
</tbody>
</table>
<p dir="auto"><img src="https://yt-static-main.oss-cn-shanghai.aliyuncs.com/nodebb/8/226ced28-b338-4e92-befe-6186d0e90afd.png" alt="launch.json 配置" class=" img-fluid img-markdown" /></p>
<h3>3. 开始调试</h3>
<p dir="auto">按 <strong>F5</strong>（或点击 运行和调试 → 开始调试）。Cortex-Debug 会自动启动 OpenOCD、下载程序，并停在 <code>main()</code>。之后就可以正常设置断点、单步、查看变量：</p>
<p dir="auto"><img src="https://yt-static-main.oss-cn-shanghai.aliyuncs.com/nodebb/8/41963bac-ebb7-43e3-821b-a5f732bdfb61.png" alt="断点调试" class=" img-fluid img-markdown" /></p>
<p dir="auto">上图在 ADC 采样循环中设置了断点，左侧 Variables 中可以看到实时读到的 <code>voltage</code> 值。</p>
<p dir="auto">配置了 <code>svdFile</code> 后，在 <strong>XPeripherals</strong> 面板中可以按位域查看外设寄存器，例如 ADC0 的 CFG0：</p>
<p dir="auto"><img src="https://yt-static-main.oss-cn-shanghai.aliyuncs.com/nodebb/8/4145cec3-bbb7-4244-ae2e-b665dd8ada2e.png" alt="外设寄存器" class=" img-fluid img-markdown" /></p>
<h2>五、注意事项</h2>
<ol>
<li><strong><code>set DEVICE</code> 一定要在 <code>target/ytmicro.cfg</code> 之前</strong>。命令行中放在 <code>-f target/ytmicro.cfg</code> 前面；VS Code 中写在 <code>openOCDPreConfigLaunchCommands</code> 里。</li>
<li><strong>烧录会占用一段 SRAM 作为工作区</strong>，烧录完成后不会恢复其中的内容。正常的"烧录 → 复位运行"流程没有影响；如果在调试过程中写 flash 后不复位直接继续运行，需要注意这一点。</li>
<li>芯片处于低功耗模式、或 SWD 引脚被复用时，可能连不上，可以在复位状态下连接（按住复位键再启动 OpenOCD）。</li>
</ol>
<h2>六、常见问题</h2>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>现象</th>
<th>处理方法</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>Device 'XXX' not found</code></td>
<td>芯片名写错了，对照第二节表格检查</td>
</tr>
<tr>
<td><code>Error: unable to find a matching CMSIS-DAP device</code></td>
<td>调试器没插好，或被其他软件（Keil、其他 OpenOCD 进程）占用</td>
</tr>
<tr>
<td><code>Error connecting DP: cannot read IDR</code></td>
<td>检查 SWD 接线和目标板供电；可尝试降低 <code>ADAPTER_SPEED</code></td>
</tr>
<tr>
<td><code>Not enough working area</code></td>
<td>可在 <code>set DEVICE</code> 后加 <code>-c "set WORKAREASIZE 0x4000"</code> 增大工作区</td>
</tr>
<tr>
<td>VS Code 提示找不到 gdb</td>
<td>在 <code>launch.json</code> 中加 <code>armToolchainPath</code></td>
</tr>
</tbody>
</table>
<h2>七、性能参考</h2>
<p dir="auto">YTM32B1ME05，1 MB PFlash，DAP-Link SWD 4 MHz：</p>
<ul>
<li>整片擦除：约 0.1 s</li>
<li>写入速度：约 160 KB/s</li>
<li>1 MB 完整镜像烧录 + 校验：约 9 s</li>
</ul>
<p dir="auto">使用中遇到问题，欢迎在本帖回复，附上<strong>芯片型号、调试器型号和 OpenOCD 的完整输出</strong>，方便我们定位。</p>
]]></description><link>https://forum.ytmicro.com/topic/2323/openocd-云途版-使用-dap-link-烧录调试-ytm32-支持-vs-code</link><generator>RSS for Node</generator><lastBuildDate>Sun, 25 Oct 2026 08:47:46 GMT</lastBuildDate><atom:link href="https://forum.ytmicro.com/topic/2323.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 24 Oct 2026 08:58:35 GMT</pubDate><ttl>60</ttl></channel></rss>