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.

[参考译文] TMS320F2.8379万D:代码安全模块

Guru**** 2539500 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/620589/tms320f28379d-code-security-module

部件号:TMS320F2.8379万D

您好,

我发现F2837x/F2807x器2807器件的密码位于OTP中,而不是像我们的旧部件那样的闪存中。 写入密码以锁定设备后,我们永远无法将其恢复到解锁状态。

1,为何要作出这样的改变?

2.有码安全模块有何意义?

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

    您好,Zou,

    [引述]我发现F2837x/F2807x器2807器件的密码位于OTP中,而不是像我们的旧部件那样的闪存中。

    是的,正确。 这样做是为了避免在对主闪存阵列进行编程/擦除时意外锁定设备。

    [引述]在写入密码以锁定设备后,我们永远无法将其恢复到解锁状态。 [/引述]

    我不理解这个问题。 安全设置根据链接指针值存储在区域选择块中。 用户可以通过更改链接指针值以指向新的区域选择块来更改设置(请参阅设备文档的“2.13 .1.5 链接指针和区域选择”一节)。 因此,如果您要从设备上删除安全性,请将链接指针值更改为下一个区域选择块,并使新的区域选择块保持未编程(All_1)。 这将使设备保持不安全/解锁状态。

    [引述] 2.拥有双码安全模块有何意义? [/引述]

    双区域安全无需共享密码,即可在安全环境中进行第三方开发。 例如,团队A和团队B可以有自己的安全区域来保护设备上的IP/代码,但仍然允许彼此使用这些功能。

    此致,

    Vivek Singh

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

    Vivek,

    感谢您的回答。

    我想说明这一点。

    对于每个区域,比如zone1,我们在   OTP中有Z1OTP_LINKPOINTER1,Z1OTP_LINKPOINTER2,Z1OTP_LINKPOINTER3寄存器(一次性可编程), 并且我们在闪存中也有Z1_LINKPOINTER。

    Z1_LINKPOINTER不能写入而只能读取,这是通过比较  硬件中的Z1OTP_LINKPOINTER1,Z1OTP_LINKPOINTER2和Z1OTP_LINKPOINTER3得出的结果,它决定了我们选择哪一个ZoneSelectBlock,对吗?

    在TRM中有这样的说法

    通过比较所有三个值(按位 投票逻辑),对所有链接指针执行虚拟读取时,链接指针的最终值在硬件中得到解析。

    例如,按位投票逻辑,

    如果 Z1OTP_LINKPOINTER1, Z1OTP_LINKPOINTER2和Z1OTP_LINKPOINTER3中的位为两个0和一个1, 则Z1_LINKPOINTER的最终位为0,

    如果  Z1OTP_LINKPOINTER1, Z1OTP_LINKPOINTER2和Z1OTP_LINKPOINTER3中的位为两个1s和一个0, 则Z1_LINKPOINTER的最终位为1,对吗?

    何时完成 Z1OTP_LINKPOINTER1, Z1OTP_LINKPOINTER2和Z1OTP_LINKPOINTER3的虚拟读取? 我是否必须编写代码才能在我的程序中读取这些寄存器?

    Howard

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

    您好,Zou,

    [引述] Z1_LINKPOINTER无法写入,但只能读取,这是通过比较  硬件中的Z1OTP_LINKPOINTER1,Z1OTP_LINKPOINTER2和Z1OTP_LINKPOINTER3得出的结果,它决定了我们选择哪一个ZoneSelectBlock,对吗? [/引述]

    是的,正确。 请注意Z1-LINKPOINTER为普通只读寄存器,不在闪存中。

    [引述]

    如果 Z1OTP_LINKPOINTER1, Z1OTP_LINKPOINTER2和Z1OTP_LINKPOINTER3中的位为两个0和一个1, 则Z1_LINKPOINTER的最终位为0,

    如果  Z1OTP_LINKPOINTER1, Z1OTP_LINKPOINTER2和Z1OTP_LINKPOINTER3中的位为两个1s和一个0, 则Z1_LINKPOINTER的最终位为1,对吗? [/引述]

    正确。

    [引述] 何时将 执行Z1OTP_LINKPOINTER1,Z1OTP_LINKPOINTER2和Z1OTP_LINKPOINTER3的虚拟读取? 我是否必须编写代码才能在我的程序中读取这些寄存器? [/引述]

    引导ROM代码在执行此步骤的每次重置后执行安全初始化。 如果在连接调试器的情况下运行,则GEL文件具有在调试重置后执行的安全初始化序列。

    此致,

    Vivek Singh