Skip to main content
Associate II
February 16, 2026
Solved

STM32MP135F qspi nand boot and OTP configuration

  • February 16, 2026
  • 10 replies
  • 662 views

Hello ST team.

I am working on the boot chain from qspi NAND flash memory. The board is based on the STM32MP135F SOC and the w25n01gvzeig winbond 128MB IC. The IC is sitting on qspi bank 1 on the default BOOTROM pins (AN5474 p49).

I have already succeeded the bootchain for EMMC and USB uboot successfully locates and flashes the nand with the partitions I have specified. But as set the boot pins to 111 I get 0 logs from the serial.

By reading in the forum I suspect that the OTP should be programmed with the NAND layout configuration but I would like to be sure. Note the I have build tf-a with the STM32_SPI_NAND=1 on the extra flags and I get a boot log from NAND boot if i perform software reset from uboot usb.

With softreset and tfa hardcoded the otp value for nand block nb[7:0]:

STM32MP> reset
resetting ...
▒NOTICE: CPU: STM32MP135F Rev.Y
NOTICE: Model: STMicroelectronics custom STM32CubeMX board - openstlinux-6.6-yocto-scarthgap-mpu-v25.06.11
INFO: Reset reason (0x74):
INFO: System reset generated by MPU (MPSYSRST)
INFO: FCONF: Reading TB_FW firmware configuration file from: 0x2ffe0000
INFO: FCONF: Reading firmware configuration information for: stm32mp_fuse
INFO: FCONF: Reading firmware configuration information for: stm32mp_io
INFO: Using SPI NAND
INFO: Instance 1
INFO: Boot used partition fsbl1
INFO: OTP: value 0x00000000
NOTICE: BL2: v2.10-stm32mp1-r2.0(debug):()

...

optee optee: OP-TEE: revision 4.0 (2a5b1d12)

U-Boot 2023.10-stm32mp-r2 (Oct 02 2023 - 14:39:59 +0000)

CPU: STM32MP135F Rev.Y

 

Questions:

1) Is OTP configuration for my NAND missing, the reason i get not log at all on nand boot? the board switches to USB enum from the programmer on hardreset.

2) If it is OTP needed, I came to a value from (How to configure flash memory for TF-A BL2) wiki of:

OTP Word 9 : 0x80200000

 but since I can't use fuse override on reset and I don't want make the OTP misconfiguration permanent, I would like to know that the issue of no log at all is bootrom related and if it is the correct value the one i shared.

Regards,

Pantelis Patsaoglou, Dreamxlabs

Best answer by PatrickF

Hi @Patsaoglou ,

Could you try https://wiki.st.com/stm32mpu/wiki/STM32_MPU_ROM_trace_analyzer ?

Have you look to AN5474, in particular this line

"During SPI mode boot using SI/SO, some serial memories could use IO2 and IO3 pins as additional feature like HOLD. In order to make this kind of device able to boot, it might be necessary to set those pins to inactive level by adding external pull-ups or by defining internal pull-up during Boot using OTP."

 

Regards

10 replies

Associate II
February 17, 2026

Hello, 

I have programmed the OTP but still no boot. Tfa after warm reset from programming boots since the correct OTP value is read but on hardware reset no boot with boot=111.

 

Still looking for help:-)

Regards

PP

PatrickF
PatrickFBest answer
ST Employee
February 26, 2026

Hi @Patsaoglou ,

Could you try https://wiki.st.com/stm32mpu/wiki/STM32_MPU_ROM_trace_analyzer ?

Have you look to AN5474, in particular this line

"During SPI mode boot using SI/SO, some serial memories could use IO2 and IO3 pins as additional feature like HOLD. In order to make this kind of device able to boot, it might be necessary to set those pins to inactive level by adding external pull-ups or by defining internal pull-up during Boot using OTP."

 

Regards

In order to give better visibility on the answered topics, please click on 'Best Answer' on the reply which solved your issue or answered your question.Tip of the day: Try Sidekick STM32 AI agent
Associate II
February 26, 2026

Hi @PatrickF,

 

Thank you for the follow-up, I appreciate it! I will give it a hardware test and get back to you!

 

Kind regards,

PP

Associate II
February 24, 2026

Hello there,

Can someone give me a hand on the issue, since I have not found any other procedures in the documentation to try out.

 

Thank you

 

Kind regards 

PP

Associate II
February 26, 2026

Hi @PatrickF 

I have successfully booted from NAND by initially soldering 2 pullups, one for the nWP and one for the nHOLD noting that with a pullup only on nHOLD it does not boot. So I proceeded with the OTP value programming, configuring just the high speed pull-up and the proper mux for the QSPI bus:

 fuse override 0 5 0x4B95 4F95

 

Lastly I successfully booted without changing the bit[0] of word 3 for QSPI default mask flag.

 

Thank you very much for the help @PatrickF 

 

Kind Regards,

PP

Visitor
August 28, 2026

@Patsaoglou 

I am using STM32MP135DAE7 together with a Winbond W25N01GVZEIG 128 MB NAND Flash chip.
I have encountered the following issue: no logs are printed on the console when booting from NAND Flash, whereas Linux can boot successfully via USB boot.
After adding pull‑up resistors, the board can normally boot from NAND Flash without any modification to the OPT values.
However, TF‑A‑2.6 fails to start. Troubleshooting revealed that there is a conflict between some TF‑A configurations for NAND‑Flash boot and the single‑line SPI mode I am using.
The system booted successfully only after I modified the communication protocol settings for SPI and NAND Flash.
Relevant code snippets and images are provided below.


我使用的型号是:STM32MP135DAE7+w25n01gvzeig winbond 128MB
遇到了同样的问题,在使用 NAND FLASH 启动时 console 不打印任何日志,但 USB 启动时可以进去 linux 环境,
接上拉电阻后可以正常从 NAND FLASH 启动(但是我没有修改任何一个 OPT 值),但 TF-A-2.6 启动失败,排查问题后发现是 ,另外在通过 NAND FLASH 启动时,TF-A 的一些配置和我使用单线 SPI 有冲突,并修改了 SPI 和 NAND FLASH 的通信协议才顺利启动,下方是我提供的代码和图片

 


Associate II
August 28, 2026

These are my logs. I have set the boot pins to 111 to boot from serial qspi nand.

 

Add me on discord if you have to check it quick if you want: patsaoglou

And we will follow up with the fix here!

 

NOTICE:  CPU: STM32MP135F Rev.Y
NOTICE:  Model: STMicroelectronics custom STM32CubeMX board - openstlinux-6.6-yo                                     cto-scarthgap-mpu-v25.06.11
INFO:    Reset reason (0x35):
INFO:      Power-on Reset (rst_por)
INFO:    FCONF: Reading TB_FW firmware configuration file from: 0x2ffe0000
INFO:    FCONF: Reading firmware configuration information for: stm32mp_fuse
INFO:    FCONF: Reading firmware configuration information for: stm32mp_io
INFO:    Using SPI NAND
INFO:      Instance 1
INFO:    Boot used partition fsbl1
INFO:    OTP: value 0x80200000
NOTICE:  BL2: v2.10-stm32mp1-r2.0(debug):()
NOTICE:  BL2: Built : 19:32:32, Feb 17 2026
INFO:    BL2: Doing platform setup
INFO:    RAM: DDR3-DDR3L 16bits 400000kHz
 

Associate II
August 28, 2026

Hello,

As I remember, I have build tfa for spi-nand boot as i see from your print logs and i haven't modified anything on the source. Could you please send me the print logs in english to understand if i had similar issue?

I follow up booting my board from nand to check logs.

 

Best regards

PP