Alex_2015 0 16 апреля, 2020 Опубликовано 16 апреля, 2020 · Жалоба День добрый. Если кто сталкивался, подскажите. Посредством ИАР пытаюсь генерить контрольную сумму прошивки. Генерит, но она не совпадает с той, которую считает аппаратный модуль процессора. Несколько дней искал причину. В конечном счёте не работает перестановка байт при расчёте 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. Что и где её может запретить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
arhiv6 14 16 апреля, 2020 Опубликовано 16 апреля, 2020 · Жалоба Для начала попробуйте подсчитать на МК CRC не аппаратно, а программно. Т.к. аппаратный модуль может считать немного подругому http://we.easyelectronics.ru/STM32/crc32-na-stm32-kak-na-kompe-ili-na-kompe-kak-na-stm32.html Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex_2015 0 16 апреля, 2020 Опубликовано 16 апреля, 2020 · Жалоба Эту статью я читал. Я пробовал рассчитать контрольную сумму для одного слова (4 байта). Результат оказался верным, но побайтно отзеркаленным. Тут и получается, что не взирая на установку флага r результат остаётся неизменным. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Darth Vader 0 16 апреля, 2020 Опубликовано 16 апреля, 2020 · Жалоба Еще статья. Вывод - аппаратный модуль в STM32 и распространенные Windows-программы считают CRC-32 по-разному. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 35 16 апреля, 2020 Опубликовано 16 апреля, 2020 · Жалоба А написать правильную программу религия не позволяет ? Или нет полчаса времени ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 16 апреля, 2020 Опубликовано 16 апреля, 2020 · Жалоба 10 часов назад, Alex_2015 сказал: Если кто сталкивался, подскажите. Посредством ИАР пытаюсь генерить контрольную сумму прошивки. Генерит, но она не совпадает с той, которую считает аппаратный модуль процессора. Несколько дней искал причину. В конечном счёте не работает перестановка байт при расчёте CRC. Вот так: всё работает и совпадает с аппаратным. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex_2015 0 17 апреля, 2020 Опубликовано 17 апреля, 2020 · Жалоба Всем спасибо, кто откликнулся. Проблему я решил. Надо было изменить опции для команды 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться