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 处理一个项目、但在特定存储器部分中初始化常量数组时遇到问题。 我的目标是将预定义的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后、我发现它可以正常运行。