преобразование контрольных сумм 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.