2025-09-21 10:51 AM - edited 2025-09-21 10:51 AM
I wanted to do a full chip erase using STM32Programmer (I am trying to debug a custom bootloader) but kept getting the error "Mass erase operation failed. Please verify flash protection".
I sent the following option byte screenshot to ChatGPT....
ChatGPT said...
In your PCROP Protection section:
PCROP1_STRT = 0xFFFF
PCROP1_END = 0x0000
PCROP_RDP is enabled
This is an invalid PCROP range: start at 0xFFFF, end at 0x0.
That effectively protects a huge chunk of flash against erase/program.
So even though WRP and RDP are fine, PCROP is blocking your erase.
In STM32CubeProgrammer → Option Bytes → PCROP:
Set PCROP1_STRT = 0xFF
Set PCROP1_END = 0xFF
Uncheck PCROP_RDP unless you specifically need PCROP linked to readout protection.
Apply changes (Program Option Bytes → Reset).
Retry Full Chip Erase with ST-Link.
I did the suggested fix but it obviously didnt work.
But worse still, I cant even change the option bytes back to as they were because I get the following error....
18:45:49 : UPLOADING OPTION BYTES DATA ...
18:45:49 : Bank : 0x00
18:45:49 : Address : 0x40022020
18:45:49 : Size : 20 Bytes
18:45:49 : OPTION BYTE PROGRAMMING VERIFICATION:
18:45:49 : Error: Expected value for Option Byte "PCROP1_END": 0x0, found: 0xFF
18:45:49 : Error: Expected value for Option Byte "PCROP1_STRT": 0xFFFF, found: 0xFF
18:45:49 : Error: Option Byte Programming failed Or modified by application after OB_LAUNCH
I cant program or debug in STMCubeIDE either so Im worried my board is bricked.
Is it recoverable and if so how ?
Solved! Go to Solution.
2025-09-22 12:55 PM - edited 2025-09-22 12:57 PM
It is hard to figure out from descriptions but see here, SPRMOD is enabled and I cannot erase the chip. See the the test below it fails to erase.
here is the tricky part you have to change RDP to BB, becasue it does not allow just uncheck SPRMOD now, click apply
then you check RDP back to AA and uncheck SPRMOD and click apply
now you have SPRMOD unchecked and you can erase now
probably that was the problem, a little tricky to disable but it can be done.
2025-09-23 11:02 AM
Thanks MNapi
But my device (STM32L433) does not have SPRMOD....
I have scrolled down and searched around, but cannot find any reference to SPRMOD
2025-09-23 12:29 PM - edited 2025-09-23 12:45 PM
Before you give up - maybe last action: to reset the pcrop...whatever its now....
So try set : Uncheck PCROP_RDP + set RDP to level1 (protected) , 01 (or whatever, but NOT 0xCC !);
then restart/ power cycle and set Uncheck PCROP_RDP + RDP to 0xAA , to do regression;
then apply....
restart/ power cycle....and we know.
+
btw
The AI should know , how its done and not tell silly stories, except ...AI =Artificial I.d.i.o.t.
2025-09-26 11:52 AM
Thanks AScha.3,
I changed the RDP from 0xAA to 0xBB and unchecked PCROP_RDP, then applied the settings.
It failed to update PCROP_RDP, but when I changed RDP back to 0xAA it has now fixed the problem and the board is back working again
2025-09-26 1:38 PM - edited 2025-09-26 2:02 PM
Right, so I was right and chatgpt wrong.
Great!
As I wrote it....to do the regression, first have to set RDP 1, then go back...
Only this clearing the full flash.