修复Intel HEX文件上的校验和问题

时间:2019-03-04 19:24:33

标签: debugging checksum calculation false-positive hex-file

我制作了以下intel十六进制文件片段,以使用几个8051处理器模拟器进行测试:

:1000F5007002501F500CED2562FDEE3561FEEF35A7
:1001050060FFE56233F562E56133F561E56033F57E

我使用的一个位于:http://www.jroweb.de/8051/

根据我的研究,据我所知,intel十六进制文件的校验和是通过对所有十六进制数字对(最后一个除外)求和,然后将结果与255进行“与”运算得到8位值,然后求反值,加1,并做256模。

我基本上是从这些论坛的受访者那里学数学的:

https://social.msdn.microsoft.com/Forums/en-US/a1736ae8-2db6-4657-a98c-e3e447ebfda3/calculate-intel-hex-file-format-checksum

当我执行计算时,以上代码段中每行的校验和值都是正确的,但是在上面提到的8051处理器模拟器程序中,它在最后一行显示了校验和错误。它认为该值应该是7F而不是7E。

最后一个十六进制文件行中是否存在误报(这会使某些软件认为7F是正确的值)?如果是这样,我应该如何在hex文件中排列最后一行以对其进行修复?

1 个答案:

答案 0 :(得分:0)

AFAICT您的校验和正确。根据此记录以及我提供给它的其他一些记录,模拟器似乎在某些输入上存在一个错误的错误。

您有几种选择,包括:

  • 编辑模拟器的t8051m.ini文件,并将IgnoreChecksum设置为1

  • 通过编辑十六进制记录来携带模拟器的校验和,以此来嘲笑模拟器 期望而不是正确的校验和

  • 反汇编模拟器的.exe文件,找到错误并修复。 (在您之前 竭尽全力,您可以尝试将问题报告给作者。它 修复程序可能是一个已知的问题,而作者却从未解决过 在他的网站上发布。)

  • 使用其他模拟器