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.

[参考译文] TMS320F28377S:无法写入 CSMPSWD 以启用 DCSM

Guru**** 2455560 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/727194/tms320f28377s-cannot-write-csmpswd-to-enable-dcsm

器件型号:TMS320F28377S

尊敬的团队:

我正在尝试基于 blinky_with DCSM 项目在 F28377中使用 DCSM。 我执行了以下步骤:

将 链接指针的位置修改为0x50

.sect "Dcsm_otp_z1_linkpointer"
长0x1FFFFFF8;Z1-LINKPOINTER1
长整型0xFFFFFFFF;保留
long 0x1FFFFFF8;Z1-LINKPOINTER2
长整型0xFFFFFFFF;保留
长0x1FFFFFF8;Z1-LINKPOINTER3
长整型0xFFFFFFFF;保留

2.将闪存 B (代码位置)分配给区域1

.sect "Dcsm_zsel_Z1"

长0xFFFFFFFF;Z1-EXEONLYRAM
长0xFFFFFFFF;Z1-EXEONLYSECT
长整型0xFFFFFFFF;Z1-GRABRAM
长0xFFFFFFFB;Z1-GRABSECT

DCSMZ1Regs 的值如下所示:

 我相信我已经成功地完成了前两个步骤。

但是、当我尝试向 CSMPSWDx 写入以下值时:

长整型0x11223344;Z1-CSMPSWD0 (128位密码的 lsw)
长整型0xFFFFFFFF;Z1-CSMPSWD1
长整型0xFFFFFFFF;Z1-CSMPSWD2
长整型0xFFFFFFFF;Z1-CSMPSWD3 (128位密码的 MSW)

出现错误:

如果我将值改回所有 F、则可以毫无错误地加载代码。

在存储器浏览器中、我可以观察到 CSMPSWDx 中的值为"All F"。 因此、应该能够写入11223344的值。

ECC 是否决定了 Zonex OTP 闪存中的值必须遵循特定顺序?

感谢你的帮助。

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

    不应该。

    我相信、自我看到0x78050已为 GRABSECT 编程内容以来、已经对以下内容进行了关注。
    然而、
    如果更改了 LINKPOINTER、则必须将* DCSM_lnk_CPU1.cmd 命令链接器文件中的"dcsm_zsel_Z1"部分更改为从 Z1-LINKPOINTER 位置中指定的值解码的地址。

    为了对以下存储器段进行编程、用户应取消注释每个段的.long 字并将值更改为所需值。 此外、* dcsm_lnk.cmd 的相应段不应再被标记为虚拟段。 从正在编程的存储器部分中删除段中的"、type = DSECT"。

    请检查您是否正在执行以下步骤:
    processors.wiki.ti.com/.../C2000_Programming_OTP

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

    正如 Meghana 提到的、首先要检查的是您计划使用新密码值更新的区域选择块的位置。 请共享链接器 cmd 文件的快照。

    此致、

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

    当然、我进行了上述相应的更改。 请仔细阅读我的帖子。

    如果我没有更改 CMD 文件、GRABSECT 中的内容应该不能正确写入?

    存储器

    第0页:/*程序内存*/

    /* Z1 OTP。 LinkPointers */
    DCSM_OTP_Z1_LINKPOINTER:origin = 0x78000,length = 0x00000C
    /* Z1 OTP。 PSWDLOCK/保留*/
    DCSM_OTP_Z1_PSWDLOCK:origin = 0x78010,length = 0x000004
    /* Z1 OTP。 CRCLOCK/保留*/
    DCSM_OTP_Z1_CRCLOCK:origin = 0x78014,length = 0x000004
    /* Z1 OTP。 被保留/ BOOTCTRL */
    DCSM_OTP_Z1_BOOTCTRL:origin = 0x7801C,length = 0x000004

    /* DCSM Z1区域选择内容(!!可移动!!) *
    /* Z1 OTP。 Z1密码位置/闪存和 RAM 分区*/
    DCSM_ZSEL_Z1_P0:origin = 0x78050,length = 0x000010

    DCSM_OTP_Z1_linkpointer :>DCSM_OTP_Z1_LINKPOINTER PAGE = 0
    DCSM_OTP_Z1_pswdlock:>DCSM_OTP_Z1_PSWDLOCK PAGE = 0,TYPE = DSECT
    DCSM_OTP_Z1_CLOCK:> DCSM_OTP_Z1_CRCLOCK PAGE = 0,TYPE = DSECT
    DCSM_OTP_Z1_BOOTctrl:>DCSM_OTP_Z1_BOOTCTRL PAGE = 0,TYPE = DSECT
    dcsm_zsel_z1:>dcsm_ZSEL_Z1_P0 page = 0

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

    cmd 文件看起来正确。
    根据我的理解,当您在一个 OTP 写入中将 OTP 编程为一组2,而不是同时编程为两组2时,您会看到这个问题。

    首先是 GRABSECT
    .sect "Dcsm_zsel_Z1"

    长0xFFFFFFFF;Z1-EXEONLYRAM
    长0xFFFFFFFF;Z1-EXEONLYSECT
    长整型0xFFFFFFFF;Z1-GRABRAM
    长0xFFFFFFFB;Z1-GRABSECT
    长整型0xFFFFFFFF;Z1-CSMPSWD0 (128位密码的 LSW)
    长整型0xFFFFFFFF;Z1-CSMPSWD1
    长整型0xFFFFFFFF;Z1-CSMPSWD2
    长整型0xFFFFFFFF;Z1-CSMPSWD3 (128位密码的 MSW)

    然后仅输入密码

    长0xFFFFFFFF;Z1-EXEONLYRAM
    长0xFFFFFFFF;Z1-EXEONLYSECT
    长整型0xFFFFFFFF;Z1-GRABRAM
    长0xFFFFFFFB;Z1-GRABSECT
    长整型0x11223344;Z1-CSMPSWD0 (128位密码的 lsw)
    长整型0xFFFFFFFF;Z1-CSMPSWD1
    长整型0xFFFFFFFF;Z1-CSMPSWD2
    长整型0xFFFFFFFF;Z1-CSMPSWD3 (128位密码的 MSW)

    而不是一次性同时使用 GRABSECT 和 Password

    长0xFFFFFFFF;Z1-EXEONLYRAM
    长0xFFFFFFFF;Z1-EXEONLYSECT
    长整型0xFFFFFFFF;Z1-GRABRAM
    长0xFFFFFFFB;Z1-GRABSECT
    长整型0x11223344;Z1-CSMPSWD0 (128位密码的 lsw)
    长整型0xFFFFFFFF;Z1-CSMPSWD1
    长整型0xFFFFFFFF;Z1-CSMPSWD2
    长整型0xFFFFFFFF;Z1-CSMPSWD3 (128位密码的 MSW)

    通常,我们不会看到单独编程的情况,但应一次性编程整个部分。

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


    您的问题似乎已解决。 您能否分享一下问题是什么以及如何解决这个问题?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Vivek、

    如您所见、我与 Meghana 共享了.cmd 和.asm 文件、我们进行了一些离线讨论。
    实际上、当我尝试在两次单独闪存一个 OTP 段时、我们没有看到任何可能导致问题的冲突。 因此、我尝试一次性刷写 OTP、正如 Meghana 建议的那样、不会发生错误。

    感谢您团队的帮助。