<?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 HCU 初始化补充说明]]></title><description><![CDATA[<h1>1. 问题背景</h1>
<ol>
<li>软件：MD24 SDK HcuDemo <a href="https://forum.ytmicro.com/topic/1208/ytm32b1md2x-hcu-demo-%E5%B1%95%E7%A4%BA?_=1789955578721">https://forum.ytmicro.com/topic/1208/ytm32b1md2x-hcu-demo-展示?_=1789955578721</a></li>
<li>硬件：MD24 EVB</li>
<li>背景描述</li>
</ol>
<ul>
<li>HCU_DRV_RSASSA_PSS_VerifySignature -&gt; HCU_SHA256_Check 这样调用会报 HardFault_Handler</li>
<li>HCU_DRV_RSASSA_PSS_VerifySignature -&gt; HCU_DRV_Init -&gt; HCU_SHA256_Check 这样操作就不会进入 HardFault_Handler</li>
</ul>
<h1>2. 问题复现</h1>
<h2>2.1 HCU_DRV_RSASSA_PSS_VerifySignature -&gt; HCU_SHA256_Check 这样调用会报 HardFault_Handler</h2>
<ol>
<li>hcu_sha_demo -&gt; hcu_sha_demo1 直接仅执行 HCU_DRV_RSASSA_PSS_VerifySignature 函数</li>
</ol>
<p dir="auto"><img src="https://yt-static-main.oss-cn-shanghai.aliyuncs.com/nodebb/710/1edd7f03-2568-4525-9872-50f5e4338b14.png" alt="595b7924-470a-4f7b-b98a-195a86a277aa-image.png" class=" img-fluid img-markdown" /></p>
<ol start="2">
<li>HardFault_Handler 后根据 Call Stack 可以得知出错前，代码是在 HCU_ConfigAlgorithm 函数里，HCU_ConfigAlgorithm 这个函数是 HCU 静态库（iar_hcu.a，；lib_hcu.a）里的函数，无法看到函数的内部执行</li>
</ol>
<p dir="auto"><img src="https://yt-static-main.oss-cn-shanghai.aliyuncs.com/nodebb/710/ae6053a9-1ff9-4393-bd03-e50be82b370d.png" alt="2edff760-af82-478a-82e0-ec394ac44d54-image.png" class=" img-fluid img-markdown" /></p>
<h2>2.2 HCU_DRV_RSASSA_PSS_VerifySignature -&gt; HCU_DRV_Init -&gt; HCU_SHA256_Check 这样操作就不会进入 HardFault_Handler</h2>
<ol>
<li>hcu_sha_demo -&gt; HCU_DRV_RSASSA_PSS_VerifySignature -&gt; hcu_sha_demo 就可以正常运行，不会进入 HardFault_Handler，因为 hcu_sha_demo 里有调用 HCU 初始<br />
<img src="https://yt-static-main.oss-cn-shanghai.aliyuncs.com/nodebb/710/c04b31b7-69f6-4798-8045-3abb8d8e3655.png" alt="42a4ea23-2c7f-4531-9b77-a94c18025b94-image.png" class=" img-fluid img-markdown" /><br />
<img src="https://yt-static-main.oss-cn-shanghai.aliyuncs.com/nodebb/710/d8a9437b-8578-49d5-a37a-0cc32802cc47.png" alt="e1104fb4-ad60-4277-99b7-1f16bd538d92-image.png" class=" img-fluid img-markdown" /></li>
</ol>
<h1>3. 问题结论</h1>
<ol>
<li>根据 Debug 现象推测 HCU_DRV_RSASSA_PSS_VerifySignature 函数里有执行 HCU 反初始化，从而导致再次执行 HCU 操作是若未调用 HCU_DRV_Init 则会导致 HardFault_Handler（hcuState 结构体里的配置都被释放了，可能会出现空指针的情况）</li>
<li>MD24 HCU 所有 padding 方式带 SHA 的，内部都有 HCU Init + HCU Deinit，ECDSA 也一样的，内部涉及到 AES or SHA 算法的都是这样的。调用类似 API 后，如果要继续使用 HCU 运行，都要重新调用一下 HCU 初始化</li>
</ol>
]]></description><link>https://forum.ytmicro.com/topic/2260/md24-hcu-初始化补充说明</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 23:09:48 GMT</lastBuildDate><atom:link href="https://forum.ytmicro.com/topic/2260.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 22 Sep 2026 03:06:08 GMT</pubDate><ttl>60</ttl></channel></rss>