mirror of
https://github.com/EFeru/hoverboard-firmware-hack-FOC.git
synced 2025-08-06 11:04:26 +02:00
How to unlock the MCU flash
44
unlock_MCU_flash.md
Normal file
44
unlock_MCU_flash.md
Normal file
@@ -0,0 +1,44 @@
|
||||
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!
|
||||
|
||||
# Method 1: Using ST-Link Utility
|
||||
|
||||
* Step 1: Download and install the [ST-Link Utility](https://www.st.com/en/development-tools/stsw-link004.html)
|
||||
* 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
|
||||
|
||||

|
||||
|
||||
* 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.
|
||||
|
||||
# Method 2: Using Ubuntu
|
||||
|
||||
* Step 1: Install the [ST-Flash Utility](https://github.com/texane/stlink)
|
||||
* Step 2: Install [OpenOCD](https://zoomadmin.com/HowToInstall/UbuntuPackage/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 3a: 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 3b: 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"
|
||||
```
|
||||
|
Reference in New Issue
Block a user