преобразование контрольных сумм srec

Предположим, у меня есть двоичный файл, содержащий:

      uint32_t data[] = {
  0x00000000, 0x11111111, 0x22222222, 0x33333333, 0x44444444,
  0x55555555, 0x66666666, 0x77777777, 0x88888888, 0x99999999};

Компоновщик IAR генерирует контрольную сумму, которую srec_cat может воспроизвести следующим образом:

      srec_cat data.srec -crop 0x00 0x28 -Bit_Reverse -CRC32BE 0x28 -Bit_Reverse -XOR 0xff -crop 0x28 0x2c -o - -hex-dump

Учитывая те же данные, ускоритель CRC32 (стиль IEEE-802.3) на моем целевом оборудовании генерирует, который srec_cat может реплицировать следующим образом:

      srec_cat data.srec -crop 0x00 0x28 -CRC32BE 0x28 -crop 0x28 0x2c -o - -hex-dump

Я не могу изменить то, что сгенерировал компоновщик IAR, а также не могу изменить алгоритм, который использует аппаратный ускоритель. Учитывая это, есть ли способ преобразовать контрольную сумму в стиле IAR ( 55 1D 81 96) постфактум в контрольную сумму в стиле IEEE-803.2 ( F8 EE 40 0B)?

Я смотрел на это и не вижу ничего очевидного. (При необходимости я могу использовать srec_cat для замены контрольной суммы в стиле IAR на контрольную сумму в стиле IEEE-802.3 в качестве шага после сборки ...)

1 ответ

Решение

Нет, нет никакого способа преобразовать один из этих CRC, чтобы получить другой. Вы должны вычислить желаемый CRC для сообщения.

Для справки, первый CRC - это CRC-32 / ISO-HDLC. Второй - CRC-32 / MPEG-2.

Другие вопросы по тегам