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.

[参考译文] TMS320F28379D:全局变量被置位为0时以及内存问题

Guru**** 2475280 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1472239/tms320f28379d-issue-with-global-variables-being-set-0-and-memory-issues

器件型号:TMS320F28379D
Thread 中讨论的其他器件:C2000WARE

工具与软件:

您好!

我参考了以下位置的 rfft 示例: C:\ti\c2000\C2000Ware_5_02_00_00\libraries\dsp\FPU\c28\examples\fft\2837x_rfft

这没什么问题、我能够启动一个新项目、并根据需要在我的项目中实施 FFT。 然后、我想将 FFT 从示例中给定的256点默认值增加到1024点 FFT。 为此、我将 FFT_STAGE_8从8更改为10、并相应地调整我的阵列大小。 在我进行编译和链接时、我收到以下错误、指出程序无法放入可用内存中:

因此、我决定进入链接器 cmd 文件、并为.ebss 和.econst 段提供更多的存储器空间、方法是为其提供 GSRAM9:

这样就可以编译和构建所有内容。 不过、在运行时、我没有收到我预期的任何数据。 通过调试正在运行的程序、我发现指向 main 函数之前实例化的特定地址的全局变量均未正确初始化、但全部设置为0、如以下代码片段和监视表达式窗口所示:

           

我开始使用链接器文件、并认为如何尝试增加这些段的存储器容量或使用 GSRAM 时可能会出现问题、因此、我从.text 段获取 LSRAM、然后按如下方式使用:  

这似乎解决了这个问题,一切都正常。

通过进一步更改、链接器命令文件中的此配置同样适用于.ebss 使用 LSRAM 而.econst 使用 GSRAM 的情况:

但是、如果我将.ebss 切换至使用 GSRAM、而将.econst 切换至使用 LSRAM、那么它将不再起作用、并且我的全局变量全部为0。

所以我想知道你能不能帮我解释一下实际发生了什么、如果我只是做了一些明显的错误的事情?  

此致、

-Mike