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.
工具/软件:Code Composer Studio
我有一个使用大型模型库的应用:rts430x_lc_ld_eabi.lib、它在 使用 FreeRTOS 的 MSP430F5419A 上运行
我正在尝试优化内存使用、并希望准确了解内存的消耗位置。
在 CCS 链接器基本设置中、堆大小最初被设定为13000。 但是、我可以将该值降低到11000、而不会产生任何不良影响。 低于该值时、会发生此故障。
正在生成.map 和 link_info.xml 文件、但是这两个文件都没有提供足够的信息来了解减少堆大小 导致内存耗尽低于 11000的原因
我看到.sysmem 段正在从下面的.map 文件中生成的以下段设置为11000 (0x2af0)。 我如何才能了解使用此存储器区域的内容。
.sysmem 0 00001c00 00002af8 未初始化
00001c00 00000008 rts430x_lc_ld_eabi.lib:memory.c.obj (.sysmem)
00001c08 00002af0 --孔--
根据上面的信息、.sysmem 段从0x1c00开始、到 0x46F8结束(将0x2af0添加到 0x1c00)
映射文件中的其他行在 attributes/input sections 列中引用 rts430x_lc_ld_eabi.lib。 但是、这些行的原始地址在 0x1c00 - 0x46F8范围之外
如何确定使用.sysmem 段的内容?
John、感谢您的回应和您计划的行动。 只是让您知道 malloc()没有在任何地方显式使用。
唯一的运行时堆分配是由 FreeRTOS 在创建任务时进行的。
[报价用户="Extraduce"]如何确定使用.sysmem 段的内容?
sysmem 输出段仅用于动态内存分配。 它是由 malloc 和相关函数管理的存储器。 请在 MSP430编译器手册中搜索 标题 为"指定在存储器中分配段的位置"的子章节。
默认情况下、链接器不会创建.sysmem 段。 如果代码未调用任何 malloc 函数、则必须调用 FreeRTOS 或其他某些组件。
谢谢、此致、
乔治