cancel
Showing results for 
Search instead for 
Did you mean: 

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

5 REPLIES 5

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.

Arbitrary timeout values... What if task takes more than second normally?

The external loader stuff just waits for unspecified times, calling into the loader is just a black hole, isn't able to report progress, or metrics on how long something might actually take.

Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..

And it will take more than a second. A bulk erase is, what, 16 seconds.

It seems broken.

It also looks like "Flash Loader Demonstrator" has a memory leak. It seems to grab about 2MB of RAM every time I load a processor and never releases it.

For 2019 I'm hoping for hires in Software QA and User Interface/Experience positions

Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..

Woah, slow down now. That's crazy talk.