我有相当大的ld
链接脚本的嵌入式平台,这是低内存和ROM。在重新定位所有代码之后,我想知道还有多少内存可用。实际上,我想打印位置计数器.
的值到stdout。我该怎么做呢?有没有像print(.)
这样的神奇命令?
发布于 2015-07-09 15:01:51
读手册。没有这样的命令--不可能。
链接器“脚本”实际上更像是配置/描述符文件。它们不像脚本那样被“执行”。也没有一个.
(如何可以用于不同的内存区域)。
但是,您可以输出一个可能正是您所需要的映射。尝试选项-M
。如果正确设置了链接器脚本中的内存区域,链接器将警告某些内存区域溢出,这实际上是自动生成所需的。
更新:,如果您想坚持查看每个构建上的区段大小,可以grep/筛选映射文件。
发布于 2015-09-26 22:15:54
我在我的项目中有一个链接步骤,可以转储东西的大小,这样我就可以看到我离得有多近。只需添加如下内容:
arm-none-eabi-size binary_image.axf
这将使您的输出如下:
text data bss dec hex filename
204808 704 23188 228700 37d5c Foo.axf
在我的大脑皮层-m3芯片上,这将是text+data = flash使用量,data+bss = ram使用量。十二/六是无用的价值。
正如Olaf所说,使用一个映射文件来进行更具体的内存消耗。我在链接步骤中添加了以下内容:
-Xlinker -Map=Foo.map
发布于 2019-05-21 11:09:48
另一个解决方案可能是将以下命令添加到链接器中:
-Xlinker --print-memory-usage
这给了我以下输出:
Memory region Used Size Region Size %age Used m_interrupts: 576 B 576 B 100.00% m_text: 22988 B 32192 B 71.41% m_data: 26552 B 32 KB 81.03%
https://stackoverflow.com/questions/31320276
复制相似问题