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.

[参考译文] TMS320F28388D:在加载 CPU2时 MemCfgRegs.GSxMSEL 值会发生变化

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/973651/tms320f28388d-memcfgregs-gsxmsel-values-are-changing-while-loading-cpu2

器件型号:TMS320F28388D

我将使用针对 CPU1和 CPU2的闪烁 LED 示例。 这两个示例都是使用闪存构建配置构建的。

加载 CPU2代码时、MemCfgRegs.GSxMSEL 值将更改为'0x00000007'。  

此外、我可以看到、在 CPU2中加载代码后、一些全局共享存储器位置将被垃圾值或零覆盖。

您能告诉我们背后的原因吗?

复制步骤:

1. 将'CPU1_FLASH'设置为 LED_ex1_C28x_DUAL_BlinkY_CPU1的构建配置并进行构建。

2. 将'CPU2_FLASH'设置为 LED_ex1_C28x_DUAL_BlinkY_CPU2的构建配置并进行构建。

3.载入 CPU1->Reset -> Restart

4.加载 CPU2。  

下面是 MemCfgRegs.GSxMSEL 的值。

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

    您好!

    [引述]  

    加载 CPU2代码时、MemCfgRegs.GSxMSEL 值将更改为'0x00000007'。  

    此外、我可以看到、在 CPU2中加载代码后、一些全局共享存储器位置将被垃圾值或零覆盖。

    您能告诉我们背后的原因吗? [/报价]

    没错。 为了加载闪存代码、闪存 API 需要加载到 RAM 中、而 GSxRAM 由闪存工具为此目的使用、因此工具更改了主器件选择值以将某些 GSxRAM 分配给 CPU2/.垃圾值实际上是加载到这些 RAM 中的闪存 API 代码。

    此致、

    Vivek Singh

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

    您好、Vivek、

    您在上面所说的话是有道理的。 但我看到与 TI F28379D 相比、行为有一个主要差异。 对于 TI F28379D、建议使用以下加载顺序(e2e POST 之一)、并适用于 CPU1和 CPU2

    1. 将代码加载到 CPU1存储器中(尚未执行)
    2. 保持 CPU1连接并将代码加载到 CPU2存储器中
    3. 执行 CPU1代码
    4. 执行 CPU2代码

    但同一序列在 TI F28388D 中不起作用。 您知道原因吗? 或者 TI F28388D 和 TI 28379D 之间有何区别?

    根据我可以看到的分析、

    • 存储器配置 MemCfgRegs.GSxMSEL 值在 TI F28388D 中设置为0x00000007、并且在 CPU2加载后不会重置为0 (我们在 TI F28379D 中看到)。
    • 在这些段中具有 CPU1的全局和静态变量的 GSRAM 段具有垃圾值(我在 TI F28379D 中看不到类似的垃圾数据)。

    因此、即使我在 CPU1初始化代码中重新配置 MemCfgRegs.GSxMSEL、初始化代码也不会执行、因为无法访问存储这些全局变量的 GSRAM0、1和 GSRAM2存储器段、并且具有垃圾值、CPU1代码在某个位置丢失。

    我知道需要使用 GSRAM 段刷写 CPU2、但在 CPU2加载后、我们不需要将这些位置(MemCfgRegs.GSxMSEL 和 GSRAM)重置为原始状态吗?

     

    谢谢、

    Aditya

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

    Aditya、

    在 F28377D 器件上、我们曾用于恢复设置、但在某些情况下会导致不同的问题、因此我们移除了 F28388D 器件插件上的恢复部件。  

    您应该将初始化代码放置在 M0/M1或 LSX RAM 中的一个上、在这里、您应该将 GSxRAM 分配给每个 CPU、然后使用该 RAM。

    此致、

    Vivek Singh  

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

    您好、Vivek、

    感谢对差异的澄清。 这表明了这一点。 我们是否有记录这些内容的地方? 例如、当我们通过 CCS 加载 exe 时、需要考虑哪些事项?

    谢谢、

    Aditya