Как считать прошивку контроллера который не был залочен? До очень просто.
Подключаем плату через st-link и запускаем программу STM32CubeProgrammer или ST-LINK Utility.
Обе программы имеют вполне годный консольный help и документацию, в которой он, по сути, дублируется.
STM32CubeProgrammer. Сохраняет прошивку в bin, hex, srec
STM32_Programmer_CLI.exe -c port=SWD -r 0x08000000 0x20000 firmware.srec
В port выбирается используемый интерфейс, далее идет адрес старта прошивки (0x08000000), размер прошивки (0x20000) и название файла куда будет сохранена прошивка.
ST-LINK Utility. Сохраняет прошивку в файл.
st-link_cli.exe -c -Dump 0x08000000 0x20000 firmware
Ключ -c выполняет подключение, ключ -Dump переводит программу ST-LINK в режим чтения прошивки, далее идет адрес старта прошивки (0x08000000), размер прошивки (0x20000) и название файла куда будет сохранена прошивка.
Сравнить слитый файл с прошивкой на микроконтроллере можно через следующую команду в ST-LINK Utility. Выведет первый не совпавший адрес.
st-link_cli.exe -c -CmpFile firmware.srec 0x08000000
Конечно, удобнее сравнивать файл прошивки с дампом в GUI. Он выводит два окошка с файлами где красным подсвечены не совпавшие секции.
В ST-LINK Utility:
В STM32CubeProgrammer:
Comment