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.

[参考译文] CCS/LAUNCHXL-CC1352P:启用日志记录时出现 MEM 分配错误:#10099-D:程序将无法放入可用内存中。 段".bss"大小为0x3b95时、运行定位失败

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/847984/ccs-launchxl-cc1352p-mem-allocation-error-when-logging-enabled-10099-d-program-will-not-fit-into-available-memory-run-placement-with-alignment-fails-for-section-bss-size-0x3b95

器件型号:LAUNCHXL-CC1352P

工具/软件:Code Composer Studio

当我尝试为我的 CCS 工程启用日志记录时、遇到内存分配错误。 我能够在不进行日志记录的情况下构建项目、但当我更改 tirtos_builds_CC1352P1_LAUNCHXL_release_ccs 中 release.cfg 文件中的以下行时、我会收到一个内存分配错误。

release.cfg:  

/*========================= ROM 配置======================== //

*

*要在闪存中使用 BIOS,请注释掉下面的代码块。

//

/var ROM = xdc.useModule('ti.sysbios.rom.ROM');

//rom.romName = ROM.CC13X2;



BIOS.logsEnabled = true;



//日志记录配置*/

var 日志设置= xdc.useModule('ti.uia.sysbios.LoggingSetup');

//*启用 CPU 负载记录*/

LoggingSetup.loadLogging = true;

//

*启用任务、Swi 和 Hwi 负载记录。 这使空闲任务

*的用法更有意义。 否则、Hwi 和 Swi 负载被计入

*每个任务的使用情况。

*/

LoggingSetup.loadTaskLogging = true;

LoggingSetup.loadSwiLogging = true;

LoggingSetup.loadHwiLogging = true; 

以前、我对 release.cfg 文件进行了这些更改、从而能够在另一个项目中启用 CPU 日志记录。 现在,当我尝试构建这个特定项目时,我得到:  

"../CC1352P1_LAUNCHXL_TIRTOS.cmd",第107行:错误#10099-D:程序不能装入可用内存。 对齐方式运行".bss"大小为0x3b95的定位失败。 可用存储器范围:
SRAM 大小:0x14000 未使用:0x4ea8 最大空洞:0x34e0
错误#10010:链接期间遇到错误;"../../bin/ia_aac_lc_enc_cm4_eval_rel_pkg.out 未生成

>>编译失败
makefile:178:目标'./../bin/ia_aac_lc_enc_cm4_eval_rel_pkg.out 的配方失败
gmake[1]:***[./../bin/ia_aac_lc_enc_cm4_eval_rel_pkg.out ]错误1
gmake:***[All]错误2
makefile:171:目标'All'的配方失败 

我尝试进入 CC1352P1_LAUNCHXL_TIRTOS.cmd 文件、并更改 RAM 的大小。 程序已构建、但当我在调试模式下运行它时、它从未在 main 停止、这样我才能继续在代码中运行、因此我认为它必须是运行时错误。  

分配漏洞是否不足以专门用于.bss 段? 在错误中、虽然 RAM 中未使用的空间是0x4ea8、'max hole sizes'是0x34e0、但.bss 段的大小是0x3b95。 是否有办法重新排列空间以使其适合?

我尝试进入 Project Properties -> ARM Linker -> Basic Options 并更改堆和堆栈大小、但这没有帮助。

我还尝试提高优化级别、该级别为0。 最多3个、我有相同的错误、在4个时、我有 一个#10192链接时优化错误。  

下面是我的内存分配窗口:  

请告知我应采取哪些进一步步骤来解决此问题。

此致、

Samyukta

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

    您好、Samyukta、

    [引用 user="Samyukta Ramnath1"]我尝试进入 CC1352P1_LAUNCHXL_TIRTOS.cmd 文件并更改 RAM 的大小。

    您的更改到底是什么? 堆大小还是 RAM 大小? 您不能只增加 RAM 大小、因为器件只有0x14000字节的 RAM。

    日志记录会占用额外的 RAM、因为默认情况下、日志记录会被放入内部缓冲区中。 您可以使用.cfg 中内部缓冲区的大小。 例如、

    LoggingSetup.loadLoggerSize = 256;
    LoggingSetup.mainLoggerSize = 512;
    LoggingSetup.sysbiosLoggerSize = 1024; 

    我会注释.cfg 中的 LoggingSetup 行并构建应用程序。 然后、您可以看到有多少可用 RAM。 然后取消对 LoggingSetup 行的注释,并根据需要调整大小。

    CPU 加载记录进入缓冲区,其大小由 loadLoggerSize 决定。 "main"记录器缓冲区用于应用程序代码记录的记录。 每个记录为~28字节 (一些更小、一些更大)。

    Todd