与.HEX文件

时间:2016-05-11 09:21:37

标签: memory hex low-level atmel flash-memory

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

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

示例:

Mark使用Atmel提供的.HEX文件和avrdude工具对其进行编程后,对ATMEGA328P微处理器上剩余的闪存量表示不满意。因此,他使用文本编辑器打开.HEX文件并计算字节:

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

:00000001FF

他的结果是总共115个字节或118个包括":"。然而,马克意识到这些字节中的一定数量是校验和和标志。当Mark运行avrdude以使用他的代码刷新硬件时,该工具告诉他该文件包含170个字节。由于芯片上的可用闪存总量仅比工具告诉他的文件中的字节数多188倍,这使他感到困惑和恐惧。他泪流满面。

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

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

1 个答案:

答案 0 :(得分:1)

1)一般没有。但在intel十六进制格式和motorola srecord的情况下,文件大小的很大百分比与flash / rom内容直接相关。所以你不能准确地计算字节数,但你可以接近。

2)这种文件格式解析起来非常简单,从头开始花15分钟或更短的时间来编写解析器,可能更少花时间在网上研究然后写这个问题。只需解析它。

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

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