2019-01-31 10:43 AM
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
2019-01-31 02:13 PM
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.
2019-01-31 02:18 PM
And it will take more than a second. A bulk erase is, what, 16 seconds.
It seems broken.
2019-01-31 03:11 PM
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.
2019-01-31 03:43 PM
For 2019 I'm hoping for hires in Software QA and User Interface/Experience positions
2019-01-31 04:12 PM
Woah, slow down now. That's crazy talk.