【问题标题】:Fixing checksum issues on intel HEX files修复 intel HEX 文件的校验和问题
【发布时间】:2019-03-04 19:24:33
【问题描述】:

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

:1000F5007002501F500CED2562FDEE3561FEEF35A7
:1001050060FFE56233F562E56133F561E56033F57E

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

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

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    您有多种选择,包括:

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

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

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

    • 使用其他模拟器

    【讨论】:

    • 我现在选择了不同的模拟器。 uCsim
    猜你喜欢
    • 2020-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多