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:#pragma DATA_SECTION 和#pragma RETAIN;似乎它们不能与 IPCMSGRAM 一起使用

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1285506/tms320f28388d-pragma-data_section-and-pragma-retain-seems-like-they-don-t-working-with-ipcmsgram

器件型号:TMS320F28388D
主题中讨论的其他器件: C2000WARE

您好!

我目前正在使用 TMS320F28388D 处理一个项目、但在特定存储器部分中初始化常量数组时遇到问题。 我的目标是将预定义的const数组加载到中CPU1_TO_CM_MSGRAM1,该数组位于地址0x39400

为了便于参考,我遵循中提供的示例C2000Ware_5_00_00_00\driverlib\f2838x\examples\c28x_cm\flash_kernel,特别是名为的文件"flash_kernel_c28x_cm_ex1_sci_boot_cpu1.c"

在使用 Code Composer Studio (CCS)对此进行调试时、我注意到0x39400 CPU1上的存储器仅包含零(0x0000)、而不是预期的数组值。

在我的代码的第一段中、我已经将数组声明如下:

 
#pragma DATA_SECTION(CopyDataToCMRAM, "MSGRAM_CPU_TO_CM_COPY_TO_S0_RAM")
#pragma RETAIN(CopyDataToCMRAM) const uint16_t CopyDataToCMRAM[138] = { 0xB500, ..., 0x400F };

在连接器命令文件(.cmd)中、我已经将CPU1TOCMRAM分成两个部分:

 
CPUTOCMRAM_0 : origin = 0x039000, length = 0x000400
CPUTOCMRAM_1 : origin = 0x039400, length = 0x000400

此外、该.cmd文件还指定:

 
MSGRAM_CPU_TO_CM > CPUTOCMRAM_0, type=NOINIT
MSGRAM_CPU_TO_CM_COPY_TO_S0_RAM > CPUTOCMRAM_1, type=NOINIT

我注意到,当我注释掉时#pragma DATA_SECTION(CopyDataToCMRAM, "MSGRAM_CPU_TO_CM_COPY_TO_S0_RAM"),阵列正确位于 LSRAM 中,并按预期初始化。

我的问题是:如何在28388D 上从 CPU1正确地将阵列初始化为从 CM 的 IPC MSGRAM?

提前感谢。

B.D.

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

    您好、B.D、

    我们的 SME 目前是 OOO 至10月30日,他将在他恢复办公后恢复工作。

    谢谢。此致、

    拉杰什怀特

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

    您好、Rajeshwary Nitin Bongirwar、

    有任何更新吗?

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

    您好!  

    我无法重现您看到的问题。  

    以同一个"flash_kernel_c28x_cm_ex1_c28x1"为例,在设备上加载二进制文件,数组已正确初始化。

    此致

    西达尔特

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

    尊敬的 Siddharth Deshpande、

    即使在加载示例后、我仍然无法将 CopyDataToCMRAM 阵列定位在0x39400。
    我已验证阵列已正确初始化并复制到 GSRAM 和 LSRAM。
    目前、我在 bootCM 过程之前手动将 CopyDataToCMRAM 阵列复制到0x39400、已将其重定向至 LSRAM 中存储。

    这种变通办法让我觉得有些不寻常。

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

    尊敬的 Siddharth Deshpande。

    我已经成功地将数组复制到它们的精确位置、无论是从 CPU1复制到 CPU2还是从 CPU1复制到 CM MSGRAM。

    之前我使用的是 CCS v11.2、但切换到 v12.5后、我发现它可以正常运行。