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.

[参考译文] *** 。

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1521103/thread

部件号:*** >

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

    尊敬的 Mehul:

    这是因为 bank0 的 CSC 中有一些闪存区域受写保护、在运行应用程序时无法擦除。

    您可以根据的指南将 MCU 恢复出厂设置 7.1 解锁 MCU  MSPM0 MCU 开发指南(修订版 E) 

    此致、

    Pengfei

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

    谢,谢谢。  

    是的、我看到了这些信息。 闪存组 0 中的哪个地址受写保护? 我是指我最初将图像放置在地址 0x4800 处。 但无法再次将新映像刷写到 0x4800。 在实际使用中、应该可以在任一存储体中写入新映像(受写保护区域除外)。 在相同的 0x4800 位置更新/写入新映像需要做什么,如何禁用此写保护区域? 整个 bank0 在首次编程后是否会受到写保护?  

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

    尊敬的 Mehul:

    我懂了。 首先、在 CSC 示例中、地址 0x4000-0x4800 受写保护。  

    我认为这是因为启用了存储体交换、并且整个运行的存储体都受到写保护、而另一个存储体受到可写和执行保护。 请参阅   4.4.1 存储体交换   有关更多详细信息、请参阅 MSPM0 G 系列 80MHz 微控制器技术参考手册(修订版 B)。

      

    因此、使用存储体交换(CSC 示例中使用的默认设置)时、更新的固件只能写入另一个存储体(逻辑存储体 1)。  

    此致、

    Pengfei

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

    嗨谢,这意味着如果银行交换启用,我不能写新的图像在银行 0 权利? 那么,如果我想更改写入可执行权限该怎么办? 意味着如果我当前运行的映像在 bank1 中、我想更新 bank0 中的新映像、但最终 bank 0 具有写保护、那么我该如何做到这一点? 我提到了 4.4.1 部分、但有点难以理解。   

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

    尊敬的 Mehul:

    使用存储体交换时、写入权限由存储体交换自动确定:

    -如果程序在 bank0 中运行,则 bank0 不能被擦除或写入,并且 bank1 可以被擦除和写入。

    如果程序在 bank1 中运行,则 bank1 不能被擦除或写入,并且 bank0 可以被擦除和写入。

    -无论您在 bank0 或 bank1 上运行,您运行的闪存地址都来自 0x0000-0x40000(对于 G3519),您只能将数据擦除和编程到 0x40000-0x80000 地址。

    使用 CSC 示例时、在任何情况下、您都无法将区域擦除或写入 bank0 和 bank1 中的地址 0x0000-0x4800、因为该区域用于 CSC 程序。  

    此致、

    Pengfei

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

    您好、谢:

    感谢您的澄清。 CSC 是否每次都执行映像验证? 还是只是第一次? 我的理解是正确的、对于第一次 INITDONE 问题、将执行映像验证、一旦 INTDONE 问题从下一次下电上电后 、它会直接引导应用程序映像、而不是再次验证映像。

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

    尊敬的 Mehul:

    实际上、在每次下电上电(上电复位后)、程序将会从不发出 INITDONE 的情况下启动、并且程序将进入映像验证。

    但映像验证有两种情况:

    -如果映像是新的(得到更新), CSC 将通过 ECDSA 签名来验证它。

    -如果映像没有更新,CSC 将根据基于 AES 的映像的 CMAC 标签对其进行验证,这比 ECDSA 耗时少得多。

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

    嗨,谢,这意味着如果我禁用 CMAC 验证部分,并只保留 ECDSA 验证。 然后每次我的映像验证仅使用 ECDSA 完成,而不考虑更新的映像或旧映像。

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

    是的。 没错。

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

    在 CSC 代码中、我可以找到回滚保护实施、但在文档中、我提到这些功能不可用? 您的文档是否已过时? 或实施不可信? 它会造成冲突。  安全引导用户指南 还提到不支持回滚、但在代码中实现了回滚。  

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

    尊敬的 Mehul:

    在 CSC 示例中、闪存实现回滚保护、确保闪存中的计数器仅每次增加一次。

    因此,它不是一个物理的单调性增加。回滚保护的计数器成就,只是一个由闪存实现。 因此,这意味着在未来的版本中可能会有更新,以通过物理 单调性增加.counter 实现回滚保护。

    此致、

    Pengfei

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

    好的、那么硬件回滚保护不受支持吗?

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

    是的。 客户安全代码示例目前不受支持。

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

    谢谢你谢。这清楚我的疑问。  另一个问题如果我想允许回滚,那么该怎么办? 由于当前图像选择标准始终选择高版本图像。 但我希望回滚到较低版本、那么有什么可能的选项可用于执行此操作?   

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

    您可能需要将具有更高版本的相同映像写入另一个存储体。  

    否则、您可以自行更改存储体互换判断逻辑。 (目前是通过检查映像版本来实现的)

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

    来确认一下。 CSC 的当前剂量版本能够回滚到较低版本的任何有效映像。? 您能告诉我如何实现这个目标吗? 就像 您提到的 SWaP 判断逻辑一样。 这会很有帮助。  

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

    我知道当前 CSC 遵循回滚保护、但如果我将其禁用、如何执行回滚操作?