工程师、您好、我最近使用28388D 进行数据处理、由于我在 CPU2中进行大量数据计算、我在 CPU2中耗尽了 RAMLSx、因此我使用了 RAMGS0~RAMGS4、并使用 MemCfg_setGSRAMControllerSel 函数在 CPU1中分配它们、如下所示:
我的 CMD 文件如下:
但是、在我烧录程序之后、我发现一些垃圾数据分配给数组中一些全局变量的初始值、如下所示、我的内存分配函数是否存在问题?
非常感谢!
期待您的回复!
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.
工程师、您好、我最近使用28388D 进行数据处理、由于我在 CPU2中进行大量数据计算、我在 CPU2中耗尽了 RAMLSx、因此我使用了 RAMGS0~RAMGS4、并使用 MemCfg_setGSRAMControllerSel 函数在 CPU1中分配它们、如下所示:
我的 CMD 文件如下:
但是、在我烧录程序之后、我发现一些垃圾数据分配给数组中一些全局变量的初始值、如下所示、我的内存分配函数是否存在问题?
非常感谢!
期待您的回复!
周先生、您好!
我使用过 F2838xD 并熟悉该器件(它与使用我们现有的任何其他较新器件没有太大的区别)。
此外,您能否与我分享 MemCfg_setGSRAMControllerSel 函数的几个用例?
此函数用于配置哪个 CPU 可以访问参数中使用的 GSRAM。 您应该在代码的开头设置此值、而不是在一个 CPU 和另一个 CPU 之间来回切换(如果您需要在两个 CPU 之间进行数据通信之类的操作、则应使用 IPC)。
大家好、工程师、我的 CPU1用于数据通信、CPU2用于数据处理、我使用 IPC 完成了从 CPU1发送数据到 CPU2的任务、我的 MemCfg_setGSRAMControllerSel 函数运行良好! 昨天、一位工程师告诉我、为了在闪存中加载代码、需要将闪存 API 加载到 RAM 中、因此更改了一些值、为 CPU2分配一些 GSxRAM。 垃圾值实际上是加载到这些 RAM 中的闪存 API 代码。 我该如何使用 SimpleLink SDK
非常感谢!
期待您的回复!
昨天一位工程师告诉我,要在闪存中加载代码,需要将闪存 API 加载到 RAM 中
答对了、闪存 API 只能从 RAM 运行。
垃圾值实际上是加载到这些 RAM 中的闪存 API 代码。
工程师需要查看链接器命令文件、并将全局变量分配给不太可能被覆盖的 RAM 之一、从而使变量保留其值。 要执行此操作、您可以查看分配给.bss 段的存储器(该段在 链接器命令 文件页面包含全局变量)。 或者、工程师也可以使用 pragma 语句将全局变量定位到特定的内存位置: #pragma DATA_SECTION (var_name、"ramgs#")。
我将其从 RAMLS3修改为 RAMGS4,但它没有做到这一点!
您能否确认一下这样做的含义、这些变量是否未更改其地址、或者地址的更改是否仍会导致其被覆盖? 我不知道闪存 API 是如何加载到 RAM 的、但如果您知道它加载到了哪个 RAM、可以尝试选择非常远的存储器单元(如果未使用 RAMGS15、则会如此)。
随后、我使用了#pragma DATA_SECTION (qnb、"RAMGS4")(作为 qnb 的示例) qnb 中的值已恢复正常、但在编辑以下警报后发生、该警报是否会对程序运行产生任何影响?
[/报价]它应该不会影响您的程序、但建议解决此错误。 如果您使用的 CCS 编译器版本超过4.4 (即22.6.0)、那么您可以参阅 此页面、 了解有关警告的详细信息:
周先生、您好!
上面的链接应该可以正常工作、警告文本已完全包含在上方;对于该屏幕截图中的链接、我需要在单个屏幕截图中包含太多文本。 我会将两个 URL 放在下方、如果您访问时遇到问题、请告诉我:
https://software-dl.ti.com/ccs/esd/documents/sdto_ccs_build-errors.html
https://software-dl.ti.com/ccs/esd/documents/sdto_cgt_Linker-Command-File-Primer.html
圣诞节快乐!