MD24 HCU 初始化补充说明
未解决
YT SDK
-
1. 问题背景
- 软件:MD24 SDK HcuDemo https://forum.ytmicro.com/topic/1208/ytm32b1md2x-hcu-demo-展示?_=1789955578721
- 硬件:MD24 EVB
- 背景描述
- HCU_DRV_RSASSA_PSS_VerifySignature -> HCU_SHA256_Check 这样调用会报 HardFault_Handler
- HCU_DRV_RSASSA_PSS_VerifySignature -> HCU_DRV_Init -> HCU_SHA256_Check 这样操作就不会进入 HardFault_Handler
2. 问题复现
2.1 HCU_DRV_RSASSA_PSS_VerifySignature -> HCU_SHA256_Check 这样调用会报 HardFault_Handler
- hcu_sha_demo -> hcu_sha_demo1 直接仅执行 HCU_DRV_RSASSA_PSS_VerifySignature 函数

- HardFault_Handler 后根据 Call Stack 可以得知出错前,代码是在 HCU_ConfigAlgorithm 函数里,HCU_ConfigAlgorithm 这个函数是 HCU 静态库(iar_hcu.a,;lib_hcu.a)里的函数,无法看到函数的内部执行

2.2 HCU_DRV_RSASSA_PSS_VerifySignature -> HCU_DRV_Init -> HCU_SHA256_Check 这样操作就不会进入 HardFault_Handler
- hcu_sha_demo -> HCU_DRV_RSASSA_PSS_VerifySignature -> hcu_sha_demo 就可以正常运行,不会进入 HardFault_Handler,因为 hcu_sha_demo 里有调用 HCU 初始


3. 问题结论
- 根据 Debug 现象推测 HCU_DRV_RSASSA_PSS_VerifySignature 函数里有执行 HCU 反初始化,从而导致再次执行 HCU 操作是若未调用 HCU_DRV_Init 则会导致 HardFault_Handler(hcuState 结构体里的配置都被释放了,可能会出现空指针的情况)
- MD24 HCU 所有 padding 方式带 SHA 的,内部都有 HCU Init + HCU Deinit,ECDSA 也一样的,内部涉及到 AES or SHA 算法的都是这样的。调用类似 API 后,如果要继续使用 HCU 运行,都要重新调用一下 HCU 初始化
快速上手云途开发生态
发帖前请查看
帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...