cancel
Showing results for 
Search instead for 
Did you mean: 

External Loader: Read works once, second Read hangs (needs reconnect)

Kenbong
Visitor

Hello,

On STM32U575VGT with MX25L6433F over OCTOSPI1, my external loader can read successfully only once. The next read operation hangs (5-second timeout). If I disconnect/reconnect the target, the first read succeeds again, then the second read fails the same way.

 

Hardware

MCU: STM32U575VGT (LQFP100)

Flash: MX25L6433F (64 Mbit / 8 MB)

Bus: OCTOSPI1, Quad 1-1-4

MM base: 0x90000000

 

OSPI1 Pins

PA6: IO3

PB0: IO1

PB10: CLK

PE11: NCS

PE12: IO0

PE14: IO2

 

Symptom

First read after connect: OK (e.g., 1024 B @ 0x90000000)

Second read: FAIL (hang/timeout inside Read; CubeProgrammer reports “Init function fail with timeout” but my Init() actually succeeds — the hang occurs in Read() when touching MM region)

MM access at 0x90000000 appears to stall on second attempt.

 

Log

 

----- Read #1

18:22:50:670 : UPLOADING ...
18:22:50:670 : Size : 1024 Bytes
18:22:50:670 : Address : 0x90000000
18:22:50:670 : Read progress:
18:22:50:670 : Reading data...
18:22:50:671 : halt ap 0
18:22:50:671 : w ap 0 reg 15 PC (0x20000000)
18:22:50:671 : w ap 0 reg 17 MSP (0x20000500)
18:22:50:671 : w ap 0 reg 16 xPSR (0x01000000)
18:22:50:671 : w ap 0 @0x20014620 : 0x00000200 bytes, Data 0x00000000...
18:22:50:671 : w ap 0 @0x20000000 : 0x00000004 bytes, Data 0x0000BE00...
18:22:51:305 : w ap 0 @0x20000004 : 0x000141E4 bytes, Data 0x00000000...
18:22:51:305 : Loader read...
18:22:51:305 : Init flashloader...
18:22:51:307 : halt ap 0
18:22:51:307 : w ap 0 reg 0 R0 0x00000000
18:22:51:307 : w ap 0 reg 1 R1 0x00000000
18:22:51:307 : w ap 0 reg 2 R2 0x00000000
18:22:51:309 : w ap 0 reg 3 R3 0x00000000
18:22:51:309 : w ap 0 reg 4 R4 0x00000000
18:22:51:309 : w ap 0 reg 5 R5 0x00000000
18:22:51:309 : w ap 0 reg 6 R6 0x00000000
18:22:51:309 : w ap 0 reg 7 R7 0x00000000
18:22:51:313 : w ap 0 reg 8 R8 0x00000000
18:22:51:313 : w ap 0 reg 9 R9 0x00000000
18:22:51:313 : w ap 0 reg 10 R10 0x00000000
18:22:51:314 : w ap 0 reg 11 R11 0x00000000
18:22:51:314 : w ap 0 reg 12 R12 0x00000000
18:22:51:314 : w ap 0 reg 13 SP 0x00000000
18:22:51:316 : w ap 0 reg 14 LR 0x20000001
18:22:51:316 : w ap 0 reg 15 PC 0x200017BB
18:22:51:317 : w ap 0 reg 16 xPSR 0x01000000
18:22:51:318 : w ap 0 reg 17 MSP 0x200145E4
18:22:51:318 : w ap 0 reg 18 PSP 0x00000000
18:22:51:318 : run ap 0
18:22:51:321 : halt ap 0
18:22:51:321 : r ap 0 reg 0 R0 0x00000001
18:22:51:321 : w ap 0 reg 0 R0 0x90000000
18:22:51:322 : w ap 0 reg 1 R1 0x00000400
18:22:51:323 : w ap 0 reg 2 R2 0x20014620
18:22:51:323 : w ap 0 reg 3 R3 0x00000000
18:22:51:323 : w ap 0 reg 4 R4 0x00000000
18:22:51:324 : w ap 0 reg 5 R5 0x00000000
18:22:51:324 : w ap 0 reg 6 R6 0x00000000
18:22:51:325 : w ap 0 reg 7 R7 0x00000000
18:22:51:326 : w ap 0 reg 8 R8 0x00000000
18:22:51:328 : w ap 0 reg 9 R9 0x00000000
18:22:51:328 : w ap 0 reg 10 R10 0x00000000
18:22:51:328 : w ap 0 reg 11 R11 0x00000000
18:22:51:328 : w ap 0 reg 12 R12 0x00000000
18:22:51:331 : w ap 0 reg 13 SP 0x00000000
18:22:51:331 : w ap 0 reg 14 LR 0x20000001
18:22:51:333 : w ap 0 reg 15 PC 0x20001881
18:22:51:333 : w ap 0 reg 16 xPSR 0x01000000
18:22:51:333 : w ap 0 reg 17 MSP 0x200145E4
18:22:51:333 : w ap 0 reg 18 PSP 0x00000000
18:22:51:333 : run ap 0
18:22:51:335 : halt ap 0
18:22:51:337 : r ap 0 reg 0 R0 0x00000001
18:22:51:344 : r ap 0 @0x20014620 0x00000400 bytes Data 0x00F8FCF8
18:22:51:344 : Data read successfully
18:22:51:344 : Time elapsed during the read operation is: 00:00:00.691

 


