STM32CubeProgrammer 2.23.0: write to EDATA on STM32H5F4 reports success but writes nothing
Hello,
On an STM32H5F4, programming the EDATA (high-cycle data) area with STM32_Programmer_CLI -d finishes with "File download complete" and exit code 0, but nothing is written to flash. NB: The same procedure works on an STM32H573.
Environment
- STM32CubeProgrammer CLI v2.23.0 (Linux)
- Target: STM32H5F4 (DEV_ID 0x47A), product state Open (0xED)
- Probe: ST-LINK, SWD, mode=UR, reset=HWrst
- Option bytes: EDATA1_EN=1, EDATA1_STRT=7, EDATA2_EN=1, EDATA2_STRT=7 (last 8 sectors of each bank used as EDATA)
Steps to reproduce
- Enable EDATA on both banks:
STM32_Programmer_CLI -c port=SWD mode=UR reset=HWrst -ob EDATA1_EN=1 EDATA1_STRT=7 EDATA2_EN=1 EDATA2_STRT=7
- Confirm the target area is mapped and blank (it reads back without error as all 0xFF):
STM32_Programmer_CLI -c port=SWD mode=UR reset=HWrst -r32 0x09028800 0x10
- Program 16 bytes:
printf '\xA5\x5A\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E' > test.bin
STM32_Programmer_CLI -c port=SWD mode=UR reset=HWrst -vb 3 -d test.bin 0x09028800
- Read the area back:
STM32_Programmer_CLI -c port=SWD mode=UR reset=HWrst -r32 0x09028800 0x10
Expected result
The data is programmed and reads back as 02015AA5 ...
Actual result
The CLI reports success, but the read-back is still FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF.
The verbose log shows an erase step that does nothing (0 ms, no FLASH register access). The data is then written directly to the EDATA address over the debug port, without the flash program sequence (no unlock, no PG bit set in FLASH_NSCR):
Erasing Segment <0> Address <0x09028800> Size <16>Bytes
Memory Erase via Debugger!
erase: 0000ms
...
Programming via FlashLoader!
Buffer program...
w ap 1 @0x09028800 : 0x00000010 bytes, Data 0x02015AA5...
Sector[0] downloaded successfully
File download complete
Additional notes
- Our firmware programs and erases EDATA correctly on the same part through the HAL, so the hardware and option bytes are fine.
- The EDATA region (0x0900xxxx) does not appear in STM32_Prog_DB_0x47A.xml, so it seems not to be treated as flash for this device family.
- The silent success is the main concern: scripted production flows get exit code 0 and only catch the failure if they read the data back.
Questions
- Is EDATA programming via -d supported for STM32H5E4/H5E5/H5F4/H5F5 in v2.23.0? If not, is support planned?
- Is there a recommended workaround in the meantime?
Thank you.
