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.

[参考译文] TMS320F28055:DCSM 存在一些问题。

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/806557/tms320f28055-some-problem-with-dcsm

器件型号:TMS320F28055

你(们)好

需要代码保护。 还需要能够使用引导加载程序通过 UART 更新固件。  为此、我决定使用 DCSM。

第一个实验成功但未完成。  完成了什么。

第一 个实验。  

在文件 F2805x_DCSM_Z1_ZoneSelectBlock.asm 和 F2805x_DCSM_Z2_ZoneSelectBlock.asm 中、我仅更改了 Z1-CSMPSWD0 - CSMPSWD3和 Z2-CSMPSWD0 - CSMPSWD3。  看起来是这样的:

.sect "Dcsm_otp_Z1"

长整型0xFFFFFFFF;Z1-LINKPOINTER
长整型0xFFFFFFFF;OTPSECLOCK
长整型0xFFFFFFFF;引导模式

.sect "Dcsm_zsel_Z1"

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

长整型0x8844FFFA;Z1-CSMPSWD0 (128位密码的 lsw)
长0xAFEEF4;Z1-CSMPSWD1
长整型0xCC55FF21;Z1-CSMPSWD2
长0x3245FF66;Z1-CSMPSWD3 (128位密码的 MSW)

.sect "Dcsm_otp_Z2"

长整型0xFFFFFFFF;Z2-LINKPOINTER
长整型0xFFFFFFFF;OTPSECLOCK

.sect "Dcsm_zsel_Z2"

长0xFFFFFFFF;Z2-EXEONLYRAM
长0xFFFFFFFF;Z2-EXEONLYSECT
长整型0xFFFFFFFF;Z2-GRABRAM
长整型0xFFFFFFFF;Z2-GRABSECT

长整型0x44FF56FA;Z2-CSMPSWD0 (128位密码的 LSW)
长0x35F54FFC;Z2-CSMPSWD1
长整型0x95FF77FF;Z2-CSMPSWD2
长整型0xFFFDEFFA;Z2-CSMPSWD3 (128位密码的 MSW)

我还在文件 f28055.gel 中写入这些密码、并写入 Debug Configurations > Target > F28055 Flash Settings 中。  

在这些设置下、一切都正常。 我对器件进行编程、然后再次启动并编程。 没有按键、我就无法读取闪存。

2.第二个实验。  

我在 Z1中更改了 GRABSECT、在 Z1中也更改了引导模式。  它看起来是这样的。

.sect "Dcsm_otp_Z1"

长整型0xFFFFFFFF;Z1-LINKPOINTER
长整型0xFFFFFFFF;OTPSECLOCK
long 0xFEC5F9F4;引导模式

.sect "Dcsm_zsel_Z1"

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

长整型0x8844FFFA;Z1-CSMPSWD0 (128位密码的 lsw)
长0xAFEEF4;Z1-CSMPSWD1
长整型0xCC55FF21;Z1-CSMPSWD2
长0x3245FF66;Z1-CSMPSWD3 (128位密码的 MSW)

.sect "Dcsm_otp_Z2"

长整型0xFFFFFFFF;Z2-LINKPOINTER
长整型0xFFFFFFFF ;OTPSECLOCK

.sect "Dcsm_zsel_Z2"

长0xFFFFFFFF;Z2-EXEONLYRAM
长0xFFFFFFFF;Z2-EXEONLYSECT
长整型0xFFFFFFFF;Z2-GRABRAM
长0x99ECF67F;Z2-GRABSECT

长整型0x44FF56FA;Z2-CSMPSWD0 (128位密码的 LSW)
长0x35F54FFC;Z2-CSMPSWD1
长整型0x95FF77FF;Z2-CSMPSWD2
长整型0xFFFDEFFA;Z2-CSMPSWD3 (128位密码的 MSW)

我还使用   新数据更改了调试配置>目标> F28055闪存设置。

我成功对器件进行编程一次、程序启动。 当我第二次尝试重新编程时、器件被擦除、我无法对其进行编程的程度越高。  在所有实验中、使用了一个芯片和 XDS100V2。

3.Еhird 实验。

我使用了另一个器件、使用 XDS100V2进行了最新的更改编程。 器件已编程并成功启动。 我在被调试的器件上使用 CCS 的存储器浏览器读取闪存后立即执行。 器件已复位、不再启动且未编程。

不幸的是,我无法独立理解我需要做的事情的原因和方法。
请告诉我如何实现我的目标?

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

    我已经看过您的帖子、并将在星期一对此进行研究。

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

    DCSM 闪存为 OTP。 这意味着一次性可编程。

    因此、我们有一个称为区域选择块的模块。 每个 ZSB 在 OTP 中都有一个不同的起始存储器位置。 当您想要更改 DCSM OTP 时、需要更新 LINKPOINTER 以指向新的 ZSB。 此外、您还需要对齐链接器命令文件中的链接地址、以便对链接指针指向的新 ZSB 进行编程。

    更多信息请参见技术参考手册。

    此外、一旦一个段或 RAM 块通过 DCSM 被锁定、数据将无法由从不同区域运行的代码读取。 如果您希望读取存储器、则需要从同一个区域读取存储器或解锁该区域。

    希望这对您有所帮助、
    SAL