STM32 имеет функцию защиты от считывания уровня 2, поэтому код не может быть считан через интерфейс отладки (SWD).
Как с помощью OpenOCD включить защиту от считывания УРОВЕНЬ 2 через интерфейс SWD?
STM32 имеет функцию защиты от считывания уровня 2, поэтому код не может быть считан через интерфейс отладки (SWD).
Как с помощью OpenOCD включить защиту от считывания УРОВЕНЬ 2 через интерфейс SWD?
Скрипт openocd для STM32F42x:
// unlock Option bytes
mww 0x40023C08 0x08192A3B; // OPT key1
mww 0x40023C08 0x4C5D6E7F; // OPT key2
mdw 0x40023c0c // wait until returns 00000000 that signifies flash write done
mww 0x40023C14 0x8000AAEC; // enable SPRMOD (8), disable write protection
mww 0x40023C18 0x00000000;
mww 0x40023C14 0x8000AAEE; // execute option start
mdw 0x40023c0c // wait until returns 00000000 that signifies flash write done
// at this point SPRMOD should be set, but no protection. Now invert protection bits
mww 0x40023C14 0x8FFFCCEC; // enable WRP on bank 1 and read protection lvl2
mww 0x40023C18 0x0FFF0000; // WRP on bank 2
mww 0x40023C14 0x8FFFCCEE; // execute option start
mdw 0x40023c0c // wait until returns 00000000 that signifies flash write done
Заметьте, я не делал этого сам (по крайней мере, не намеренно), но справочник вам в помощь.
Примечание 2: это может привести к поломке вашего MCU.
вам нужно будет написать скрипт, разблокирующий байты опций и программирующий их.
Вместо этого используйте утилиту st-link