.HEX 文件中占用的闪存量与字节数的关系

Amount of occupied flash memory in relation to number of bytes in a .HEX file

是否可以根据.HEX文件的内容和大小计算出程序在芯片上占用的闪存大小?如果没有,还有另一种方法吗?

声称拥有32kB闪存的芯片是否有恰好32kB的可用闪存?

示例:

Mark 使用组装的 .HEX 文件和 Atmel 提供的 avrdude 工具对其进行编程后,他对 ATMEGA328P 微处理器上剩余的闪存量产生了不健康的担忧。因此,他使用文本编辑器打开 .HEX 文件并计算字节数:

:100000000C9434000C943E000C943E000C943E0082 :100010000C943E000C943E000C943E000C943E0068 :100020000C943E000C943E000C943E000C943E0058 :100030000C943E000C943E000C943E000C943E0048 :100040000C943E000C943E000C943E000C943E0038 :100050000C943E000C943E000C943E000C943E0028 :100060000C943E000C943E0011241FBECFEFD8E04C :10007000DEBFCDBF0E9440000C9453000C940000E2 :100080008FEF84B987B985B1809585B988B180959E :1000900088B92FEF83ED90E3215080409040E1F745
:0A00A00000C00000F0CFF894FFCF7D

:00000001FF

他的结果总共是115个字节,或者包括“:”在内是118个字节。然而,Mark 意识到这些字节中有一定数量是校验和和标志。当 Mark 运行 avrdude 以便用他的代码刷新硬件时,该工具告诉他该文件包含 170 个字节。这让他感到困惑和害怕,因为芯片上的可用闪存总量仅是该工具告诉他的文件字节数的 188 倍。他泪流满面。

为了避免 Mark 的情绪崩溃,最好能够估计存储在 .HEX 文件中的程序在闪存中占用的字节数。

P.S。 Mark 希望将来使用更便宜的低端系统,并且需要知道他的程序在这种系统上占用的内存量。

1)一般不会。但在 intel hex 格式和 motorola srecord 的情况下,文件大小的很大一部分与 flash/rom 内容直接相关。所以你不能精确到字节计算,但你可以接近。

2) 这种文件格式很容易解析,从头开始编写解析器只需 15 分钟或更短的时间,可能比您在网上研究然后写这个问题所花的时间更少。解析一下。

3) 如果他们宣传一定数量的闪光灯,那就是它有多少闪光灯。有时他们会玩数字游戏,简短的功能列表中的一个数量包括引导加载程序区域或其他区域,但现在通常不会,因为这最终会咬住他们。

4) 有很多工具可以告诉你你的程序消耗了多少,在流行的工具链中,只需阅读手册、搜索网络等。或者花 45 分钟找别人的精灵或srec 或 ihex 解析器并试图弄清楚如何使用它,或者花 15 分钟从头开始为这些工具中的任何一个编写自己的工具,或者花 2-3 分钟来学习如何使用现有的工具链工具。