Trenz Electronic Products > UltraScale

Running a linux application when booting from QSPI flash.

<< < (2/3) > >>

Yes - Using Vitis to generate the BOOT.bin

Using Vivado HW manager to program
I don't get any errors when programming, but a warning about "not supporting QSPI32" - but is seems to work anyway
I have not modified the petalinux configuration, so most likely this is my problem.

I am so glad to have someone respond - Glad to know that someone has already gone down this road and been successful!
Once I get through those two pages you linked, I'll let you know how it goes.

Thanks much!


--- Quote --- warning about "not supporting QSPI32" -
--- End quote ---
that's strange can you share the whole log file?

--- Quote ---I have not modified the petalinux configuration, so most likely this is my problem.
--- End quote ---
In this case you should see minimums FSBL, FSBL is normaly the same for baremetal and linux.
You can get problems on PMU and  ATF firmware (but this works mostly), normally Uboot, in case you did not change file search location.
Which Vivado/Petalinux Version did you use?
Xilinx has changed flow with 2020.2 version, see also:


Hello again John and Richard,

Thank you again for your help.

I am currently trying to use Vivado 2021.2, Vitis 2021.2 and Petalinux 2021.2

Also using all the reference design files for 2021.2

I feel like I am making a little progress in understanding the steps to creating a BOOT.bin for booting from QSPI.
I have been following the instructions on the xilinx github page here:

However, when I get to the step of:
Select Subsystem AUTO Hardware Settings.
Under the advanced bootable images storage settings, do the following:

There is no option for me with "advanced bootable images storage settings"

After a bit of searching - it seems everyone else gets this option - I must be missing a step.

Do you know how to enable the "advanced bootable images storage settings" option in the configuration wizard?

Thanks again.

I don't know this tutorial and I know that Xilinx changed a little bit boot flow (from u-boot up to linux) since 2020.2 and newer --> see boot.scr link from me.
Boot barmetal hello World is the same for SD and QSP --> use the same boot.bin only change boot mode.
Linux in at the beginning the same (FSBL, PMU, ATF(BL31), Uboot). When you use the the same boot.bin which you use for SD Boot on QSPI, that it should start up to uboot and uboot try to search boot.scr and image.ub (in case you didn't split rootfs, kernel, device tree) on SD card. When you want to boot all from SD, than you must put everything on QSPI (easiest way put everything into the boot.bin).  But uboot still search on SD, so you must change this. Since 2020.2 Xilinx has used boot.scr for this purpose, so you must modify boot.scr to seach on correct place on the QSPI flash. Boot.scr is very new, as far as I know uboot search on different locations for boot.scr and a default boot.scr integrated, which looks everywhere for any sources. If you boot everything from QSPI you must change put your boot.scr on this place on QSPI where uboot search for boot.scr or change this location on petalinux (I'm currently not sure if basic petalinux config or uboot config)

Little alternative. TE0820 has USB, with boot.scr you can also put image.ub and boot.scr on USB, see:


Hello John and Richard,

I greatly appreciate your help on my project. After spending a considerable time with the tools and documentation (and with your advice), I was finally able to boot the test_board petalinux project entirely from QSPI.
There were several issues that needed to be addressed:

1) When working with Petalinux 2020 version - there were several broken files, and I could not get the petalinux project to build out-of-the-box. Many multiple definitions and missing references. I suspect that there is a difference in the older vs newer gcc libraries that was causing me grief.
In short, I was never able to build the test_board petalinux project under any circumstances using 2020 Vivado, Vitis and Petalinux with updated Ubuntu and packages.

2) My next problem was with the 2021 versions of everything. I was able to fully build everything for booting from SD - but could not get it to boot from QSPI.
The Xilinx instructions for modifying the process were unclear at best, and wrong in many instances when using 2021 versions of everything.

3) I managed to get the attention form someone at Xilinx, and he pointed me to this page:

This page replaces the instructions for building the petalinux project, and worked perfectly for me.

4) I also found one issue with the Trenz provided tools that tripped me up.
Specifically, when programming the QSPI with the Vivado HW manager, and selecting the option to "Update the Entire Device", the flash process consistently failed (using fsbl_flash.elf)
I chose this option because I wanted to erase the entire flash, but it looks like the fsbl flash elf does not do this. However, when selecting the option to update only the size of the configuration file, then the programming completed correctly.
I think there is a bug in the generated special fsbl flash elf that does not work correctly when attempting to erase the entire QSPI device. It stops erasing at 0x4000000 - which is not the entire device and not sufficient for the BOOT.bin file.
"sf erase 0 4000000"

Thank you again for your help.
Dave Rector


[0] Message Index

[#] Next page

[*] Previous page

Go to full version