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



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

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

示例:

在使用Atmel提供的汇编HEX文件和avrdude工具对ATMEGA28P微处理器进行编程后,Mark对其微处理器上剩余的闪存量感到不健康。因此,他使用文本编辑器打开HEX文件并计算字节数:

:100000000c9434000c943e000c943e 000c943 e082:100010000c943e00c943e 00c943 e000c943 e 068:100020000c943e00c943e 00c943 e000c943 e 058:100030000c943e00c943e 00c943 e000c943 e 048:100040000C943e00c943e000c943e 00c943 e0038:100050000C943e00c943e000c943e 00c943 e0028:100060000c943e000c943e 011241fbecfefd8e04c:10007000 debfcdbf0e9440000c9453000c940000e2:100080008FEF84B987B985B1809585B988B180959E:1000900088B92FEF83ED90E3215080409040E1F745
:0a000a00000c00000f0cff894fcf7d

:0000000 1ff

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

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

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

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

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

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

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

最新更新