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/MSP430F5419A:堆.sysmem 段的使用

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/805065/ccs-msp430f5419a-heap-sysmem-segment-usage

器件型号:MSP430F5419A

工具/软件: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 段的内容?

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我将于明天把这一信息发送给我们的一位专家、他们可以提供更好的答案。 请记住、.sysmem 通常用作动态内存分配区域。 即,它在运行时被使用,调用 malloc()…… 因此、通过查看生成的链接器映射文件、您不会获得太多信息、因为它们不知道应用程序将使用什么。

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

    John、感谢您的回应和您计划的行动。 只是让您知道 malloc()没有在任何地方显式使用。

    唯一的运行时堆分配是由 FreeRTOS 在创建任务时进行的。

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

    [报价用户="Extraduce"]如何确定使用.sysmem 段的内容?

    sysmem 输出段仅用于动态内存分配。  它是由 malloc 和相关函数管理的存储器。  请在 MSP430编译器手册中搜索 标题 为"指定在存储器中分配段的位置"的子章节。   

    默认情况下、链接器不会创建.sysmem 段。  如果代码未调用任何 malloc 函数、则必须调用 FreeRTOS 或其他某些组件。

    谢谢、此致、

    乔治

x 出现错误。请重试或与管理员联系。