Alex_Golubev 0 24 января, 2022 Опубликовано 24 января, 2022 · Жалоба 22.05.2015 в 12:56, esaulenka сказал: Решал аналогичную задачу. пытаюсь посчитать контрольную сумму для прошивки .hex.Для этого выполняю следующий скрипт для Srecord: # srec_cat command file: srec_crc_dump_to_file.txt #============================= -disable-sequence-warning #Input file PLK.hex -Intel #Fill hole with 0xFF -fill 0xFF 0x8000000 0x8040000 #CRC Algorithm at given address -STM32 0x8040000 #-crop 0x08040000 0x08040004 -Output_Block_Size=16 #Produce output -o PLK_SRECORD.hex -Intel После выполнения скрипта получаю предупреждение: srec_cat: PLK.hex: 47492: warning: The data presented for STM32 calculation has at least one hole in it. This is bad. It means that the in-memory calculation performed by your embedded system will be different than the calculation performed here. You are strongly advised to use the "--fill 0xFF --over <inoput>" filter *before* the STM32 filter to ensure both calculations are using the same byte values. See srec_info(1) for how to see the holes. может кто подскажет в чем дело? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 140 24 января, 2022 Опубликовано 24 января, 2022 · Жалоба 30 минут назад, Alex_Golubev сказал: может кто подскажет в чем дело? Может они хотят --fill 0xFF --over <что-то>, а вы даете --fill без --over? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex_Golubev 0 25 января, 2022 Опубликовано 25 января, 2022 · Жалоба 12 часов назад, Сергей Борщ сказал: а вы даете --fill без --over Попробовал: #Input file PLK.hex -Intel #Fill hole with 0xFF #-fill 0xFF 0x08000000 0x08040000 fill 0xFF -over PLK.hex -Intel #CRC Algorithm at given address -STM32 0x08040000 #-crop 0x08040000 0x08040004 #Produce output -Output_Block_Size=16 -o PLK_SRECORD.hex -Intel Мне выдает сообщение Srecord Скрытый текст srec_cat: fill: -motorola address multiple 255 not understood (do you need parentheses to group the expressions differently?) Я же указал "PLK.hex -Intel" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 140 25 января, 2022 Опубликовано 25 января, 2022 · Жалоба 3 часа назад, Alex_Golubev сказал: Мне выдает сообщение Srecord У вас одно тире перед over. Хз как оно влияет, для меня всегда его синтаксис был загадкой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex_Golubev 0 25 января, 2022 Опубликовано 25 января, 2022 (изменено) · Жалоба 24 минуты назад, Сергей Борщ сказал: У вас одно тире перед over. Да, нужно было тире поставить перед -fill ). Выходной файл получил, но он получился размером 2 Гб. Открыть не смог. Как понимаю в .hex прошивки находится и инициализация ОЗУ , и программа управления. Наверное где то в этом ошибка у меня при расчете CRC. У контролера stm32h7 память раскидана, а нужно считать CRC только области программы. Изменено 25 января, 2022 пользователем Alex_Golubev Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 59 25 января, 2022 Опубликовано 25 января, 2022 · Жалоба 33 minutes ago, Alex_Golubev said: Открыть не смог Напишите сами какой надо алгоритм. Пара часов и будет счастье. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex_Golubev 0 25 января, 2022 Опубликовано 25 января, 2022 · Жалоба Как-то же люди считают CRC прошивки. НЕ все же пишут свои программы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 183 25 января, 2022 Опубликовано 25 января, 2022 · Жалоба Ну мне, например, гораздо проще написать свою утилиту за 10-20 минут, чем неделю (или больше уже?) разбираться с чужим. Тем более кода там - с гулькин хвост, стандартными fopen()/fwrite()/fclose() из любого Си-шного учебника утилиту можно научить делать и другие, более изощренные способы постобработки файла прошивки. ИМХО. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 239 25 января, 2022 Опубликовано 25 января, 2022 · Жалоба 2 часа назад, Alex_Golubev сказал: Как-то же люди считают CRC прошивки. НЕ все же пишут свои программы. IAR нормально считает. Ничё дописывать не надо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex_Golubev 0 25 января, 2022 Опубликовано 25 января, 2022 · Жалоба вот если сделать вот так: Скрытый текст # srec_cat command file: srec_crc_dump_to_file.txt #=============================================== #-disable-sequence-warning #Input file PLK.hex -Intel #Fill hole with 0xFF -crop 0x08000000 0x08040000 -fill 0xFF 0x8000000 0x8040000 #CRC Algorithm at given address -STM32 0x8040000 -Output_Block_Size=16 #Produce output -o PLK_SRECORD.hex -Intel того предупреждения нет. И как понимаю дальше идет инициализация ОЗУ (посмотрел по адресам) для отладчика. Для прошивки МК она не нужна. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Darth Vader 0 26 января, 2022 Опубликовано 26 января, 2022 · Жалоба 24.01.2022 в 16:46, Alex_Golubev сказал: пытаюсь посчитать контрольную сумму для прошивки .hex Т.е. у вас есть готовый файл .hex и вам надо посчитать CRC32? Установите HashTab и в свойствах файлов вас будет вкладка с разными хэшами. Или вам надо другое - посчитать CRC32 двоичного образа памяти? Тогда сгенерируйте из .hex файл .bin и снова HashTab. Если надо посчитать в процессе отладки - напишите функцию подсчета CRC32 и посмотрите, что она возвращает отладчиком. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MDD 0 26 января, 2022 Опубликовано 26 января, 2022 · Жалоба srec_cat.exe Boot.hex -intel -crop 0x8000000 0x8003FFC -fill 0xff 0x8000000 0x8003FFC -STM32_Little_Endian 0x8003FFC -o Boot_crc.hex -intel Вот мой рабочий вариант командной строки. Считает по тому же алгоритму, что и внутренний вычислитель CRC в STM32. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex_Golubev 0 26 января, 2022 Опубликовано 26 января, 2022 · Жалоба MDD у вас тоже самое. Что и у меня ). Да он рабочей. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MDD 0 26 января, 2022 Опубликовано 26 января, 2022 · Жалоба 3 hours ago, Alex_Golubev said: MDD у вас тоже самое. Что и у меня ). Да он рабочей. В вашем варианте меня немного смущает, что Вы пытаетесь поместить CRC по адресу 0x8040000. В вашем контроллере там есть флешь? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex_Golubev 0 27 января, 2022 Опубликовано 27 января, 2022 · Жалоба Да у меня 2 МБайта флешь ). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться