I was able to try a few more Quartus version today and I am able to get the board to boot with a sof generated with 24.1 if I create the jic using 20.3.
Here a summary of what I've tried:
.sof compile version | quartus_pfg version | u-boot 2019.04 successful? | u-boot 2024.07 successful? |
19.4 | 19.1 | yes | |
19.4 | 19.4 | yes | yes |
19.4 | 20.3 | yes | yes |
19.4 | 21.1 | no | no |
19.4 | 22.1 | no | |
19.4 | 24.1 | no | no |
19.4 | 24.2 | no | |
19.4 | 24.3 | no | |
20.3 | 20.3 | yes | yes |
20.3 | 24.1 | no | no |
21.1 | 20.3 | yes | |
21.1 | 21.1 | no | |
24.1 | 20.3 | yes | yes |
24.1 | 24.1 | no | no |
24.1 | 24.2 | no | |
24.1 | 24.3 | no | |
I should reiterate that this is not the S10 development board. The GHRD files I have from Terasic are from Quartus 19.4. The other sof versions in the table I compiled after updating from the 19.4 version.
The 2019.04 u-boot is the one provided by Terasic with the board. The 2024.07 u-boot is compiled from the altera-opensource/u-boot-socfpga github at QPDS24.2_REL_GSRD_PR tag, following the steps for the S10 development board, except using the device tree provided by Terasic.
This appears to be related to quartus_pfg version used, as the boot results are the same regardless of u-boot version. I would think that the generate jic file should function essentially the same regardless of the Quartus version used. Maybe newer version have changes to the SDM control timing that is causing this issue?
On top of the new Quartus version, I've also tried switching to HPS first booting (board GHRD is FPGA first). I'm doing this with the 24.1 sof and creating the jic/rbf with 24.1 as well (which always fails boot with FPGA first). Now when it boots, it sometimes resets itself where it was hanging with FPGA first and then boots successfully:
U-Boot SPL 2024.07-36773-g0dad0a0a478-dirty (Mar 18 2025 - 15:06:18 -0400)
Reset state: Cold
MPU 1200000 kHz
L3 main 400000 kHz
Main VCO 2400000 kHz
Per VCO 2000000 kHz
EOSC1 25000 kHz
HPS MMC 50000 kHz
UART 100000 kHz
<Sometimes hangs here indefinitely, sometime hangs here for a few seconds and continues to below>
U-Boot SPL 2024.07-36773-g0dad0a0a478-dirty (Mar 18 2025 - 15:06:18 -0400)
Reset state: Cold
MPU 1200000 kHz
L3 main 400000 kHz
Main VCO 2400000 kHz
Per VCO 2000000 kHz
EOSC1 25000 kHz
HPS MMC 50000 kHz
UART 100000 kHz
DDR: 32768 MiB
SDRAM-ECC: Initialized success with 7879 ms
QSPI: Reference clock at 400000 kHz
... <boots succesfully if it makes it to here>
It almost always hangs indefinitely when the board has been off for more than 30 seconds, and it resets itself and boots successfully about 70% of the time if I power cycle the board quickly.
If I do the HPS first booting and use 20.3 to create the jic/rbf then it boots normally (no restart of the SPL during boot). This seems to indicate the timing of the boot is different with jic files generated with newer Quartus versions. Maybe the SDM is loading faster and DDR4 is not ready or something like that. Is there a way to delay u-boot at power up?