Я сделал следующий фрагмент шестнадцатеричного файла 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 является правильным значением)?Если да, то как мне расположить последнюю строку в моем шестнадцатеричном файле, чтобы исправить это?