Trenz Electronic Products > UltraScale

Running a linux application when booting from QSPI flash.

(1/3) > >>


I am currently working with a TE0803 SoM and a TEBF0808 baseboard for some development work, however will soon be moving to a custom board which will not have an SD card (it will have qspi flash and eMMc memory). Therefore I am trying to boot from the QSPI flash.

I have been able to  program the qspi flash with a linux image created with Petalinux and boot this successfully, accessing it via a serial port. My boot image at this point consists of the following partitions in order:
- PMU firmware
- .bit file for PL
- ATF (bl31.elf)
- u-boot.elf
- image.ub
- boot.scr

Now I have built an application in vitis, that I would like to run on Linux, I have built the elf file for it (hello_world.elf), I would like to include it into my build so that it will run after linux has started up. How would I approach this? When booting from the SD card, I could include the hello_world.elf on the SD card and find it from linux. I tried to include hello_word.elf into my boot image after boot.scr, however did not see it run or was not able to find it on linux after it booted.


You must change PS setup form the ZynqMP IP, when you use the module on an carrier with other MIO configuration (other interfaces). And create new Vitis/Petalinux project with this XSA file. Otherwhise it can happens that FSBL stops booting in case some of the interfaces is not available.

When you use baremetal app, mostly only FSBL, bitstream, and app is needed. See BIF file of our reference designs for baremetal appl, for example(inlcuded in the prebuilt folder):

--- Code: ---/* bare-metal */
/*auto-generated on 2021/07/19 08:49:54 */
//arch = zynqmp; split = false; format = BIN
  [bootloader, destination_cpu= a53-0 ]../../../software/3eg_4gb/fsbl.elf
  [destination_device = pl]../../../hardware/3eg_4gb/test_board_3eg_4gb.bit
  [destination_cpu = a53-0]../../../software/3eg_4gb/hello_te0803.elf

--- End code ---

Hello RichardH,

I am attempting to do a similar thing as you ... namely boot from QSPI without the SD card.

It looks like you have been successful. If you have a few moments, can you share the steps you took to get there.

I have successfully created the test_board Reference design, built the petalinux project, and tried creating the BOOT.bin using the same files you list in your post. However, the board does not boot. It just hangs at power up with no messages on the UART.

Thanks much for your help.


you has uart on correct MIO (depends on your carrier)? Test board design use MIO like for TEBF0808 carrier. Which carrier did you use?
Boot mode is correct? Which did you select?
Does  Hello world boot?

Hi  Dave

Are you using Vitis to generate the BOOT.bin and program the device? Did you get any errors when programming the QSPI?
I pretty much followed the instruction here:
(modifying the parts that are board specific to work with the TEBF0808 carrier)

The Petalinux configuration also requires modification for when booting from QSPI, have a look here:


[0] Message Index

[#] Next page

Go to full version