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.

[参考译文] MSP430G2855:确定堆栈和堆的大小

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1182956/msp430g2855-determining-size-of-stack-and-heap

器件型号:MSP430G2855

我的 RAM 不足、想找到堆栈和堆使用的实际 RAM 量。  用模式填充堆栈、运行程序并查看存储器似乎是最简单的。  我已经看过_system_pre_init()的文献,但不知道如何使用它-我是否在 main.cc 文件的开头编写该函数?  将其放入一个单独的文件中、并以某种方式通知链接器加载它、而不是 pre_init.c 中的默认文件?

我不再将控制台用于 I/O、而是使用 UART、因此不需要 CIO、但我正在使用 sprintf()等函数、但不知道它或标准库中的其他任何内容是否使用堆。

请提供任何帮助。

谢谢 Doug Broadwell

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

    你(们)好

    请查看 MSP430优化 C/C++编译器 v21.6.0.LTS 用户指南(修订版 Y)

    本文档有助于介绍栈、堆栈点和_system_pre_init()

    谢谢!

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

    是的、我恐怕已经阅读了很多内容、但很抱歉、我仍然无法了解详细信息、可能需要深入了解链接器?

    谢谢

    道格

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

    我的一个主要问题是: 在哪里放置"int _system_pre_init (void){}"代码;我是否只是将其放在包含"int main (void)"的文件中的某个位置??  如果我输入"int _system_pre-init (void){return (1);};" 、则会得到"../main.cc"、第194行:错误#66:预期为";"。

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

    简短的答案:是的、只需将其填入 main.c 的某个位置。

    --

    > int _system_pre-init (void){return (1);};

    这看起来像是一个排印错误("-"而不是"_")。 或者、它可能会反对尾部的";"? 尝试:

    > int _system_pre_init (void){return (1);}

    --

    我没有介入、因为我没有这样做(在 MSP430上)。 如果当前的计划不起作用、您可能会从链接器.cmd 文件的".stack"和".sysmem"部分中的"、fill="选项中获得一些内容。 它将使您的可执行文件更大、但您可以在得到答案后将其删除。

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

    一个人当我在每个人面前犯愚蠢的错误时,我讨厌它!

    谢谢 Bruce。