cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Contributor
Contributor
1,440 Views
Registered: ‎07-22-2018

XFSBL_ERROR_BITSTREAM_LOAD_FAIL error with Zynq Ultrascale+ RFSoC

Jump to solution

Hello,

I'm trying to load an image from QSPI (dual parallel) on a custom board with a Zynq Ultrascale+ RFSoC FPGA on it and am getting the XFSBL_ERROR_BITSTREAM_LOAD_FAIL error message on the PS UART after POR.  The PL design simply sets some LEDs based on the locked state of a couple of MMCMs.  The boot image contains the FSBL.elf file set as bootloader, followed by the .bit file for the PL.  I have defined the FSBL_DEBUG_INFO symbol in the FSBL project settings.  The PS UART output after POR is:

 

Xilinx Zynq MP First Stage Boot Loader
Release 2018.3 Feb 26 2019 - 14:14:03
Reset Mode : System Reset
Platform: Silicon (4.0), Cluster ID 0x80000000
Running on A53-0 (64-bit) Processor, Device Name: XCZUUNKNEG
Processor Initialization Done
================= In Stage 2 ============
QSPI 32 bit Boot Mode
QSPI is in Dual Parallel connection
QSPI is using 4 bit bus
FlashID=0x1 0x2 0x20
SPANSION 512M Bits
Multiboot Reg : 0x0
QSPI Reading Src 0x0, Dest FFFF1C40, Length EC0
.Image Header Table Offset 0x8C0
QSPI Reading Src 0x8C0, Dest FFFDA150, Length 40
.*****Image Header Table Details********
Boot Gen Ver: 0x1020000
No of Partitions: 0x2
Partition Header Address: 0x440
Partition Present Device: 0x0
QSPI Reading Src 0x1100, Dest FFFDA190, Length 40
.QSPI Reading Src 0x1140, Dest FFFDA1D0, Length 40
.Initialization Success
======= In Stage 3, Partition No:1 =======
UnEncrypted data Length: 0x22BD0E
Data word offset: 0x22BD0E
Total Data word length: 0x22BD0E
Destination Load Address: 0xFFFFFFFF
Execution Address: 0x0
Data word offset: 0x76C0
Partition Attributes: 0x26
QSPI Reading Src 0x1DB00, Dest 100000, Length 8AF438
.Destination Device is PL, changing LoadAddress
Non authenticated Bitstream download to start now
DMA transfer done
XFSBL_ERROR_BITSTREAM_LOAD_FAIL
Partition 1 Load Failed, 0x37
================= In Stage Err ============
Fsbl Error Status: 0x0Xilinx Zynq MP First Stage Boot Loader
Release 2018.3 Feb 26 2019 - 14:14:03
Reset Mode : System Reset
Platform: Silicon (4.0), Cluster ID 0x80000000
Running on A53-0 (64-bit) Processor, Device Name: XCZUUNKNEG
Processor Initialization Done
================= In Stage 2 ============
QSPI 32 bit Boot Mode
QSPI is in Dual Parallel connection
QSPI is using 4 bit bus
FlashID=0x1 0x2 0x20
SPANSION 512M Bits
Multiboot Reg : 0x1000
QSPI Reading Src 0x8000000, Dest FFFF1C40, Length EC0
XFSBL_ERROR_QSPI_LENGTH
Device Copy Failed
Boot Device Initialization failed 0x19
================= In Stage Err ============
Fsbl Error Status: 0x0Xilinx Zynq MP First Stage Boot Loader
Release 2018.3 Feb 26 2019 - 14:14:03
Reset Mode : System Reset
Platform: Silicon (4.0), Cluster ID 0x80000000
Running on A53-0 (64-bit) Processor, Device Name: XCZUUNKNEG
Processor Initialization Done
================= In Stage 2 ============
QSPI 32 bit Boot Mode
QSPI is in Dual Parallel connection
QSPI is using 4 bit bus
FlashID=0x1 0x2 0x20
SPANSION 512M Bits
Multiboot Reg : 0x2000
QSPI Reading Src 0x10000000, Dest FFFF1C40, Length EC0
XFSBL_ERROR_QSPI_LENGTH
Device Copy Failed
Boot Device Initialization failed 0x19
================= In Stage Err ============
Fsbl Error Status: 0x0Xilinx Zynq MP First Stage Boot Loader
Release 2018.3 Feb 26 2019 - 14:14:03
Reset Mode : System Reset
Platform: Silicon (4.0), Cluster ID 0x80000000
Running on A53-0 (64-bit) Processor, Device Name: XCZUUNKNEG
Processor Initialization Done
================= In Stage 2 ============
QSPI 32 bit Boot Mode
QSPI is in Dual Parallel connection
QSPI is using 4 bit bus
FlashID=0x1 0x2 0x20
SPANSION 512M Bits
Multiboot Reg : 0x3000
QSPI Reading Src 0x18000000, Dest FFFF1C40, Length EC0
XFSBL_ERROR_QSPI_LENGTH
Device Copy Failed
Boot Device Initialization failed 0x19
================= In Stage Err ============
Fsbl Error Status: 0x0

 

