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.

[参考译文] TMS320F280049:DCSM 和 GRABRAM/GRABSECT 的使用

Guru**** 2482225 points
Other Parts Discussed in Thread: TMS320F28377S, TMS320F280049, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/762314/tms320f280049-dcsm-and-grabram-grabsect-usage

器件型号:TMS320F280049
主题中讨论的其他器件:TMS320F28377SC2000WARE

您好!

我正在寻找有关 TMS320F280049 (以及 TMS320F28377S 的更高版本)上 DCSM 的一些说明。

现在、我已经阅读了技术文档并浏览了论坛、但对于 DCSM 的用户 OTP 内的区域块和 GRABRAM 或 GRABSECT 寄存器、我仍然有点困惑。

关于 SPRUI33A 的3.13部分、我看到表3-15指示这些寄存器的2个位用于指示特定 RAM 块或闪存扇区是区域1、区域2的一部分还是不安全的。

通过查看 C2000Ware f28004x_driverlib 项目、我找到了一个包含定义的文件、该文件似乎对这些寄存器进行分区、以划分与可用闪存扇区(GRABSECT)或 RAM 块(GRABRAM)保持一致的2个位。

我对此有许多问题。

  • 为什么组0和组1区域中的每个块都具有与 GRABSECT 和 GRABRAM 相关的寄存器分配?
  • 此外、DSCM 为什么每个区域有多个块? 这样您可以为特殊用途(仅执行等)配置某些存储器吗?
  • 我可以只使用几个块、还是它们与特定用途相关?

我以前在使用较旧 Delfino 的 CSM 方面的经验是、设置 CSM 寄存器将锁定所有安全存储器。 最近芯片的 CSM 似乎更灵活、但也更复杂。

目前、我不愿意开始使用 DCSM、直到我完全理解这一点、因为它看起来存在许多缺陷、可能会使存储器永久锁定。 请提供任何帮助或指导以编写更详细的文件。 是否有任何培训视频讨论其中一个芯片上的 DCSM?

感谢您的任何帮助、

-Wes

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

    您好、Wesley、

    [引用]为什么组0和组1区域中的每个块都具有与 GRABSECT 和 GRABRAM 相关的寄存器分配? [/报价]

    我们有两个区域。 用户可以根据需要将不同的闪存扇区和 RAM 块分配到不同的区域、这是通过在用户 OTP 中编辑 GRABSECT 和 GRABRAM 位置来完成的。  用户 OTP 位置是安全的、因此用户无法读取它。 因此、OTP 值被填充到 GRABSECT 和 GRABRAM 寄存器中(只读)。

    [引用]此外、DSCM 为什么每个区域有多个块? 这样您可以为特殊用途(仅执行等)配置某些存储器吗? [/报价]

    与之前的说明相同。 如果用户只想使用一个区域,则可以将所有内容分配给 ZONE1。

    [引述]我能否只使用几个块、或者它们是否与特定用途相关? [/报价]

    您可以使用所需的任意数量的块。

    [引用]我以前在使用较旧 Delfino 的 CSM 方面的经验是、设置 CSM 寄存器将锁定所有安全存储器。 最近芯片的 CSM 似乎更灵活、但也更复杂。 [/报价]

    你是对的。 我们增加了双区域功能、允许第三方在不影响安全性的情况下进行开发。 但是、这不是必需的、那么它可以像旧的安全方案那样进行配置。

    我们没有视频、但在适用于 F28377S 器件的 C2000Ware 中有示例代码、可以参考该示例代码、也可以告诉我具体的查询、我们想进一步解释。

    此致、

    Vivek Singh

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

    感谢您的回复 Vivek、

    我认为、我的困惑主要是由于浏览文档而不是查看示例项目。

    在给出您的回复并通过示例项目查看寄存器后、我看到6组寄存器:

    DcsmCommonRegs -这似乎是与所有 DCSM 的状态和信标相关的寄存器

    DcsmCommon2Regs -这看起来是空的。 我怀疑在其他芯片中、这是为了通用寄存器结构而组装的?

    DcsmBank0Z1Regs -这似乎是闪存组0和 RAM 的区域1寄存器

    DcsmBank0Z2Regs -这似乎是闪存组0和 RAM 的区域2寄存器

    DcsmBank1Z1Regs - 这似乎是 闪存组1的区域1寄存器

    DcsmBank1Z2Regs - 这似乎是 闪存组1的区域2寄存器

    因此 、如果我在 DcsmBank0Z1Regs.B0_Z1_GRABSECTR_1、DcsmBank0Z1Regs.Z1_GRABRAMR_1和 DcsmBank1Z1Regs.B1_Z1_GRABSECTR_1中设置位、那么我可以将所有安全存储器分配到、对吧?

    默认值显示为:

    DcsmBank0Z1Regs.B0_Z1_GRABSECTR_1 = 0xFFFFFFFF

    DcsmBank1Z1Regs.B1_Z1_GRABSECTR_1 = 0xFFFFFFFF

    DcsmBank0Z1Regs.Z1_GRABRAMR_1 = 0x0000FFFF

    根据文档、如果我为 GRABSECTR 设置为0x555555、为 GRABRAMR 设置为0x00005555、这应该会将所有内容分配给区域1、对吧?

    谢谢、

    -Wes

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

    您好、Wes、

    [引用]因此 、如果我设置 DcsmBank0Z1Regs.B0_Z1_GRABSECTR_1、DcsmBank0Z1Regs.Z1_GRABRAMR_1和 DcsmBank1Z1Regs.Z1_Z1_GRABSECTR_1中的位、那么我可以将所有安全存储器分配到正确的位置吗? [/报价]

    请注意、寄存器是只读的。 为此、实际值在用户 OTP 位置进行编程。

    [引用]根据文档、如果我为 GRABSECTR 设置为0x555555、为 GRABRAMR 设置为0x00005555、这应该会将所有内容分配给区域1、对吧? [/报价]

    正确、但同样、这些值需要在用户 OTP 中进行编程。 这可以通过 CCS 闪存插件 GUI 来完成、也可以将其包含在代码中、以便.out 具有所有必需的设置、并在加载.out 时进行编程。

    此致、

    Vivek Singh

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

    [引用 user="Vivek Singh"]

    将其包含在代码中、以便.out 具有所有必需的设置、并在加载.out 时进行编程。

    [/报价]

    您好、Vivek、

    关于将这些内容保存到用户 OTP、我的团队希望按照您的指示以编程方式执行此操作。我在 C200Ware 中为2837x 系列处理器找到了'blinky_wing_dcsm_cpu01'项目。 一旦我能够完成这个过程、我可能会有更多问题、但我认为我现在很好。

    谢谢!

    -Wes