Post Go back to editing

Programming / Flashing a Blank Pluto Board


I am able to program the FPGA bitstream, but I am unable to program the flash. 

I keep getting an error saying:

"Problem in initializing hardware."

Steps Taken from the Vivado SDK:

1. Program FPGA bitstream using system_top.bit - this finishes and upon finishing, I can see that in addition to the power LED being on, now the user LED is on and solid as well. 

2. From there I short pin 5 of the jtag connector to ground and try to program flash with the following files:

 - u-boot.bin

 - u-boot.elf

The programmer tries to perform the flash but I end up getting the below error message and the user led turns off
"Problem in initializing hardware".

From my experimentation this far, If I try to program the flash without grounding the JTAG_Boot pin, I get an error saying that boot mode is QSPI and the flash programming never finishes. This makes sense. But when grounding the JTAG_Boot pin, I either get the above: "Problem in initializing hardware" or an error relating to failure of the blank check and/or verify after programming. 

"Flash programming initialization failed"

I know i am using the correct bit stream, but I am unsure of the correct files being used for the flash. To my understanding, What I am really trying to do is flash the FSBL so that I do not have to flash the bitstream for every power cycle. 

Is there a generalized step by step list of files that need to be used? my ultimate goal is to learn the process from starting with a "blank" pluto board and being able to get it up and going into it's default delivered state.

  • Please take a look at the content of the pluto-jtag-bootstrap files released with each release.

    It's important to initialize the PS in particular the clocks and the DDR memory. Otherwise you can't load uboot.

    This step is done my sourcing he ps7_init.tcl script and then running ps7_init and ps7_post_config.


    connect arm hw
    xreset 64

    source ps7_init.tcl

    dow u-boot.elf

    disconnect 64


  • Hello, thank you for the reply. 

    So the revised steps then, would be:

    1. Ground JTAG_BOOT pin, power on Pluto.

    2. Program bitstream

    3. Run TCL source described above. 

    I have followed these steps, taking care to specify the path to these files when running the commands in the TCL window within vivado. 

    I can program the bitstream just fine, meaning the connection to my SmartLynq seems to be working. 

    But when I run the TCL described in your initial reply, I can see that the TCL source is running but I get the following error. 

    "Error Occured"

    "Cable is not connected to the host."

    Likewise, If I run the command "connect arm hw" in the TCL console alone, I get the error: "Unknown Command"

    Why would vivado think that the cable is not connected properly if I was able to program the bitstream without an issue?

  • Seems like this could be an issue with a program called ISE from Xilinx?

Reply Children