-
Notifications
You must be signed in to change notification settings - Fork 960
How to Unlock MCU Flash
EmanuelFeru edited this page Feb 8, 2020
·
23 revisions
This wiki page explains how to unlock the flash of an STM32 or a GD32 to allow re-flashing with a custom firmware.
WARNING: This procedure can erase the MCU firmware irreversibly! Perform these steps at your own risk!
- Step 1: Download and install the ST-Link Utility
- Step 2: Connect the ST-Link programmer to the MCU programming pins GND, SWDIO, SWCLK. Connect the 3V3 pin only if your MCU is not powered externally.
- Step 3: Open the ST-Link utility and press Connect to target
- Step 4: If you get the message "Can not read memory!" the MCU is most probably locked
- Step 5: Go to Target and click Option Bytes
- Step 6: Select Disable in Read Out Protection drop-down menu and click Apply
- Step 7: Click Connect to target
- Step 8: If you see the window above, then you have successfully unlocked your MCU. You can now flash the MCU.
- Step 1: Install the ST-Flash Utility
- Step 2: Install OpenOCD
- Step 2: Connect the ST-Link programmer to the MCU programming pins GND, SWDIO, SWCLK. Connect the 3V3 pin only if your MCU is not powered externally.
- Step 3: Open a terminal and send the following OpenOCD command:
openocd -f interface/stlink-v2.cfg -f target/stm32f1x.cfg -c init -c "reset halt" -c "stm32f1x unlock 0"
- Step 4: If that does not work. Try:
openocd -f interface/stlink-v2.cfg -f target/stm32f1x.cfg -c init -c "reset halt" -c "mww 0x40022004 0x45670123" -c "mww 0x40022004 0xCDEF89AB" -c "mww 0x40022008 0x45670123" -c "mww 0x40022008 0xCDEF89AB" -c "mww 0x40022010 0x220" -c "mww 0x40022010 0x260" -c "sleep 100" -c "mww 0x40022010 0x230" -c "mwh 0x1ffff800 0x5AA5" -c "sleep 1000" -c "mww 0x40022010 0x2220" -c "sleep 100" -c "mdw 0x40022010" -c "mdw 0x4002201c" -c "mdw 0x1ffff800" -c targets -c "halt" -c "stm32f1x unlock 0"
openocd -f interface/stlink-v2.cfg -f target/stm32f1x.cfg -c init -c "reset halt" -c "mww 0x40022004 0x45670123" -c "mww 0x40022004 0xCDEF89AB" -c "mww 0x40022008 0x45670123" -c "mww 0x40022008 0xCDEF89AB" -c targets -c "halt" -c "stm32f1x unlock 0"