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.

  • I have tried to replicate your terminal output in both Vivado 2017.4 and 2018.2 and in both situations I get stuck at the targets command

    "xsct% connect
    attempting to launch hw_server

    ****** Xilinx hw_server v2017.4
      **** Build date : Dec 15 2017-21:02:11
        ** Copyright 1986-2017 Xilinx, Inc. All Rights Reserved.

    INFO: hw_server application started
    INFO: Use Ctrl-C to exit hw_server application

    INFO: To connect to this hw_server instance use url: TCP:

    xsct% targets
    xsct% targets
    xsct% targets
    xsct% targets
    xsct% targets
    xsct% targets
    xsct% "

    as well as:

    xsct% Info: tcfchan#1 closed
    connect -url TCP:
    xsct% tcfchan#2
    xsct% targets
    xsct% targets
    xsct% targets
    xsct% targets
    xsct% "

    On my smart lynq, I have all the jtag connections made except for the "SRSTn". Vref, GND, TDI, TDO, TCK and TMS are all connected. And I am able to at least program the bitstream.

  • I'm using -

    Xilinx Platform USB Cable II in conjunction with the ADALM-JTAGUART adapter.

    I also installed the Xilinx cable drivers.


  • The platform cable 1 seems to be considerable cheaper than the platform cable 2, do you suppose the platform cable 1 should work?

  • Hello, I was able to figure out my issues. I can now use the run.tcl file to program the bitstream, source the ps7_init tcl and download uboot.elf

    After the disconnect 64 command, the ready LED turns off and the LED1 LED turns on bright and solid. 

    After doing this step, what is the next step in order to fully program the pluto board?

  • Can some one provide any clarification on this? 

    I am just looking for some general/high level steps / procedures for flashing and programming the Pluto board. 

    From what I understand, there is the bitstream, then the ps7_init tcl, then the u boot. This all needs to be put into flash, so that the fpga can be loaded upon power on. 

    What is the process for loading linux/ libiio?

  • Sorry for the delay - many people are still out for the holidays, and will be back on Monday.

  • Once you have bootstrapped uboot via JTAG. You should see it's command line interface on the uart console.

    The next step would be to DFU (boot.dfu) your initial uboot.

    $ sudo dfu-util -D boot.dfu -a boot.dfu

    But be aware in case you are still in JTAG boot mode, SPI access to NOR flash will fail until you remove the bootmode jumper.

    Once you have your initial u-boot in flash, please continue using DFU to load kernel and userspace 

    $ sudo dfu-util -D pluto.dfu -a firmware.dfu


  • Thank you for the reply, 

    For clarity, I will re-list my steps and provide the output of those steps. 

    1. Power on Pluto with JTAG_BOOT pin grounded, after power on, remove ground. 

    2. Run JTAG Bootstrap TCL

      - Programs bitstream

      - Runs ps7_init and ps7_post_config

      - Downloads u-boot

    3. At this point when the TCL is finished running from Vivado SDK, I can see the following output from the Pluto Uart

    U-Boot PlutoSDR v0.20-PlutoSDR-00051-gf5f001e (Oct 15 2018 - 20:38:02 +0200)
    I2C:   ready
    DRAM:  ECC disabled 512 MiB
    SF: Detected N25Q256A with page size 256 Bytes, erase size 4 KiB, total 32 MiB
    *** Warning - bad CRC, using default environment
    In:    serial@e0001000
    Out:   serial@e0001000
    Err:   serial@e0001000
    Model: Zynq Pluto SDR Board
    Hit any key to stop autoboot:  0
    Booting silently
    BOOT failed entering DFU mode ...
    SF: Locked
    gpio: pin 15 (gpio 15) value is 1
    Entering DFU SF mode ...

    If I try this again, but interrupt the autoboot,

    Hit any key to stop autoboot:  0

    I am presented with a Pluto Terminal 


    Can you verify that I am following these steps correctly?

  • In addition, when trying to use the first command provided,

    $ sudo dfu-util -D boot.dfu -a boot.dfu

    I get the following output on the terminal. I am using Admin cmd on windows with dfu-util installed. 

    C:\Users\KevinE\Desktop\dfu-util\dfu-util-0.9-win64>C:\Users\KevinE\Desktop\dfu-util\dfu-util-0.9-win64\dfu-util.exe -D C:\Users\KevinE\Desktop\dfu-util\dfu-util-0.9-win64\boot.dfu -a C:\Users\KevinE\Desktop\dfu-util\dfu-util-0.9-win64\boot.dfu
    dfu-util 0.9

    Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
    Copyright 2010-2016 Tormod Volden and Stefan Schmidt
    This program is Free Software and has ABSOLUTELY NO WARRANTY

    Match vendor ID from file: 0456
    Match product ID from file: b673
    No DFU capable USB device available


    I can also see in my device manager that there is a new USB device labeled "USB Download gadget" and under properties of this device, it says that it is a Pluto SDR DFU

  • Try:

    dfu-util.exe -d 0456:b673,0456:b674 -D C:\Users\KevinE\Desktop\dfu-util\dfu-util-0.9-win64\boot.dfu -a boot.dfu

    If this doesn't work try to use the dfu-util deployed with the windows driver.