0

我制作了以下 intel hex 文件片段来测试几个 8051 处理器模拟器:

:1000F5007002501F500CED2562FDEE3561FEEF35A7
:1001050060FFE56233F562E56133F561E56033F57E

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

根据我的研究,据我了解,英特尔十六进制文件的校验和是通过将所有十六进制数字对(最后一个除外)相加来计算的,然后将结果与 255 进行与运算以获得 8 位值,将值取反,加 1,然后做 mod 256。

我基本上遵循了这些论坛的受访者的数学:

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

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

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

4

1 回答 1

0

AFAICT 您的校验和是正确的。基于这个和我提供给它的一些其他记录,模拟器似乎在某些输入上有一个错误的错误。

您有多种选择,包括:

  • 编辑模拟器的 t8051m.ini 文件并设置IgnoreChecksum1

  • 通过编辑您的十六进制记录以携带它期望的校验和而不是正确的校验和来幽默模拟器

  • 反汇编模拟器的.exe文件,找到bug,修复。(在你做这些之前,你可以尝试向作者报告问题。这可能是一个已知问题,作者只是从未有时间在他的网站上发布。)

  • 使用其他模拟器

于 2019-03-05T03:30:10.873 回答