18:22:51:350 : r ap 0 @0x40022040 0x00000004 bytes Data 0x1BEFF8AA
18:22:51:350 : r ap 0 @0x0BF99EFE 0x00000001 bytes Data 0xFFFFFF92
18:22:52:353 : r ap 0 @0x40022040 0x00000004 bytes Data 0x1BEFF8AA
18:22:52:354 : r ap 0 @0x0BF99EFE 0x00000001 bytes Data 0xFFFFFF92
18:22:53:363 : r ap 0 @0x40022040 0x00000004 bytes Data 0x1BEFF8AA
18:22:53:364 : r ap 0 @0x0BF99EFE 0x00000001 bytes Data 0xFFFFFF92
18:22:54:373 : r ap 0 @0x40022040 0x00000004 bytes Data 0x1BEFF8AA
18:22:54:375 : r ap 0 @0x0BF99EFE 0x00000001 bytes Data 0xFFFFFF92
18:22:54:509 : r ap 0 @0x40022040 0x00000004 bytes Data 0x1BEFF8AA
18:22:54:509 : r ap 0 @0x40022040 0x00000004 bytes Data 0x1BEFF8AA

 

----- Read #2
18:22:54:509 : UPLOADING ...
18:22:54:509 : Size : 1024 Bytes
18:22:54:509 : Address : 0x90000000
18:22:54:509 : Read progress:
18:22:54:509 : Reading data...
18:22:54:517 : halt ap 0
18:22:54:517 : w ap 0 reg 15 PC (0x20000000)
18:22:54:517 : w ap 0 reg 17 MSP (0x20000500)
18:22:54:517 : w ap 0 reg 16 xPSR (0x01000000)
18:22:54:520 : w ap 0 @0x20014620 : 0x00000200 bytes, Data 0x00000000...
18:22:54:520 : w ap 0 @0x20000000 : 0x00000004 bytes, Data 0x0000BE00...
18:22:55:050 : w ap 0 @0x20000004 : 0x000141E4 bytes, Data 0x00000000...
18:22:55:051 : Loader read...
18:22:55:051 : Init flashloader...
18:22:55:051 : halt ap 0
18:22:55:055 : w ap 0 reg 0 R0 0x00000000
18:22:55:056 : w ap 0 reg 1 R1 0x00000000
18:22:55:056 : w ap 0 reg 2 R2 0x00000000
18:22:55:056 : w ap 0 reg 3 R3 0x00000000
18:22:55:056 : w ap 0 reg 4 R4 0x00000000
18:22:55:056 : w ap 0 reg 5 R5 0x00000000
18:22:55:056 : w ap 0 reg 6 R6 0x00000000
18:22:55:056 : w ap 0 reg 7 R7 0x00000000
18:22:55:057 : w ap 0 reg 8 R8 0x00000000
18:22:55:058 : w ap 0 reg 9 R9 0x00000000
18:22:55:061 : w ap 0 reg 10 R10 0x00000000
18:22:55:066 : w ap 0 reg 11 R11 0x00000000
18:22:55:066 : w ap 0 reg 12 R12 0x00000000
18:22:55:068 : w ap 0 reg 13 SP 0x00000000
18:22:55:068 : w ap 0 reg 14 LR 0x20000001
18:22:55:068 : w ap 0 reg 15 PC 0x200017BB
18:22:55:069 : w ap 0 reg 16 xPSR 0x01000000
18:22:55:069 : w ap 0 reg 17 MSP 0x200145E4
18:22:55:069 : w ap 0 reg 18 PSP 0x00000000
18:22:55:069 : run ap 0
18:23:00:001 : halt ap 0
18:23:00:001 : Init function fail with timeout
18:23:00:002 : r ap 0 reg 16 xPSR 0x01000000
18:23:00:006 : halt ap 0
18:23:00:006 : w ap 0 reg 15 PC (0x20000000)
18:23:00:008 : w ap 0 reg 17 MSP (0x20000500)
18:23:00:008 : w ap 0 reg 16 xPSR (0x01000000)
18:23:00:008 : Error: Data read failed
18:23:00:158 : r ap 0 @0x40022040 0x00000004 bytes Data 0x1BEFF8AA
18:23:00:158 : r ap 0 @0x0BF99EFE 0x00000001 bytes Data 0xFFFFFF92
18:23:01:156 : r ap 0 @0x40022040 0x00000004 bytes Data 0x1BEFF8AA
18:23:01:157 : r ap 0 @0x0BF99EFE 0x00000001 bytes Data 0xFFFFFF92
18:23:02:165 : r ap 0 @0x40022040 0x00000004 bytes Data 0x1BEFF8AA
18:23:02:167 : r ap 0 @0x0BF99EFE 0x00000001 bytes Data 0xFFFFFF92

 

If anyone has a working STM32U5 external loader that can perform consecutive memory-mapped reads in CubeProgrammer without reconnecting, please let me know how you solved it.

Many thanks in advance!

 

1 REPLY 1

It's getting stuck in the Init() function, so spinning on something and not exiting.

Probably something like a mis-matched mode setting, or being in Memory Mapped and needs to be aborted so the reinitialization succeeds.

For debugging I'd suggest outputting some diagnostic or telemetry from the loader via an available UART

 

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