Agilex 5 Multiboot SPL Fails to Probe QSPI
Dear all,
I'm trying to activate the RSU Multiboot feature. Unfortunately it seems like the SPL can not probe the QSPI flash.
So far I've been able to access QSPI from U-Boot and Linux.
My set up:
- Quartus 25.1.1
- Based on QPDS25.1_REL_GSRD_PR
- HPS First
- QSPI Ownership is HPS
- U-Boot proper is stored on FAT partitions.
Here is the console output:
U-Boot SPL 2025.01-gcd3a9044d661-dirty (Jan 29 2026 - 16:45:35 +0000)
Reset state: Cold
MPU 1250000 kHz
L4 Main 400000 kHz
L4 sys free 100000 kHz
L4 MP 200000 kHz
L4 SP 100000 kHz
SDMMC 50000 kHz
is_ddr_csr_clkgen_locked: ddr csr io96b_0 clkgenA is successfully locked
io96b_cal_status: Calibration for IO96B instance 0x18400400 done at 0 msec!
init_mem_cal: Initial DDR calibration IO96B_0 succeed
DDR: Calibration success
io96b_mb_init: num_instance 1
io96b_mb_init: get memory interface IO96B 0
io96b_mb_init: IO96B 0 mem_interface 0: ip_type_ret: 0x1
io96b_mb_init: IO96B 0 mem_interface 0: instance_id_ret: 0x0
io96b_mb_init: IO96B 0: num_mem_interface: 0x1
DDR4: 2048 MiB
ecc_enable_status: ECC enable status: 0
DDR: size check success
DDR: firewall init success
DDR: init success
QSPI: Reference clock at 500000 kHz
WDT: Started watchdog@10d00200 with servicing every 1000ms (11s timeout)
Trying to boot from MMC1
RSU: Error - spi_flash_probe failed!
ERROR: could not find u-boot proper(SSBL): SSBL.@xx!
And here is the relevant dts section:
&qspi {
status = "okay";
flash0: flash@0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "micron,mt25qu256a", "jedec,spi-nor";
reg = <0>;
spi-max-frequency = <6250000>;
m25p,fast-read;
cdns,page-size = <256>;
cdns,block-size = <16>;
cdns,read-delay = <2>;
cdns,tshsl-ns = <50>;
cdns,tsd2d-ns = <50>;
cdns,tchsh-ns = <4>;
cdns,tslch-ns = <4>;
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "Boot and fpga data";
reg = <0x00a10000 0x015f0000>;
phandle = <0x53>;
};
};
};
};
Kind Regards,
Eric Opitz
Dear all,
I was able to find a solution to this issue. Apparently my defconfig was the culprit as it was based on an older QPDS version. Adding the defconfig entries from the QPDS25.1 solved the problem. The Active Serial Clock speed was not the issue and I left it at the QPDS25.1 default (125 MHz).
Here are the changes to my defconfig. I don't know which change solved the issue:
Removed:
CONFIG_SYS_MALLOC_F_LEN=0x2000
CONFIG_NR_DRAM_BANKS=1
CONFIG_ENV_OFFSET=0x04100000
CONFIG_TARGET_SOCFPGA_AGILEX5_SIMICS=y
CONFIG_CMD_SF=y
CONFIG_DOS_PARTITION=y
CONFIG_SPL_DOS_PARTITION=y
CONFIG_CMD_NAND=n
CONFIG_CMD_NAND_TRIMFFS=n
CONFIG_CMD_NAND_LOCK_UNLOCK=n
CONFIG_SPL_MTD_SUPPORT=y
CONFIG_CMD_UBIFS=n
CONFIG_MTD_UBI=n
CONFIG_MTD_UBI_WL_THRESHOLD=4096
CONFIG_MTD_UBI_BEB_LIMIT=20
CONFIG_ENV_IS_IN_UBI=n
CONFIG_FPGA_INTEL_PR=y
CONFIG_MTD=y
CONFIG_SYS_NAND_U_BOOT_LOCATIONS=n
CONFIG_UBI_SILENCE_MSG=n
CONFIG_DM_ETH=y
CONFIG_UBIFS_SILENCE_MSG=y
CONFIG_SPL_STACK=0x73000
CONFIG_MTD_RAW_NAND=n
CONFIG_SPL_NAND_SUPPORT=n
CONFIG_SPL_NAND_FRAMEWORK=n
CONFIG_NAND_BOOT=n
CONFIG_NAND_DENALI_DT=n
CONFIG_HUSH_PARSER=y
CONFIG_SYS_PROMPT_HUSH_PS2="> "
CONFIG_CMD_FS_GENERIC=y
CONFIG_CMD_PART=y
CONFIG_LZO=y
CONFIG_CMD_DHCP=y
CONFIG_SPI_FLASH_MACRONIX=y
CONFIG_SPI_FLASH_GIGADEVICE=y
CONFIG_SPI_FLASH_WINBOND=y
CONFIG_SPI_FLASH_ISSI=yAdded:
CONFIG_NR_DRAM_BANKS=3
CONFIG_CMD_NAND_TRIMFFS=y
CONFIG_CMD_NAND_LOCK_UNLOCK=y
CONFIG_ENV_IS_IN_UBI=n
CONFIG_USE_BOOTFILE=y
CONFIG_BOOTFILE="kernel.itb"
CONFIG_SYS_NAND_U_BOOT_LOCATIONS=y
CONFIG_SPL_MTD=y
CONFIG_USB_HUB_DEBOUNCE_TIMEOUT=3000
CONFIG_SPL_STACK=0x71000
CONFIG_MTD_RAW_NAND=y
CONFIG_SPL_NAND_SUPPORT=y
CONFIG_SPL_NAND_FRAMEWORK=y
CONFIG_BLOBLIST=y
CONFIG_BLOBLIST_SIZE=0x1000
CONFIG_BLOBLIST_ADDR=0x72000
CONFIG_HANDOFF=yI took your advice and added some log messages to u-boot:
- I tested this on the arrow dev kit
- I used version QPDS25.1
- I activated multiboot and set QSPI Ownership to HPS
- I added some debug messagesFrom the log you can see that the speed is retrieved from the SDM and this value is used in cadence_spi_probe(). But afterwards there are two more calls to cadence_spi_set_speed() with 100 MHz (probably from dts) and 1 MHz (probably from CONFIG_SF_DEFAULT_SPEED) respectively. Therefore I think the actual speed is 1 MHz. Perhaps you can verify this and adapt the log message "QSPI: Reference clock at 500000 kHz".
is_ddr_csr_clkgen_locked: ddr csr io96b_0 clkgenA is successfully locked
io96b_cal_status: Calibration for IO96B instance 0x18400400 done at 0 msec!
init_mem_cal: Initial DDR calibration IO96B_0 succeed
DDR: Calibration success
io96b_mb_init: num_instance 1
io96b_mb_init: get memory interface IO96B 0
io96b_mb_init: IO96B 0 mem_interface 0: ip_type_ret: 0x1
io96b_mb_init: IO96B 0 mem_interface 0: instance_id_ret: 0x0
io96b_mb_init: IO96B 0: num_mem_interface: 0x1
LPDDR4: 1024 MiB
ecc_enable_status: ECC enable status: 0
DDR: size check success
DDR: firewall init success
DDR: init success
QSPI: Reference clock at 500000 kHz
Bloblist at 72000 not found (err=-2)
WDT: Not starting watchdog@10d00200
Trying to boot from MMC1
get_spl_slot
spi_flash_probe
CONFIG_SF_DEFAULT_BUS. 0
CONFIG_SF_DEFAULT_CS. 0
CONFIG_SF_DEFAULT_SPEED. 1000000
CONFIG_SF_DEFAULT_MODE. 8195
cadence_spi_probe
priv->ref_clk_hz = 500000000
cadence_spi_probe - return
cadence_spi_set_speed
hz = 100000000
cadence_spi_set_speed - return
cadence_spi_set_speed
hz = 1000000
cadence_spi_set_speed - return
RSU current image: 0x01000000
RSU state: 0x00000000
RSU error location: 0x00000000
RSU error details: 0x00000000
RSU: Partition 'BOOT_INFO' start=0x00000000 length=0x00210000
RSU: Partition 'FACTORY_IMAGE' start=0x00210000 length=0x00800000
RSU: Partition 'image1' start=0x01000000 length=0x00800000
RSU: Partition 'image2' start=0x01800000 length=0x00800000
RSU: Partition 'SPT0' start=0x00a10000 length=0x00008000
RSU: Partition 'SPT1' start=0x00a18000 length=0x00008000
RSU: Partition 'CPB0' start=0x00a20000 length=0x00008000
RSU: Partition 'CPB1' start=0x00a28000 length=0x00008000
get_spl_slot - return
rsu_spl_mmc_filename, filename: u-boot_image1.itb
spl_mmc_load_image: Boot from filename: u-boot_image1.itb
spl_load_image_fat: error reading image u-boot_image1.itb, err - -5
SPL: failed to boot from all boot devices
### ERROR ### Please RESET the board ###Kind Regards,
Eric Opitz