2025-06-03 11:29 PM
Hi everyone,
I'm trying to flash my STM32WB55 and the connected MX25R64 external memory.
I have already created my external loader and tested it with the CubeProgrammer, feeding it with a .srec file containing only external addresses (>= 0x90000000).
However, I was trying to unify the flashing process by using the external loader option present in STM32CubeIDE. This option generates a STM32_Programmer_CLI command and feeds it with a .srec file that covers both external and internal memory:
C:\ST\STM32CubeIDE_1.18.1\STM32CubeIDE\plugins\com.st.stm32cube.ide.mcu.externaltools.cubeprogrammer.win32_2.2.100.202412061334\tools\bin\STM32_Programmer_CLI.exe --connect port=SWD speed=fast mode=UR reset=hwRst --extload <path/to/extloader> --download <pat/to/srec> --verify --log <path/to/log>
srec_info output:
Format: Motorola S-Record
Header: "ST-LINK GDB server"
Execution Start Address: 00000000
Data: 08000000 - 0800013B
08000140 - 08000143
08000150 - 0806F1B9
0806F1BC - 08070535
08070538 - 0807053F
90242000 - 9027EC5B
Here is the output of the command when it fails:
-------------------------------------------------------------------
STM32CubeProgrammer v2.19.0
-------------------------------------------------------------------
Log output file: STM32CubeProgrammer_test.log
ST-LINK SN : <SN>
ST-LINK FW : V2J46S7
Board : --
Voltage : 2.93V
SWD freq : 4000 KHz
Connect mode: Under Reset
Reset mode : Hardware reset
Device ID : 0x495
Revision ID : Rev X
Device name : STM32WB5x/35xx
Flash size : 1 MBytes
Device type : MCU
Device CPU : Cortex-M4
BL Version : 0xD5
Debug in Low Power mode enabled
Opening and parsing file: ST-LINK_GDB_server_a11452.srec
Memory Programming ...
File : ST-LINK_GDB_server_a11452.srec
Size : 692.40 KB
Address : 0x08000000
Erasing memory corresponding to sector 0:
Erasing internal memory sectors [0 112]
Erasing memory corresponding to sector 0:
Erasing external memory sectors [578 638]
Download in Progress:
█████████████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ 27%
Error: failed to download Sector[0]
Error: failed to download the File
And this is the log file output:
08:15:25:428 -------------------------------------------------------------------
08:15:25:429 STM32CubeProgrammer v2.19.0
08:15:25:429 -------------------------------------------------------------------
08:15:25:429
[...]
08:15:26:532 ST-LINK FW : V2J46S7
08:15:26:533 Board : --
08:15:26:534 Voltage : 2.93V
08:15:26:544 SWD freq : 4000 KHz
08:15:26:544 Connect mode: Under Reset
08:15:26:544 Reset mode : Hardware reset
08:15:26:545 Device ID : 0x495
08:15:26:546 Revision ID : Rev X
08:15:26:556 flash loader C:/ST/STM32CubeIDE_1.18.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.cubeprogrammer.win32_2.2.100.202412061334/tools/bin/FlashLoader/0x495.stldr is loaded
08:15:26:561 Device name : STM32WB5x/35xx
08:15:26:561 Reading data...
08:15:26:562 r ap 0 @0x1FFF75E0 0x00000004 bytes Data 0xFFFF0400
08:15:26:562 Flash size : 1 MBytes
08:15:26:562 Device type : MCU
08:15:26:562 Device CPU : Cortex-M4
08:15:26:563 BL Version : 0xD5
08:15:26:565 Debug in Low Power mode enabled
08:15:26:565
08:15:26:569 Opening and parsing file: ST-LINK_GDB_server_a11452.srec
08:15:26:570
08:15:26:570 Memory Programming ...
08:15:26:571 File : ST-LINK_GDB_server_a11452.srec
08:15:26:577 Size : 692.40 KB
08:15:26:577 Address : 0x08000000
08:15:26:578
08:15:26:578 Erasing Segment <0> Address <0x08000000> Size <460096>Bytes
08:15:26:578
Erasing memory corresponding to sector 0:
08:15:26:579 r ap 0 @0x40022040 0x00000004 bytes Data 0x20036495
08:15:26:579 fail @0xFEEEFEEE
08:15:26:579 Memory Erase via FlashLoader!
08:15:26:579 Memory erase...
08:15:26:581 halt ap 0
08:15:26:581 w ap 0 reg 15 PC (0x20000000)
08:15:26:582 w ap 0 reg 17 MSP (0x20000500)
08:15:26:582 w ap 0 reg 16 xPSR (0x01000000)
08:15:26:586 w ap 0 @0x20000C40 : 0x00000200 bytes, Data 0x00000000...
08:15:26:587 w ap 0 @0x20000000 : 0x00000004 bytes, Data 0x0000BE00...
08:15:26:601 w ap 0 @0x20000004 : 0x0000081C bytes, Data 0xB672B580...
08:15:26:601 Erasing internal memory sectors [0 112]
08:15:26:602 Init flashloader...
08:15:26:602 halt ap 0
08:15:26:603 w ap 0 reg 0 R0 0x00000001
08:15:26:604 w ap 0 reg 1 R1 0x00000000
08:15:26:604 w ap 0 reg 2 R2 0x00000000
08:15:26:605 w ap 0 reg 3 R3 0x00000000
08:15:26:605 w ap 0 reg 4 R4 0x00000000
08:15:26:606 w ap 0 reg 5 R5 0x00000000
08:15:26:606 w ap 0 reg 6 R6 0x00000000
08:15:26:607 w ap 0 reg 7 R7 0x00000000
08:15:26:608 w ap 0 reg 8 R8 0x00000000
08:15:26:608 w ap 0 reg 9 R9 0x00000000
08:15:26:609 w ap 0 reg 10 R10 0x00000000
08:15:26:609 w ap 0 reg 11 R11 0x00000000
08:15:26:610 w ap 0 reg 12 R12 0x00000000
08:15:26:611 w ap 0 reg 13 SP 0x00000000
08:15:26:611 w ap 0 reg 14 LR 0x20000001
08:15:26:612 w ap 0 reg 15 PC 0x20000005
08:15:26:612 w ap 0 reg 16 xPSR 0x01000000
08:15:26:613 w ap 0 reg 17 MSP 0x20000C1C
08:15:26:613 w ap 0 reg 18 PSP 0x00000000
08:15:26:613 run ap 0
08:15:26:614 halt ap 0
08:15:26:615 r ap 0 reg 0 R0 0x00000001
08:15:26:615 Loader sector erase...
08:15:26:616 w ap 0 reg 0 R0 0x08000000
08:15:26:616 w ap 0 reg 1 R1 0x08070000
08:15:26:617 w ap 0 reg 2 R2 0x00000002
08:15:26:617 w ap 0 reg 3 R3 0x00000000
08:15:26:618 w ap 0 reg 4 R4 0x00000000
08:15:26:618 w ap 0 reg 5 R5 0x00000000
08:15:26:619 w ap 0 reg 6 R6 0x00000000
08:15:26:620 w ap 0 reg 7 R7 0x00000000
08:15:26:620 w ap 0 reg 8 R8 0x00000000
08:15:26:621 w ap 0 reg 9 R9 0x00000000
08:15:26:621 w ap 0 reg 10 R10 0x00000000
08:15:26:622 w ap 0 reg 11 R11 0x00000000
08:15:26:622 w ap 0 reg 12 R12 0x00000000
08:15:26:623 w ap 0 reg 13 SP 0x00000000
08:15:26:624 w ap 0 reg 14 LR 0x20000001
08:15:26:624 w ap 0 reg 15 PC 0x20000645
08:15:26:624 w ap 0 reg 16 xPSR 0x01000000
08:15:26:625 w ap 0 reg 17 MSP 0x20000C1C
08:15:26:625 w ap 0 reg 18 PSP 0x00000000
08:15:26:625 run ap 0
08:15:29:110 halt ap 0
08:15:29:111 r ap 0 reg 0 R0 0x00000001
08:15:29:111 erase: 2532ms
08:15:29:111 Erasing Segment <1> Address <0x90242000> Size <248924>Bytes
08:15:29:111
Erasing memory corresponding to sector 0:
08:15:29:112 r ap 0 @0x40022040 0x00000004 bytes Data 0x20030080
08:15:29:113 fail @0xFEEEFEEE
08:15:29:113 Memory Erase via FlashLoader!
08:15:29:113 Memory erase...
08:15:29:115 halt ap 0
08:15:29:115 w ap 0 reg 15 PC (0x20000000)
08:15:29:116 w ap 0 reg 17 MSP (0x20000500)
08:15:29:116 w ap 0 reg 16 xPSR (0x01000000)
08:15:29:121 w ap 0 @0x2000DA20 : 0x00000200 bytes, Data 0x00000000...
08:15:29:121 w ap 0 @0x20000000 : 0x00000004 bytes, Data 0x0000BE00...
08:15:29:484 w ap 0 @0x20000004 : 0x0000D5EC bytes, Data 0x00000000...
08:15:29:484 Erasing external memory sectors [578 638]
08:15:29:485 Init flashloader...
08:15:29:486 halt ap 0
08:15:29:487 w ap 0 reg 0 R0 0x00000001
08:15:29:488 w ap 0 reg 1 R1 0x00000000
08:15:29:488 w ap 0 reg 2 R2 0x00000000
08:15:29:489 w ap 0 reg 3 R3 0x00000000
08:15:29:490 w ap 0 reg 4 R4 0x00000000
08:15:29:490 w ap 0 reg 5 R5 0x00000000
08:15:29:490 w ap 0 reg 6 R6 0x00000000
08:15:29:492 w ap 0 reg 7 R7 0x00000000
08:15:29:493 w ap 0 reg 8 R8 0x00000000
08:15:29:493 w ap 0 reg 9 R9 0x00000000
08:15:29:494 w ap 0 reg 10 R10 0x00000000
08:15:29:495 w ap 0 reg 11 R11 0x00000000
08:15:29:495 w ap 0 reg 12 R12 0x00000000
08:15:29:496 w ap 0 reg 13 SP 0x00000000
08:15:29:496 w ap 0 reg 14 LR 0x20000001
08:15:29:497 w ap 0 reg 15 PC 0x200016AD
08:15:29:497 w ap 0 reg 16 xPSR 0x01000000
08:15:29:498 w ap 0 reg 17 MSP 0x2000D9EC
08:15:29:498 w ap 0 reg 18 PSP 0x00000000
08:15:29:498 run ap 0
08:15:29:517 halt ap 0
08:15:29:517 r ap 0 reg 0 R0 0x00000001
08:15:29:517 Loader sector erase...
08:15:29:518 w ap 0 reg 0 R0 0x90242000
08:15:29:519 w ap 0 reg 1 R1 0x9027E000
08:15:29:520 w ap 0 reg 2 R2 0x00000002
08:15:29:520 w ap 0 reg 3 R3 0x00000000
08:15:29:521 w ap 0 reg 4 R4 0x00000000
08:15:29:522 w ap 0 reg 5 R5 0x00000000
08:15:29:522 w ap 0 reg 6 R6 0x00000000
08:15:29:523 w ap 0 reg 7 R7 0x00000000
08:15:29:523 w ap 0 reg 8 R8 0x00000000
08:15:29:524 w ap 0 reg 9 R9 0x00000000
08:15:29:524 w ap 0 reg 10 R10 0x00000000
08:15:29:525 w ap 0 reg 11 R11 0x00000000
08:15:29:526 w ap 0 reg 12 R12 0x00000000
08:15:29:526 w ap 0 reg 13 SP 0x00000000
08:15:29:527 w ap 0 reg 14 LR 0x20000001
08:15:29:527 w ap 0 reg 15 PC 0x200017D1
08:15:29:528 w ap 0 reg 16 xPSR 0x01000000
08:15:29:528 w ap 0 reg 17 MSP 0x2000D9EC
08:15:29:529 w ap 0 reg 18 PSP 0x00000000
08:15:29:529 run ap 0
08:15:32:115 halt ap 0
08:15:32:116 r ap 0 reg 0 R0 0x00000001
08:15:32:116 erase: 3003ms
08:15:32:116 Download in Progress:
08:15:32:116 Size : 460096 Bytes
08:15:32:116 Address : 0x08000000
08:15:32:116
08:15:32:116 Buffer program...
08:15:32:119 halt ap 0
08:15:32:119 w ap 0 reg 15 PC (0x20000000)
08:15:32:119 w ap 0 reg 17 MSP (0x20000500)
08:15:32:120 w ap 0 reg 16 xPSR (0x01000000)
08:15:32:124 w ap 0 @0x20000C40 : 0x00000200 bytes, Data 0x00000000...
08:15:32:124 w ap 0 @0x20000000 : 0x00000004 bytes, Data 0x0000BE00...
08:15:32:137 w ap 0 @0x20000004 : 0x0000081C bytes, Data 0xB672B580...
08:15:32:138 Loader write range...
08:15:32:769 w ap 0 @0x20000C40 : 0x00017800 bytes, Data 0x20030000...
08:15:32:769 W B1 in RAM @0x20000C40 size 0x00017800 : 0631ms
08:15:32:769 Init flashloader...
08:15:32:770 halt ap 0
08:15:32:771 w ap 0 reg 0 R0 0x00000001
08:15:32:771 w ap 0 reg 1 R1 0x00000000
08:15:32:772 w ap 0 reg 2 R2 0x00000000
08:15:32:773 w ap 0 reg 3 R3 0x00000000
08:15:32:773 w ap 0 reg 4 R4 0x00000000
08:15:32:774 w ap 0 reg 5 R5 0x00000000
08:15:32:775 w ap 0 reg 6 R6 0x00000000
08:15:32:775 w ap 0 reg 7 R7 0x00000000
08:15:32:776 w ap 0 reg 8 R8 0x00000000
08:15:32:776 w ap 0 reg 9 R9 0x00000000
08:15:32:777 w ap 0 reg 10 R10 0x00000000
08:15:32:777 w ap 0 reg 11 R11 0x00000000
08:15:32:778 w ap 0 reg 12 R12 0x00000000
08:15:32:778 w ap 0 reg 13 SP 0x00000000
08:15:32:779 w ap 0 reg 14 LR 0x20000001
08:15:32:779 w ap 0 reg 15 PC 0x20000005
08:15:32:780 w ap 0 reg 16 xPSR 0x01000000
08:15:32:781 w ap 0 reg 17 MSP 0x20000C1C
08:15:32:781 w ap 0 reg 18 PSP 0x00000000
08:15:32:781 run ap 0
08:15:32:782 halt ap 0
08:15:32:782 r ap 0 reg 0 R0 0x00000001
08:15:32:783 w ap 0 reg 0 R0 0x08000000
08:15:32:784 w ap 0 reg 1 R1 0x00017800
08:15:32:784 w ap 0 reg 2 R2 0x20000C40
08:15:32:785 w ap 0 reg 3 R3 0x00000002
08:15:32:785 w ap 0 reg 4 R4 0x00000000
08:15:32:786 w ap 0 reg 5 R5 0x00000000
08:15:32:786 w ap 0 reg 6 R6 0x00000000
08:15:32:787 w ap 0 reg 7 R7 0x00000000
08:15:32:787 w ap 0 reg 8 R8 0x00000000
08:15:32:788 w ap 0 reg 9 R9 0x00000000
08:15:32:788 w ap 0 reg 10 R10 0x00000000
08:15:32:789 w ap 0 reg 11 R11 0x00000000
08:15:32:790 w ap 0 reg 12 R12 0x00000000
08:15:32:790 w ap 0 reg 13 SP 0x00000000
08:15:32:790 w ap 0 reg 14 LR 0x20000001
08:15:32:792 w ap 0 reg 15 PC 0x20000059
08:15:32:792 w ap 0 reg 16 xPSR 0x01000000
08:15:32:793 w ap 0 reg 17 MSP 0x20000C1C
08:15:32:794 w ap 0 reg 18 PSP 0x00000000
08:15:32:794 run ap 0
08:15:33:427 w ap 0 @0x20018440 : 0x00017800 bytes, Data 0x437FF043...
08:15:33:428 W B2 in RAM @0x20018440 size 0x00017800: 0658ms
08:15:33:428 r ap 0 reg 0 R0 0x00000001
08:15:33:428 Wait W B1 in Flash @0x08000000 size 0x00017800: 0000ms
08:15:34:068 w ap 0 @0x20000C40 : 0x00017800 bytes, Data 0x3708BF00...
08:15:34:068 W B1 in RAM @0x20000C40 size 0x00017800 : 0638ms
08:15:34:070 halt ap 0
08:15:34:070 w ap 0 reg 15 PC (0x20000000)
08:15:34:071 w ap 0 reg 17 MSP (0x20000500)
08:15:34:071 w ap 0 reg 16 xPSR (0x01000000)
08:15:34:072 Loader write range...
08:15:34:713 w ap 0 @0x20000C40 : 0x00017800 bytes, Data 0x20030000...
08:15:34:713 W B1 in RAM @0x20000C40 size 0x00017800 : 0641ms
08:15:34:714 halt ap 0
08:15:34:714 r ap 0 reg 0 R0 0x00017800
08:15:34:715
08:15:34:716 Error: failed to download Sector[0]
08:15:34:716 Error: failed to download the File
Can you help me understand what is happening?
Thank you all!
2025-06-03 11:48 PM
I would like to add that I splitted the .srec in internal and external and then executed the very same command twice, (one for the internal .srec and one for the external .srec), successfully flashing both.
So the problem shows up only when I flash the complete .srec