This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM263P4:与 AM263P4 的`Hsmclient.c`中的函数实现相关的问题

Guru**** 2957470 points

Other Parts Discussed in Thread: AM263P4

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1652721/am263p4-issues-related-to-the-function-implementations-in-hsmclient-c-for-am263p4

器件型号: AM263P4

我目前正在根据 SDK 中的`HsmClient_getRandomNum`函数在 AM263P4 上编写一个函数、以向 M4 内核 (HsmServer) 发出服务请求。 我有以下问题:**

问题 1:
接收到从 HSM 内核返回的`μ s RespMsg.args`后、除了对整个`getRandomNum`结构(即`RespMsg.args`) 执行高速缓存一致性运算之外、是否有必要对`args`内的所有指针变量执行高速缓存一致性运算? 更具体地说:我应该只对`resultPtr`(它保持该函数应该输出的 RNG 输出)执行相干运算,而不是对`seedValue`执行相干运算?

image.png

问题 2:
将 SIPC 消息发送到 HSM 内核时、除了对整个`ReqMsg.args`(即`getRandomNum`) 执行缓存一致性运算之外、我是否还需要对输入到 HSM 内核的指针变量(例如`resultPtr`和`seedValue`)执行缓存一致性运算? 如果是这种情况、以下代码中是否有错误  

image.png

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    [报价 userid=“655954“ url=“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1652721/am263p4-issues-related-to-the-function-implementations-in-hsmclient-c-for-am263p4

    问题 1:
    接收到从 HSM 内核返回的`μ s RespMsg.args`后、除了对整个`getRandomNum`结构(即`RespMsg.args`) 执行高速缓存一致性运算之外、是否有必要对`args`内的所有指针变量执行高速缓存一致性运算? 更具体地说:我应该只对`resultPtr`(它保持该函数应该输出的 RNG 输出)执行相干运算,而不是对`seedValue`执行相干运算?

    [/报价]

    这取决于您是否在下一个迭代中再次使用了 theyValue。 仅对 MAIN 结构执行第一个缓存失效操作。 该主结构内的后续指针需要根据要更新的相同数据以及在内核中使用相同数据来取消验证/写回。

    在将 SIPC 消息发送到 HSM 内核时、除了对整个` ReqMsg.args`(即`getRandomNum `re) 执行缓存一致性运算之外、我是否还需要对输入到 HSM 内核的指针变量(例如` sultPtr `s和` eedValue)执行缓存一致性运算? 如果是这种情况、以下代码 
    中是否存在错误

    我没有看到 HSM 中使用了结果、这就是此处未使其失效的原因。

    谢谢。此致、

    Nikhil Dasan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    *问题 1:**
    总之、在高速缓存 RAM 上、当主内核通过 SIPC 将数据发送到 HSM 内核时、必须对必要的输入指针变量执行一致性运算(其中“必要输入“是指 HSM 内核需要处理的指针变量)、以确保传输到 HSM 内核的数据与 HSM 内核实际接收到的数据一致? 同样、在 HSM 内核完成处理并通过 SIPC 将数据发送回主内核后、必须对必要的输出指针变量执行一致性运算、其中“必要的输出指针变量“是指我们主内核随后将需要的数据。

    *问题 2:**
    关于`HsmClient_getRandomNum`、由于 HSM 内核同时使用`seedValue`和`resultPtr`指针变量、因此需要在输入上进行一致性运算。 那么、您的答案 2 是否存在问题?

    *问题 3:**
    对于`HsmClient_getRandomNum`函数、在当前实践中、我只需要输出`resultPtr`、这是用于存储 RNG 的位置。 `seedValue`将在下一个请求时重新填充、 因此从理论上讲、是否无需对`seedValue`执行一致性运算? 当然,我知道对指针变量执行一致性运算对两者都不重要,对吧?

    *问题 4:**
    `` hsmclient.c `中的许多函数(例如` HsmClient_getuid`、`HsmClient_readOTPRow 等)、尽管在将一致性运算发送到 HSM 内核之前会对指针变量执行一致性运算、但从 HSM 内核接收数据后、不会对指针变量执行一致性运算。是否考虑这一点? 因为我看到这些指针变量也在 HSM 内核处理函数中使用

    希望尽快恢复,谢谢你!!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这个问题非常紧迫、因为它影响到方案的发布。 请您立即查看一下吗? 非常感谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    **问题 1:**
    总之、在高速缓存 RAM 上、当主内核通过 SIPC 将数据发送到 HSM 内核时、必须对必要的输入指针变量执行一致性运算(其中“必要输入“是指 HSM 内核需要处理的指针变量)、以确保传输到 HSM 内核的数据与 HSM 内核实际接收到的数据一致? 同样、在 HSM 内核完成处理并通过 SIPC 将数据发送回主内核后、必须对必要的输出指针变量执行一致性运算、其中“必要的输出指针变量“是指我们主内核随后将需要的数据。

    是的、正确

    **问题 2:**
    关于`HsmClient_getRandomNum`、由于 HSM 内核同时使用`seedValue`和`resultPtr`指针变量、因此需要在输入上进行一致性运算。 那么、您的答案 2 是否存在问题?

    如您在代码中所见、HSM 未从结果 ptr 读取任何内容。 它只是写入相同的内容。 因此、在发送前无需从 R5 对其进行高速缓存维护。

    [quote userid=“655954“ url=“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1652721/am263p4-issues-related-to-the-function-implementations-in-hsmclient-c-for-am263p4/6379019 `` HsmClient_getRandomNum 函数、在我们当前的实践中、我只需要输出`resultPtr`、这是 RNG 的存储位置。 `seedValue`将在下一个请求时重新填充、 因此从理论上讲、是否无需对`seedValue`执行一致性运算? 当然、我知道对指针变量执行一致性运算对两者都无关紧要、对吧?

    正确、如果 R5 未进一步使用、则无需对此进行高速缓存维护

    [quote userid=“655954“ url=“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1652721/am263p4-issues-related-to-the-function-implementations-in-hsmclient-c-for-am263p4/6379019 `hsmclient.c`中的许多函数、例如`HsmClient_getuid`、`HsmClient_readOTPRow`等。尽管在将指针变量发送到 HSM 内核之前对它们执行了一致性运算、但从 HSM 内核接收数据后对指针变量不执行一致性运算。是否有任何考虑因素? 因为我看到这些指针变量也用于 HSM 内核处理函数

    是的、您回答正确。 在这种情况下、应该执行缓存维护、并且 HSM 会填充数据。 我们没有看到这个问题、因为我们之前正在执行 Wb 和 Inv、因此来自 HSM 的内容更新主要由 R5 从 RAM 中挑选、而不是从缓存中挑选。
    但最好在 R5 上使缓存失效以访问 HSM 中更新的内容。

    谢谢。此致、  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    专家、让我总结一下我的理解:
    对于上述问题、无论指针变量是否将在下一次循环迭代中使用、或者变量是否仅为输入‑且不需要输出、都对 R5 内核和 HSM 内核之间交换的所有数据(例如结构和指针变量)执行缓存一致性运算、特别是  在  R5 内核将数据发送到 HSM 内核之前发出 wbinv、并在 R5 内核接收到 HSM 数据后发出 inv将使程序更加稳健和稳定,没有不利的副作用。 我的理解是否正确?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    缓存维护确实涉及几个周期、但总体影响应该可以忽略不计、请检查此额外开销是否满足您的应用程序计时要求。 如果是,那么我在这里看不到任何其他不利的副作用。