Post Go back to editing

Programming / Flashing a Blank Pluto Board

Hello, 



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.

Parents Reply Children
  • Hello, Thank you for the reply.

    I have tried instead using the XSDB commands.

    Upon executing the "connect" command, I can see that the hardware sever is successfully connected to.

    "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:127.0.0.1:3121"

    I then use the "targets" command to list all available targets.

    The terminal replies with nothing.

    I did have an issue programming the bit-stream until i decreased the jtag frequency. I am wondering if there is a similar issue here.

    From there I went and referenced the Xilinx XSDB page for jtag commands and found the following here:

    Xilinx XMDB Commands

    If i use the "jtag targets" command, which is supposed to list available targets, the terminal also replies with nothing.

    It is odd because when trying to use the "jtag frequency -list" command, I receive from the terminal:

    "Invalid target. Use "jtag targets" command to select a target"

    I think this may be a jtag frequency issue as I am able to connect to the hw server but am not able to connect to the target once connected to the hw server.

    Any ideas on how to specify jtag frequency without first connecting to a target?

    According to the XSDB documentation, I should instead of using "connect arm hw" be using the two commands: "connect", then "targets" to list available targets, then "targets idcode" to connect to a specific target.

    Right now it seems like I cannot connect to the targets while using either xmd or xsdb.

  • Works for me - that's what I did:

    ****** Xilinx System Debugger (XSDB) v2018.2
      **** Build date : Jun 14 2018-20:18:43
        ** Copyright 1986-2018 Xilinx, Inc. All Rights Reserved.
    
    
    xsdb%                                                                                                                                                                                                       
    xsdb% connect                                                                                                                                                                                               
    tcfchan#0                                                                                                                                                                                                   
    xsdb% targets                                                                                                                                                                                               
    xsdb% targets                                                                                                                                                                                               
    xsdb% targets                                                                                                                                                                                               
    xsdb% Info: ARM Cortex-A9 MPCore #0 (target 2) Stopped at 0xffffff28 (Suspended)                                                                                                                            
    xsdb% Info: ARM Cortex-A9 MPCore #1 (target 3) Stopped at 0xffffff34 (Suspended)
    xsdb% targets                                                                                                                                                                                               
      1  APU
         2  ARM Cortex-A9 MPCore #0 (Suspended)
         3  ARM Cortex-A9 MPCore #1 (Suspended)
      4  xc7z010
    xsdb% targets 2                                                                                                                                                                                             
    xsdb% source build/ps7_init.tcl                                                                                                                                                                             
    xsdb% ps7_init                                                                                                                                                                                              
    xsdb% ps7_post_config                                                                                                                                                                                       
    xsdb% dow build/u-boot.elf                                                                                                                                                                                  
    Downloading Program -- /home/michael/devel/pluto/plutosdr-fw/build/u-boot.elf
    	section, .text: 0x04000000 - 0x0403f613
    	section, efi_runtime_text: 0x0403f614 - 0x0403f62b
    	section, .rodata: 0x0403f630 - 0x0404ef2c
    	section, .hash: 0x0404ef30 - 0x0404ef47
    	section, .dtb.init.rodata: 0x0404ef50 - 0x0405130f
    	section, .data: 0x04051310 - 0x04053537
    	section, .got.plt: 0x04053538 - 0x04053543
    	section, efi_runtime_data: 0x04053548 - 0x0405360f
    	section, .u_boot_list: 0x04053610 - 0x04054413
    	section, .rel.dyn: 0x04054414 - 0x0405ce73
    	section, .bss_start: 0x04054414 - 0x04054413
    	section, .bss: 0x04054414 - 0x040a4e53
    	section, .bss_end: 0x040a4e54 - 0x040a4e53
    100%    0MB   0.1MB/s  00:05                                                                                                                                                                                
    Setting PC to Program Start Address 0x04000000
    Successfully downloaded /home/michael/devel/pluto/plutosdr-fw/build/u-boot.elf
    xsdb% con                                                                                                                                                                                                   
    Info: ARM Cortex-A9 MPCore #0 (target 2) Running                                                                                                                                                            
    xsdb%                                                                                                                                                                                                       
    xsdb% 

  • 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:127.0.0.1:3121

    tcfchan#1
    xsct% targets
    xsct% targets
    xsct% targets
    xsct% targets
    xsct% targets
    xsct% targets
    xsct% "

    as well as:

    "disconnect
    xsct% Info: tcfchan#1 closed
    connect -url TCP:127.0.0.1:3121
    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.

    -Michael

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