【问题标题】:Is there an avr-size equivalent for PICs?PIC 是否有等效的 avr 尺寸?
【发布时间】:2016-10-11 16:26:06
【问题描述】:

我想输出当我“制作”为 PIC 编写的 C 项目时使用的闪存量,就像 Arduino 为它的草图所做的那样。

我发现 Arduino IDE 在 GitHub 上使用了 avr-size。是否有 PIC 的等价物?我注意到 GNU 的 binutils 中包含一个通用版本(这个词对吗?),称为 size。我可以使用that吗?

我正在使用sdccgputils 构建我的项目。

编辑:如果我在链接时将-m 传递给gplink,我会得到一个地图文件。此映射文件中有一个部分称为“程序内存使用”。在本节的末尾,有使用的地址数。

Program Memory Usage
    Start         End
---------   ---------
0x005558    0x0055db
0x0063e0    0x0063f5
0x00663c    0x006643
...
0x006280    0x0062a7
0x00662e    0x00663b
26229 program addresses used

当在输出 hex 文件上运行时,这与 GNU 的大小输出相匹配。

$ size out.hex
   text    data     bss     dec     hex filename
      0   26229       0   26229    6675 out.hex
$

这是否意味着我可以只使用 GNU 大小?这似乎与我在程序员软件中看到的不符。对于同一个文件,使用的最高地址似乎是 0x6670,即第 26,224 个字节。

【问题讨论】:

  • 程序大小和闪存大小不是一回事。您的 .map 文件将单独列出程序内存、.rodata 段等。虽然一些闪存编程器工具只会看到应该编程的闪存,而不知道内容的作用。

标签: embedded pic


【解决方案1】:

size --format=berkeley a.hex 提供了更详细的摘要。伯克利格式显示编译后的英特尔 .hex 文件中每个部分的大小,并在最后给出总计。

这与使用的最高地址不同,因为不同的部分进入不同的内存区域。

编译成 ELF 格式也会提供有关 RAM 使用情况的信息 (text+bss),但并非所有编译器都支持该选项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-26
    • 1970-01-01
    • 2011-09-17
    • 2012-11-12
    • 1970-01-01
    • 1970-01-01
    • 2016-03-19
    • 1970-01-01
    相关资源
    最近更新 更多