STM32CubeProg over serial will not bulk erase a locked processor whereas "Demonstrator GUI" will.
Before you say "Well act-chilly", no, the processor is not level 2 locked. Just level 1.
Using STM32CubeProg 1.4.0 on MacOS or Windows 10, STM32F405, serial port.
I am bootloading a bunch of processors using their serial ports.
If I put the processors into booload mode, fire up STM32CubeProg 1.4.0 on Windows, connect to the processor, I get a message that reads:
"Device is under Read Out Protection
Do you want to disable it?"
I say OK and it always says:
"Error: Disabling memory Read Protection failed"
I get the same result if I run it on a Mac.
But if I use that crunchy program called "Demonstrator GUI" / Flash Loader Demonstrator it works as it always has.
Here is the level 3 log from STM32CubeProg from Windows 10:
11:38:47 : STM32CubeProgrammer API v1.4.0
11:38:58:298 : Serial Port COM6 is successfully opened.
11:38:58:310 : Port configuration: parity = even, baudrate = 115200, data-bit = 8, stop-bit = 1.0, flow-control = off
11:38:58:310 : No Init bits value is : 0
11:38:58:310 : Sending init command:
11:38:58:311 : byte 0x7F sent successfully to target
11:38:58:311 : Wait ends after 1 loop, dataready = 1, delay = 6
11:38:58:311 : Received response from target: 0x79
11:38:58:311 : Activating device: OK
11:38:58:312 : Sending GetID command and its XOR:
11:38:58:312 : byte 0x02 sent successfully to target
11:38:58:312 : byte 0xFD sent successfully to target
11:38:58:312 : Wait ends after 1 loop, dataready = 1, delay = 5
11:38:58:313 : Received response from target: 0x79
11:38:58:313 : Received response from target: 0x01041379
11:38:58:313 : Chip ID: 0x413
11:38:58:314 : Sending Get command and its XOR:
11:38:58:314 : byte 0x00 sent successfully to target
11:38:58:314 : byte 0xFF sent successfully to target
11:38:58:315 : Wait ends after 1 loop, dataready = 1, delay = 14
11:38:58:315 : Received response from target: 0x79
11:38:58:315 : Received response from target: 0x0b
11:38:58:316 : size of bytes in the response: 11
11:38:58:316 : Received response from target: 0x31000102112131446373829279
11:38:58:316 : Full received response: 0b31000102112131446373829279
11:38:58:316 : BootLoader protocol version: 3.1
11:38:58:317 : byte 0x11 sent successfully to target
11:38:58:317 : byte 0xEE sent successfully to target
11:38:58:317 : Warning: Device is under Read Out Protection
11:38:58:318 : Sending GetID command and its XOR:
11:38:58:318 : byte 0x02 sent successfully to target
11:38:58:319 : byte 0xFD sent successfully to target
11:38:58:319 : Received response from target: 0x1f
11:38:58:319 : Response received from device: NACK
11:38:58:320 : Error: GETID command not acknowledged!
11:38:58:320 : Reemission of GetID command
11:38:58:321 : Sending GetID command and its XOR:
11:38:58:321 : byte 0x02 sent successfully to target
11:38:58:321 : byte 0xFD sent successfully to target
11:38:58:323 : Wait ends after 1 loop, dataready = 1, delay = 15
11:38:58:323 : Received response from target: 0x79
11:38:58:323 : Received response from target: 0x01041379
11:38:58:499 : byte 0x11 sent successfully to target
11:38:58:500 : byte 0xEE sent successfully to target
11:38:58:500 : data sent successfully to target: 0x0800000008
11:38:58:501 : byte 0x11 sent successfully to target
11:38:58:501 : byte 0xEE sent successfully to target
11:39:04:081 : Disabling memory Read Protection...
11:39:04:081 : Sending read unprotect command and its XOR:
11:39:04:084 : byte 0x92 sent successfully to target
11:39:04:085 : bytesToWrite before send = 1
11:39:04:085 : bFlushRet = 1, bytesToWrite after flush() = 1
11:39:05:056 : waitForBytesWritten Error : The wait operation timed out.
11:39:05:183 : byte 0x6D sent successfully to target
11:39:06:194 : Wait ends after 1 loop, dataready = 0, delay = 1001
11:39:06:195 : Timeout error occured while waiting for acknowledgement.
11:39:06:195 : No response from target received
11:39:06:196 : Error: Disabling memory Read Protection failed
