<?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[MD24 MCAL 0_9_1 EWDG SetCompareHigh 形参 uint8 截断，导致看门狗提前复位]]></title><description><![CDATA[<h1>1.结论摘要</h1>
<ul>
<li>MD24 MCAL 的 EWDG_SetCompareHigh() 形参类型为 uint8，而 EWDG 的 CMPH 寄存器字段为 16 位。客户配置 1s 超时（CompareHigh = 10000）时，高 8 位被静默截断，实际写入寄存器的值为 0x10（= 16），实测看门狗 2.3712ms 即触发复位。MC03 的同名函数形参为 uint16，不存在该问题。</li>
<li>影响：<strong>所有 CompareHigh（及 CompareLow</strong>，见第 5 节）配置值 大于 255 的 MD24 客户，看门狗都会提前复位；由于配置值 ≤ 255 时表现正常，该缺陷在简单测试中不易暴露。</li>
<li>修复：将形参类型改为 uint16（与寄存器字段位宽一致），并补充超范围参数校验以防再次静默截断。修复后的实测结果见第 6节。</li>
</ul>
<h1>2. 问题描述</h1>
<p dir="auto">客户在 MD24 上配置 EWDG 超时时间为 1s，实际超时时间远小于 1s，看门狗持续触发复位；相同配置在 MC03 上表现正常。<br />
客户的 EWDG 硬件设计如下图所示：EWDG_OUT 通过一个二极管连接到复位脚，EWDG_OUT 拉低即触发复位。<br />
图 2-1：客户 EWDG 硬件设计<br />
<img src="https://yt-static-main.oss-cn-shanghai.aliyuncs.com/nodebb/671/1d09a33c-fdf4-48e5-9d0c-62de5e9ecf51.png" alt="949a49eb-503d-4cdc-835d-4adc25890572-image.png" class=" img-fluid img-markdown" /><br />
MD24 侧的 MCAL WDG 配置如下：<br />
图 2-2：MCAL WDG 配置（CompareHigh = 10000）<br />
<img src="https://yt-static-main.oss-cn-shanghai.aliyuncs.com/nodebb/671/036c5c61-a727-414a-a61b-504b8759db7a.png" alt="3077c656-3c0c-46fb-b586-a8a38109b87c-image.png" class=" img-fluid img-markdown" /><br />
实测现象：EWDG_OUT 从初始化完成到拉低仅 2.3712ms，远小于配置的 1s。<br />
图 2-3：实测 EWDG_OUT 波形（2.3712ms）<br />
<img src="https://yt-static-main.oss-cn-shanghai.aliyuncs.com/nodebb/671/177d4884-9bd3-453d-9934-1bf94d09e1c4.png" alt="68d97214-0730-4ed2-8d51-753721fecf93-image.png" class=" img-fluid img-markdown" /></p>
<h1>3. 复现步骤</h1>
<ol>
<li>基于 MCAL 配置工具，将 EWDG 的 CompareHigh 配置为 10000（按配置工具口径对应 1s 超时，即 1 计数 = 100µs）；</li>
<li>初始化并启动 EWDG，不再喂狗；</li>
<li>用示波器测量 EWDG_OUT 从启动到拉低的时间；</li>
<li>实测结果为 2.3712ms，而预期为 1s。<br />
说明：客户原始场景中上一步骤的"停止喂狗"由功能未及时喂狗自然触发，此处为便于复现改为主动停止。</li>
</ol>
<h1>4. 根因分析</h1>
<ul>
<li>4.1 配置值与寄存器实际值的差异<br />
配置项 CompareHigh = 10000，但读回寄存器发现实际写入值为二进制 10000b，即 16。<br />
图 4-1：配置项截图<br />
<img src="https://yt-static-main.oss-cn-shanghai.aliyuncs.com/nodebb/671/61cd4183-966c-44a9-8a4b-a156712f697a.png" alt="225ffde0-4c4f-47c2-87d0-fdacb017e2b1-image.png" class=" img-fluid img-markdown" /><br />
图 4-2：寄存器实际值截图<br />
<img src="https://yt-static-main.oss-cn-shanghai.aliyuncs.com/nodebb/671/4943cefe-dc63-4a6f-a59e-702ab1078254.png" alt="890d7d6f-bfe2-4de1-9b0a-020054682360-image.png" class=" img-fluid img-markdown" /></li>
<li>4.2 定位：形参类型与寄存器字段位宽不匹配<br />
对比 MC03 与 MD24 驱动实现，发现 EWDG_SetCompareHigh 的形参类型存在差异：</li>
</ul>
<ul>
<li>MC03：形参 Value 类型为 uint16；</li>
<li>MD24：形参 Value 类型为 uint8。<br />
图 4-3：MC03 与 MD24 形参类型对比<br />
<img src="https://yt-static-main.oss-cn-shanghai.aliyuncs.com/nodebb/671/ba749137-9fc8-401d-b21d-e4fe9e8614f4.png" alt="094836fb-cdb7-4e7d-8dc5-e6c92aa8c053-image.png" class=" img-fluid img-markdown" /><br />
而 MD24 的 EWDG -&gt; CMPH 寄存器字段与 MC03 一致，均为 16 位：<br />
图 4-4：MD24 EWDG CMPH 寄存器定义（16 位）<br />
<img src="https://yt-static-main.oss-cn-shanghai.aliyuncs.com/nodebb/671/58a3a1dc-c909-4764-979b-d40753b587e1.png" alt="cfc07a0a-e5aa-40cb-b9dd-4c48da793984-image.png" class=" img-fluid img-markdown" /></li>
</ul>
<ul>
<li>4.3 失效机理</li>
</ul>
<pre><code>CompareHigh = 10000
        ↓ 十进制转十六进制
      0x2710                （占 16 位）
        ↓ 传入形参 uint8 Value（仅 8 位），高位被丢弃
        0x10 = 16           （写入寄存器的实际值）
</code></pre>
<p dir="auto">由于该截断发生在赋值处，既不会有编译告警，也不会触发 DET 参数校验，属于典型的静态静默截断：配置工具显示正常、代码编译通过、只有运行时行为异常。</p>
<h1>5.修复方案</h1>
<p dir="auto">当前临时修复：在 EWDG_SetCompareHigh 的条件编译处补上 MD24 分支，使其形参类型与寄存器字段位宽一致（uint16）。<br />
图 5-1：修复代码<br />
<img src="https://yt-static-main.oss-cn-shanghai.aliyuncs.com/nodebb/671/6efec8b9-bd5d-46a2-9f29-cbd804b6c3b1.png" alt="d77575aa-a3fb-4c3f-b2c5-f92ff19457e5-image.png" class=" img-fluid img-markdown" /></p>
<h1>6. 回归验证</h1>
<p dir="auto">实测结果：<br />
图 6-1：修复后实测波形<br />
<img src="https://yt-static-main.oss-cn-shanghai.aliyuncs.com/nodebb/671/18839477-d3a1-4226-ad21-d24ab4ea6590.png" alt="f06e34bd-9935-49d3-820f-a70ba3adb8af-image.png" class=" img-fluid img-markdown" /></p>
]]></description><link>https://forum.ytmicro.com/topic/2266/md24-mcal-0_9_1-ewdg-setcomparehigh-形参-uint8-截断-导致看门狗提前复位</link><generator>RSS for Node</generator><lastBuildDate>Tue, 29 Sep 2026 22:43:52 GMT</lastBuildDate><atom:link href="https://forum.ytmicro.com/topic/2266.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 24 Sep 2026 09:32:02 GMT</pubDate><ttl>60</ttl></channel></rss>