STM32N647 Rev B, OTP124 write hangs via CubeProgrammer 2.23, Status shows Invalid afterwards.
Hi all,
I'm bringing up a custom board with an STM32N647I0H3Q (Rev B, device ID 0x486)
and cannot program the HSLV_VDDIO3 fuse (OTP124 bit 15) needed for the
MX25UM51245G octal NOR on XSPIM port 2 at 1.8 V.
Setup
- STM32N647I0H3Q Rev B, custom board
- VDDIO3 and flash VCC measured at 1.8 V, VDD/VDDIO4 at 3.3 V
- BOOT1 pulled high
- ST-LINK V3MINIE, SWD 200 kHz, Hot plug, AP1
- STM32CubeProgrammer v2.23.0 (GUI and CLI)
Symptoms
1. External loader MX25UM51245G_STM32N6570-NUCLEO: read at 0x70000000
hangs at 0% / "Data read failed"; programming fails with
"failed to download Sector[0]" (expected while HSLV_VDDIO3 = 0).
2. GUI OTP panel: entering OTP124 = 0x00008000 + Apply -> value returns
to 0x00000000.
3. CLI: STM32_Programmer_CLI -c port=swd mode=HOTPLUG
-otp write word=124 value=0x00008000
hangs for >3 minutes (killed). Afterwards -otp displ word=124 shows
Data124 = 0x00000000, Status124 = 0x00000001 ("Invalid").
After a power cycle: Data124 = 0x00000000, Status124 = 0x00000000.
BSEC registers read over SWD (after the failed write, before power cycle)
- BSEC_SR = 0x3400FF00 (NVSTATE = 0x0D, CLOSED)
- BSEC_OTPSR = 0x00000012 (INIT_DONE, OTPNVIR; no BUSY, no PROGFAIL)
- BSEC_SPLOCK0..3 = 0xFFFFFFFF (sticky program lock on words 0..127)
- BSEC_HDPLSR = 0x00000051 (HDPL1)
- [after a fresh power cycle: SPLOCK3 = ........ ]
Questions
1. Who sets SPLOCK on words 0..127 in development boot , the boot ROM or
the CubeProgrammer OTP loader? Is there a sequence in which OTP124 is
programmable over SWD on a CLOSED device?
2. Is programming HCONF1 (OTP124) supported through CubeProgrammer on the
STM32N647, or must it be done from FSBL code at HDPL1?
3. Is a hang (instead of an error) of "-otp write" a known issue in
v2.23.0?
Thanks!
