2024-04-15 08:51 AM - edited 2024-04-15 09:44 AM
We have a custom PCB with a STM32H750 on it with Dual NOR Flash (W25Q12BJVSIM). I have been able to flash the code on all but one board. When I attempt to flash the board with STM32CubeProgrammer, I get a Warning: The core is locked up message. How do I unlock the core? This MCU was blank to begin with.
08:44:13 : ST-LINK error (DEV_CONNECT_ERR)
08:44:13 : ST-LINK SN : 38FF6F06304E4B3028442243
08:44:13 : ST-LINK FW : V2J45S7
08:44:13 : Board : --
08:44:13 : Voltage : 3.23V
08:44:13 : SWD freq : 4000 KHz
08:44:13 : Connect mode: Under Reset
08:44:13 : Reset mode : Hardware reset
08:44:13 : Device ID : 0x450
08:44:13 : Revision ID : Rev Y
08:44:13 : Debug in Low Power mode is not supported for this device.
08:44:13 : UPLOADING OPTION BYTES DATA ...
08:44:13 : Bank : 0x00
08:44:13 : Address : 0x5200201c
08:44:13 : Size : 308 Bytes
08:44:13 : UPLOADING ...
08:44:13 : Size : 1024 Bytes
08:44:13 : Address : 0x8000000
08:44:13 : Read progress:
08:44:13 : Data read successfully
08:44:13 : Time elapsed during the read operation is: 00:00:00.007
08:45:17 : Memory Programming ...
08:45:17 : Opening and parsing file: ISSPro-SmartGauge-9CB700178A-Binary-v0.11.901245068-FULL.hex
08:45:17 : File : ISSPro-SmartGauge-9CB700178A-Binary-v0.11.901245068-FULL.hex
08:45:17 : Size : 7.49 MB
08:45:17 : Address : 0x08000000
08:45:17 : Erasing memory corresponding to segment 0:
08:45:21 : Erasing memory corresponding to segment 1:
08:45:22 : Erasing external memory sectors [0 178]
08:45:27 : Error: failed to erase memory
08:45:27 : Error: failed to erase memory
08:45:27 : RUNNING Program ...
08:45:27 : Address: : 0x08000000
08:45:27 : Warning: The core is locked up
08:45:27 : Start operation achieved successfully
This is a detailed output of the above.
09:42:35:125 : Memory Programming ...
09:42:35:125 : Opening and parsing file: ISSPro-SmartGauge-9CB700178A-Binary-v0.11.901245068-FULL.hex
09:42:35:235 : File : ISSPro-SmartGauge-9CB700178A-Binary-v0.11.901245068-FULL.hex
09:42:35:235 : Size : 7.48 MB
09:42:35:236 : Address : 0x08000000
09:42:35:236 : Erasing Segment <0> Address <0x08000000> Size <27892>Bytes
09:42:35:236 : Erasing memory corresponding to segment 0:
09:42:35:236 : Memory erase...
09:42:35:236 : halt ap 0 Status = 0
09:42:35:236 : halt ap 1 Status = 32
09:42:35:236 : halt ap 2 Status = 32
09:42:35:236 : w ap 0 reg 15 PC (0x24000000)
09:42:35:236 : w ap 0 reg 17 MSP (0x24000500)
09:42:35:236 : w ap 0 reg 16 xPSR (0x01000000)
09:42:35:245 : w ap 0 @0x24000FE0 0x00000200 bytes Data 0x00000000
09:42:35:245 : w ap 0 @0x24000000 0x00000004 bytes Data 0x0000BE00
09:42:35:269 : w ap 0 @0x24000004 0x00000BA8 bytes Data 0xB672B538
09:42:35:269 : Init flashloader...
09:42:35:269 : halt ap 0
09:42:35:269 : w ap 0 reg 0 R0 0x00000001
09:42:35:269 : w ap 0 reg 1 R1 0x00000000
09:42:35:269 : w ap 0 reg 2 R2 0x00000000
09:42:35:270 : w ap 0 reg 3 R3 0x00000000
09:42:35:270 : w ap 0 reg 4 R4 0x00000000
09:42:35:270 : w ap 0 reg 5 R5 0x00000000
09:42:35:270 : w ap 0 reg 6 R6 0x00000000
09:42:35:270 : w ap 0 reg 7 R7 0x00000000
09:42:35:270 : w ap 0 reg 8 R8 0x00000000
09:42:35:270 : w ap 0 reg 9 R9 0x00000000
09:42:35:270 : w ap 0 reg 10 R10 0x00000000
09:42:35:270 : w ap 0 reg 11 R11 0x00000000
09:42:35:270 : w ap 0 reg 12 R12 0x00000000
09:42:35:270 : w ap 0 reg 13 SP 0x00000000
09:42:35:270 : w ap 0 reg 14 LR 0x24000001
09:42:35:270 : w ap 0 reg 15 PC 0x24000005
09:42:35:270 : w ap 0 reg 16 xPSR 0x01000000
09:42:35:270 : w ap 0 reg 17 MSP 0x24000FA8
09:42:35:271 : w ap 0 reg 18 PSP 0x00000000
09:42:35:271 : run ap 0
09:42:35:271 : halt ap 0
09:42:35:271 : r ap 0 reg 0 R0 0x00000001
09:42:35:271 : Loader mass erase...
09:42:35:271 : w ap 0 reg 0 R0 0x00000002
09:42:35:274 : w ap 0 reg 1 R1 0x00000000
09:42:35:278 : w ap 0 reg 2 R2 0x00000000
09:42:35:281 : w ap 0 reg 3 R3 0x00000000
09:42:35:283 : w ap 0 reg 4 R4 0x00000000
09:42:35:287 : w ap 0 reg 5 R5 0x00000000
09:42:35:287 : w ap 0 reg 6 R6 0x00000000
09:42:35:287 : w ap 0 reg 7 R7 0x00000000
09:42:35:287 : w ap 0 reg 8 R8 0x00000000
09:42:35:287 : w ap 0 reg 9 R9 0x00000000
09:42:35:288 : w ap 0 reg 10 R10 0x00000000
09:42:35:292 : w ap 0 reg 11 R11 0x00000000
09:42:35:292 : w ap 0 reg 12 R12 0x00000000
09:42:35:294 : w ap 0 reg 13 SP 0x00000000
09:42:35:294 : w ap 0 reg 14 LR 0x24000001
09:42:35:294 : w ap 0 reg 15 PC 0x24000261
09:42:35:294 : w ap 0 reg 16 xPSR 0x01000000
09:42:35:294 : w ap 0 reg 17 MSP 0x24000FA8
09:42:35:294 : w ap 0 reg 18 PSP 0x00000000
09:42:35:295 : run ap 0
09:42:39:601 : halt ap 0
09:42:39:601 : r ap 0 reg 0 R0 0x00000001
09:42:39:602 : erase: 4372ms
09:42:39:602 : Erasing Segment <1> Address <0x90000000> Size <1455836>Bytes
09:42:39:602 : Erasing memory corresponding to segment 1:
09:42:39:602 : Memory erase...
09:42:39:607 : halt ap 0 Status = 0
09:42:39:607 : halt ap 1 Status = 32
09:42:39:607 : halt ap 2 Status = 32
09:42:39:607 : w ap 0 reg 15 PC (0x24000000)
09:42:39:607 : w ap 0 reg 17 MSP (0x24000500)
09:42:39:607 : w ap 0 reg 16 xPSR (0x01000000)
09:42:39:618 : w ap 0 @0x24018560 0x00000200 bytes Data 0x00000000
09:42:39:619 : w ap 0 @0x24000000 0x00000004 bytes Data 0x0000BE00
09:42:40:254 : w ap 0 @0x24000004 0x00018134 bytes Data 0x00000000
09:42:40:256 : Erasing external memory sectors [0 177]
09:42:40:256 : Init flashloader...
09:42:40:257 : halt ap 0
09:42:40:258 : w ap 0 reg 0 R0 0x00000001
09:42:40:258 : w ap 0 reg 1 R1 0x00000000
09:42:40:258 : w ap 0 reg 2 R2 0x00000000
09:42:40:258 : w ap 0 reg 3 R3 0x00000000
09:42:40:259 : w ap 0 reg 4 R4 0x00000000
09:42:40:260 : w ap 0 reg 5 R5 0x00000000
09:42:40:260 : w ap 0 reg 6 R6 0x00000000
09:42:40:260 : w ap 0 reg 7 R7 0x00000000
09:42:40:261 : w ap 0 reg 8 R8 0x00000000
09:42:40:262 : w ap 0 reg 9 R9 0x00000000
09:42:40:263 : w ap 0 reg 10 R10 0x00000000
09:42:40:263 : w ap 0 reg 11 R11 0x00000000
09:42:40:263 : w ap 0 reg 12 R12 0x00000000
09:42:40:264 : w ap 0 reg 13 SP 0x00000000
09:42:40:264 : w ap 0 reg 14 LR 0x24000001
09:42:40:264 : w ap 0 reg 15 PC 0x24000685
09:42:40:265 : w ap 0 reg 16 xPSR 0x01000000
09:42:40:266 : w ap 0 reg 17 MSP 0x24018534
09:42:40:266 : w ap 0 reg 18 PSP 0x00000000
09:42:40:266 : run ap 0
09:42:45:002 : halt ap 0
09:42:45:002 : Init function fail with timeout
09:42:45:003 : r ap 0 reg 16 xPSR 0x61000000
09:42:45:003 : Loader sector erase...
09:42:45:003 : Error: failed to erase memory
09:42:45:031 : Error: failed to erase memory
09:42:45:035 : RUNNING Program ...
09:42:45:035 : Address: : 0x08000000
09:42:45:041 : w ap 0 reg 15 PC 0xFFFFFFFF
09:42:45:041 : w ap 0 reg 17 MSP 0xFFFFFFFF
09:42:45:041 : w ap 0 reg 16 xPSR 0x01000000
09:42:45:041 : Warning: The core is locked up
09:42:45:053 : Start operation achieved successfully
I also tried a full chip erase and got this.
08:56:40 : ST-LINK SN : 38FF6F06304E4B3028442243
08:56:40 : ST-LINK FW : V2J45S7
08:56:40 : Board : --
08:56:40 : Voltage : 3.23V
08:56:40 : SWD freq : 4000 KHz
08:56:40 : Connect mode: Under Reset
08:56:40 : Reset mode : Hardware reset
08:56:40 : Device ID : 0x450
08:56:40 : Revision ID : Rev Y
08:56:40 : Debug in Low Power mode is not supported for this device.
08:56:41 : UPLOADING OPTION BYTES DATA ...
08:56:41 : Bank : 0x00
08:56:41 : Address : 0x5200201c
08:56:41 : Size : 308 Bytes
08:56:41 : UPLOADING ...
08:56:41 : Size : 1024 Bytes
08:56:41 : Address : 0x8000000
08:56:41 : Read progress:
08:56:41 : Data read successfully
08:56:41 : Time elapsed during the read operation is: 00:00:00.007
08:56:43 : External loader sector number is too big, displaying only the first 4000 sectors
08:56:43 : External loader sector number is too big, displaying only the first 4000 sectors
08:56:43 : External loader sector number is too big, displaying only the first 4000 sectors
08:56:45 : MASS ERASE ...
08:56:50 : Error: Mass erase operation failed. Please verify flash protection
This is the message when trying to debug in CubeIDE
Memory Programming ...
Opening and parsing file: ST-LINK_GDB_server_a23400.srec
File : ST-LINK_GDB_server_a23400.srec
Size : 7.46 MB
Address : 0x90000000
Erasing memory corresponding to segment 0:
Erasing external memory sectors [0 178]
Error: failed to erase memory
Error: failed to erase memory
Encountered Error when opening C:\ST\STM32CubeIDE_1.10.0\STM32CubeIDE\plugins\com.st.stm32cube.ide.mcu.externaltools.cubeprogrammer.win32_2.1.200.202311302303\tools\bin\STM32_Programmer_CLI.exe
Error in STM32CubeProgrammer
Shutting down...
Exit.
Solved! Go to Solution.
2024-04-16 07:34 AM
Debug like there's a problem unique to the fabrication of this board.
2024-04-15 10:04 AM
It seems like I am hitting a HAL_TIMEOUT in my External Loader even though this loader works with 15 other boards. Is this pointing more towards a hardware issue?
2024-04-15 10:09 AM
From this > I have been able to flash the code on all but one board.
I would recommend : inspect all solder joints on cpu and decoupling caps and on flash. One is bad...
2024-04-15 12:02 PM
This STM32H750 is Rev. Y, it is obsolete and buggy, please check the errata.
2024-04-16 07:26 AM
2024-04-16 07:32 AM
Yeah, but not to the point it would fail in this way. Other working boards built from same batch and chip stepping.
This continues to be indicative of a board/component level failure.
Check soldering, x-ray inspect, eliminate components with test or validation apps to try and isolate failing part(s).
Check supplies and VCAP caps and voltages.
2024-04-16 07:34 AM
Debug like there's a problem unique to the fabrication of this board.