Перейти к содержанию
    

crc32 stm32

День добрый.

Если кто сталкивался, подскажите. Посредством ИАР пытаюсь генерить контрольную сумму прошивки. Генерит, но она не совпадает с той, которую считает аппаратный модуль процессора. Несколько дней искал причину. В конечном счёте не работает перестановка байт при расчёте CRC.

Использую в бат файле команду

ielftool.exe --fill 0xFF;0x08004000-u8_checksum_end+3 --checksum u32_ielftool_checksum:4,crc=0x04c11db7:ir,0xffffffff;0x08004000-u8_checksum_end+3 --verbose %OUT% %OUT%

Так вот, не работает опция r, которая указана после алгоритма ,crc=0x04c11db7. Что и где её может запретить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для начала попробуйте подсчитать на МК CRC не аппаратно, а программно. Т.к. аппаратный модуль может считать немного подругому http://we.easyelectronics.ru/STM32/crc32-na-stm32-kak-na-kompe-ili-na-kompe-kak-na-stm32.html

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Эту статью я читал.

Я пробовал рассчитать контрольную сумму для одного слова (4 байта). Результат оказался верным, но побайтно отзеркаленным.

Тут и получается, что не взирая на установку флага r результат остаётся неизменным.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Еще статья. Вывод - аппаратный модуль в STM32 и распространенные Windows-программы считают CRC-32 по-разному.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А написать правильную программу религия не позволяет ?

Или нет полчаса времени ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 часов назад, Alex_2015 сказал:

Если кто сталкивался, подскажите. Посредством ИАР пытаюсь генерить контрольную сумму прошивки. Генерит, но она не совпадает с той, которую считает аппаратный модуль процессора. Несколько дней искал причину. В конечном счёте не работает перестановка байт при расчёте CRC.

Вот так:

1403792382_IARCRCforSTM.thumb.png.b78c6623c7d4d634956cdfff17ecf087.png

всё работает и совпадает с аппаратным.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всем спасибо, кто откликнулся. Проблему я решил. Надо было изменить опции для команды checksum, а именно

--checksum u32_ielftool_checksum:4,crc=0x04c11db7:Li,0xffffffff;0x08004000-u8_checksum_end+3

Опции Li вместо ir. Тогда расчёт через встроенный аппаратный модуль проца возвращает ноль в качестве результата. Иар версии 7.80.

Возможно, в более ранних версиях было по другому

https://www.iar.com/support/tech-notes/general/calculate-crc32-as-in-stm32-hardware-v.5.50-and-later/

https://www.cnblogs.com/shangdawei/p/4603924.html

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...