Other Parts Discussed in Thread: AM263P4
器件型号: AM263P4
我研究了 HsmClient_getRandomNum AM263P4 SDK (MCU_PLUS_SDK_am263px_11_00_00_19) 中的实现。 从 HSM 接收到数据后、会 CacheP_inv 由于可缓存的属性、使用执行一致性操作。

CacheP_inv 函数的第二个参数是区域的大小、这对应于需要一致性管理的 RAM。 在中 HsmClient_getRandomNum、对齐通过 GET_CACHE_ALIGNED_SIZE 宏处理。 我的理解是传递给这个宏的参数应该代表需要一致性管理的区域的大小、如中所示 CacheP_inv((void *)HsmClient->RespMsg.args, GET_CACHE_ALIGNED_SIZE(sizeof(RNGReq_t)), CacheP_TYPE_ALL);。
但是、根据示例代码、使用了以下行: CacheP_inv((void *)((RNGReq_t *)HsmClient->RespMsg.args)->resultPtr, GET_CACHE_ALIGNED_SIZE(((uint32_t)*(((RNGReq_t *)HsmClient->RespMsg.args)->resultPtr))), CacheP_TYPE_ALL);
在此语句中、 ((uint32_t)*(((RNGReq_t *)HsmClient->RespMsg.args)->resultPtr)) 检索存储在指针中的值、而不是指针指向的内存区域的大小。 这可能是示例中的错误吗? 我的假设是,它应该写为: CacheP_inv((void *)((RNGReq_t *)HsmClient->RespMsg.args)->resultPtr, GET_CACHE_ALIGNED_SIZE(sizeof(((uint32_t)*(((RNGReq_t *)HsmClient->RespMsg.args)->resultPtr)))), CacheP_TYPE_ALL);,加上了 sizeof正确的。? 虽然有问题的代码在测试过程中未引起任何问题、但是否存在潜在风险?

这个问题非常重要和紧迫。 非常感谢您的答复。
