Attention: For security reasons,please choose a user name *different* from your login name.
Also make sure to choose a secure password and change it regularly.

Main Menu

Program QSPI flash from Vitis Failed

Started by Deepak, February 05, 2021, 11:58:15 AM

Previous topic - Next topic



I use TE0726-03M board (Zynq 7000 series SOC). I programmed the QSPI flash with wrong BOOT.bin file to the qspi flash using Vitis (2019.2) and now uboot is not loading. There is only a blank screen when i connect to the board with putty and the green light on the board is always on. The board does not support direct boot from SD-card. I have to do the initial boot from flash. I am not sure how to boot from JTAG since there is no jumpers on the board. (if its possible)

Now I am not able to reprogram the QSPI flash again with the correct BOOT.bin and fsbl.elf files.

Could anyone please help me on how to erase my QSPI flash and reprogram it. 

Here is the error log from Vitis:

****** Xilinx Program Flash
****** Program Flash v2019.2 (64-bit)
**** SW Build 2708876 on Wed Nov 6 21:39:14 MST 2019
** Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.

Connected to hw_server @ TCP:
Available targets and devices:
Target 0 : jsn-JTAG-ONB4-251633000000A
Device 0: jsn-JTAG-ONB4-251633000000A-4ba00477-0

Retrieving Flash info...

Initialization done, programming the memory
Using default mini u-boot image file - /home/deepak/Softwares/xilinx/Vitis/2019.2/data/xicom/cfgmem/uboot/zynq_qspi_x4_single.bin
===== mrd->addr=0xF800025C, data=0x00000001 =====
BOOT_MODE REG = 0x00000001
WARNING: [Xicom 50-100] The current boot mode is QSPI.
If flash programming fails, configure device for JTAG boot mode and try again.
===== mrd->addr=0xF8007080, data=0x30800100 =====
===== mrd->addr=0xF8000B18, data=0x00000000 =====
Downloading FSBL...
Running FSBL...
Finished running FSBL.
===== mrd->addr=0xF8000110, data=0x00177EA0 =====
READ: ARM_PLL_CFG (0xF8000110) = 0x00177EA0
===== mrd->addr=0xF8000100, data=0x0001A008 =====
READ: ARM_PLL_CTRL (0xF8000100) = 0x0001A008
===== mrd->addr=0xF8000120, data=0x1F000400 =====
READ: ARM_CLK_CTRL (0xF8000120) = 0x1F000400
===== mrd->addr=0xF8000118, data=0x00177EA0 =====
READ: IO_PLL_CFG (0xF8000118) = 0x00177EA0
===== mrd->addr=0xF8000108, data=0x0001A008 =====
READ: IO_PLL_CTRL (0xF8000108) = 0x0001A008
Info: Remapping 256KB of on-chip-memory RAM memory to 0xFFFC0000.
===== mrd->addr=0xF8000008, data=0x00000000 =====
===== mwr->addr=0xF8000008, data=0x0000DF0D =====
MASKWRITE: addr=0xF8000008, mask=0x0000FFFF, newData=0x0000DF0D
===== mwr->addr=0xF8000910, data=0x000001FF =====
===== mrd->addr=0xF8000004, data=0x00000000 =====
===== mwr->addr=0xF8000004, data=0x0000767B =====
MASKWRITE: addr=0xF8000004, mask=0x0000FFFF, newData=0x0000767B

U-Boot 2019.01-00203-g2229398 (Aug 26 2019 - 04:42:15 -0600)

Model: Zynq CSE QSPI SINGLE Board
DRAM: 256 KiB
WARNING: Caches not enabled
In: dcc
Out: dcc
Err: dcc
Zynq> sf probe 0 0 0

Warning: SPI speed fallback to 100 kHz
SF: unrecognized JEDEC id bytes: ff, ff, 00
Failed to initialize SPI flash at 0:0 (error -2)
Zynq> ERROR: [Xicom 50-186] Error while detecting SPI flash device - unrecognized JEDEC id bytes: ff, ff, 00
Problem in running uboot
Flash programming initialization failed.

ERROR: Flash Operation Failed



There are some new issues with 19.x and newer.
Please check solutions with different Vivado versions:

PS: We have 2019.2 reference designs online:



Thanks for the reply.
I managed to resolve the issue by programming the flash with <reference_design>/zynqberrydemo2/prebuilt/software/m_512MB/fsbl_flash.elf file. Now i am able to flash my BOOT.BIN and able to start u-boot


DeePak - You rock!!! I was having exactly the same issue. Just to add on, here are the steps I took after reading your post:

  • I downloaded the following reference design pre-built for the TE0745 2018.2 (I am using Vivado 2018.3):
    - Downloaded
    - My board is a TE0745-02-93E11-A == 45_3e_1gb
  • I then used the SDK Xinilx Tools --> Create Boot Image and built the following .mcs file:
    - test_board\prebuilt\boot_images\45_3e\hello_te0745\boot.bif
    - test_board\prebuilt\software\45_3e\zynq_fsbl_flash.elf
    - test_board\prebuilt\hardware\45_3e\test_board.bit
    - test_board\prebuilt\software\45_3e\hello_te0745.elf
    and flashed the file using SDK Xilinx Tools --> Program Flash and calling the .mcs file & zynq_fsbl_flash.elf. It worked!!!
  • After that I was able to update the flash using my original .mcs & fsbl.elf file