AR# 69240

Zynq UltraScale+ MPSoC Example Design: How to program and boot from QSPI x1 (MOSI-MISO)?


This Xilinx Answer describes the required step to program/boot from a board with QSPI wired in x1 (legacy MOSI-MISO) to a Zynq UltraScale+ MPSoC device.

Note: An Example Design is an answer record that provides technical tips to test a specific functionality on Zynq devices.

A tip can be a snippet of code, a snapshot, a diagram or a full design implemented with a specific version of the Xilinx tools.

It is up to the user to "update" these tips to future Xilinx tools releases and to "modify" the Example Design to fulfill his needs.

Limited support is provided by Xilinx on these Example Designs.

Implementation Details
Design TypePS Only
SW TypeFSBL, u-boot
PS FeaturesQSPI in x1 mode (legacy MOSI-MISO)
PL CoresNone
Xilinx Tools Version2017.1


This article covers the main changes you will need to make in order to use the QSPI wired in x1.

Vivado Processing System IP

Below is a snapshot of the configuration used in Vivado to operate the QSPI in x1 (legacy MOSI-MISO). 

Note DQ0 is MOSI, DQ1 is MISO.



The command used to load the various partitions needs to be a x1 READ command.

Depending on the boot mode (QSPI24 or QSPI32) the proper initialization function needs to be updated.

For QSPI24:

In XFsbl_Qspi24Init(), change to the following:

ReadCommand = FAST_READ_CMD_24BIT;

For QSPI32:

In XFsbl_Qspi32Init(), change to the following:

ReadCommand = FAST_READ_CMD_32BIT;


The DTS node related to QSPI needs to be modified to operate in QSPI single x1.

Below are the key attribute modifications:

&qspi {
is-dual = <0>;

flash@0 {


spi-tx-bus-width = <1>;

spi-rx-bus-width = <1>;




Flash Programming:

After the BOOT.bin is created following the standard flow, it can be programmed to the QSPI by following the steps in (Xilinx Answer 68657) How to use u-boot to program a "known to work" QSPI flash?

Remembere to use the FSBL.elf and u-boot.elf specifically generated for the QSPI x1 configuration.

Boot from flash:

Select the appropriate boot mode (QSPI24 or QSPI32) and power up the board.

It is important to know that the CSU ROM will always try to boot in the most efficient way, trying to read the QSPI in x4 first.

If this is NOT successful than it will try x1. 

Later in the flow, the FSBL generated above will load the partitions in QSPI x1.

AR# 69240
日期 08/21/2017
状态 Active
Type 综合文章