Any idea what is causing the XFSBL_ERROR_BITSTREAM_LOAD_FAIL error?

Thanks!

0 Kudos
1 Solution

Accepted Solutions
Highlighted
Contributor
Contributor
1,386 Views
Registered: ‎07-22-2018

Re: XFSBL_ERROR_BITSTREAM_LOAD_FAIL error with Zynq Ultrascale+ RFSoC

Jump to solution

Thanks for your suggestion.  It got me heading in the right direction.  By loading via JTAG with FSBL and my app (Xilinx app mem_test), without any bit file, I was able to see that mem_test was trying to access two banks of 2GB each of PS DDR4 memory, and failing on the second bank.  The reference design from the vendor was set for 4GB of PS DDR4, which is the max they can populate on the board, but the default board ships with only 2GB of DDR4.  After fixing this, I was still getting errors and it turned out I needed to edit the linker script for my mem_test app to allow the app to access only part of the almost 2GB of DDR4.  i.e. I changed start addr 0x00000000 and size 0x7ff00000 to start address 0x70000000 and size 0x0ff00000.  After this, everything ran fine from QSPI with and without my bit file.  Thanks for your help!

View solution in original post

0 Kudos
2 Replies
Highlighted
Xilinx Employee
Xilinx Employee
1,424 Views
Registered: ‎10-11-2011

Re: XFSBL_ERROR_BITSTREAM_LOAD_FAIL error with Zynq Ultrascale+ RFSoC

Jump to solution

Can you program the same bitstream over JTAG? Does that work?

XFSBL_ERROR_BITSTREAM_LOAD_FAIL could indicate problems with the flash or the DDR (it temporary holds the bitsream).

-------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
Highlighted
Contributor
Contributor
1,387 Views
Registered: ‎07-22-2018

Re: XFSBL_ERROR_BITSTREAM_LOAD_FAIL error with Zynq Ultrascale+ RFSoC

Jump to solution

Thanks for your suggestion.  It got me heading in the right direction.  By loading via JTAG with FSBL and my app (Xilinx app mem_test), without any bit file, I was able to see that mem_test was trying to access two banks of 2GB each of PS DDR4 memory, and failing on the second bank.  The reference design from the vendor was set for 4GB of PS DDR4, which is the max they can populate on the board, but the default board ships with only 2GB of DDR4.  After fixing this, I was still getting errors and it turned out I needed to edit the linker script for my mem_test app to allow the app to access only part of the almost 2GB of DDR4.  i.e. I changed start addr 0x00000000 and size 0x7ff00000 to start address 0x70000000 and size 0x0ff00000.  After this, everything ran fine from QSPI with and without my bit file.  Thanks for your help!

View solution in original post

0 Kudos