【问题标题】:Flash size of a bare metal ARM program裸机 ARM 程序的闪存大小
【发布时间】:2014-02-17 14:30:02
【问题描述】:

如何知道裸机臂代码的闪存大小。如果我有精灵,是否有可能知道存储程序需要多少闪存?例如,如果我有应该进入基于 ARM 的 MCU 的 elf 文件,我如何确定代码将消耗多少 MCU 的闪存?

【问题讨论】:

  • @dwelch 他说他已经有了 elf 文件。
  • 然后只需使用 gnu 工具...readelf、objdump 等。
  • size 是这个标准。唯一需要注意的是,如果您在 ELF 格式中有很大的漏洞,它们可能会使二进制闪存映像看起来很大。

标签: gcc arm


【解决方案1】:

ELF 标头应包含您需要的信息。您可以使用objdump(带有-h)或readelf 工具来阅读这些内容。这些工具应该包含在您的工具链中。

基本上,您希望将所有可加载部分的大小相加,例如.text.data。例如,在 objdump 的输出中查找 LOAD 标志。

您可以忽略不可加载的部分,例如 .comment.debug.bss· 例如,其中一些是为了调试器的好处,而一些只是将要使用的内存的占位符由程序在运行时执行,但不包含预先存在的数据。

当我说“加起来”时,这并不完全正确;链接器已经将每个部分分配给闪存中的特定地址(我假设您的程序将直接从 ROM 运行),因此您需要找到最后一个部分的结束地址以确定还剩下多少。

【讨论】:

  • 或者只是您 toolprefix-为此目的而制作的大小,如果可用的话。
  • @artlessnoise 谢谢人!这正是我想要的! :)
  • 我发现size 的输出不令人满意;隐藏的假设太多。正如我上面所说,您真正要查找的是闪存中最后使用的地址。
猜你喜欢
  • 2012-02-15
  • 2016-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-04
相关资源
最近更新 更多