Исправление проблем с контрольной суммой в файлах Intel HEX - PullRequest
0 голосов
/ 04 марта 2019

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

1 Ответ

0 голосов
/ 05 марта 2019

AFAICT Ваши контрольные суммы верны.Основываясь на этой и некоторых других записях, которые я передал ей, симулятор, похоже, имеет ошибку «один за другим» на некоторых входах.

У вас есть несколько вариантов, включая:

  • отредактируйте файл t8051m.ini симулятора и установите IgnoreChecksum на 1

  • настроить симулятор, отредактировав ваши шестнадцатеричные записи, чтобы сохранить контрольные суммы, которые он ожидает, вместоправильные контрольные суммы

  • разберите файл .exe симулятора, найдите ошибку и исправьте ее.(Прежде чем перейти к этим подробностям, вы можете попробовать сообщить о проблеме автору. Это может быть известная проблема с исправлением, которое автор просто не удосужился опубликовать на своем веб-сайте.)

  • используйте другой симулятор

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...