【发布时间】:2016-10-11 16:26:06
【问题描述】:
我想输出当我“制作”为 PIC 编写的 C 项目时使用的闪存量,就像 Arduino 为它的草图所做的那样。
我发现 Arduino IDE 在 GitHub 上使用了 avr-size。是否有 PIC 的等价物?我注意到 GNU 的 binutils 中包含一个通用版本(这个词对吗?),称为 size。我可以使用that吗?
编辑:如果我在链接时将-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 段等。虽然一些闪存编程器工具只会看到应该编程的闪存,而不知道内容的作用。