Help sought with JTAG stuff to unbrick my Pluto please?

  • I have managed to brick my Pluto, dfu-util does not see it, and it's now in a state where just one LED is lit, and it's very dim.

    Analog Devices tech help forum suggestion (by an AD engineer) was that the only fix was using JTAG and I would need both the interface board from AD and a cable and dongle from Digilent (sp?).

    I purchased those and followed the instructions here after going through hoops to find and download a legacy version of Xilnx programming software that still supported the XMD Console.

    This stuff sees my Pluto and will communicate with it but I am now stuck at where I am below, is anyone familiar with Xinq programming here, that might be kind enough to assist please?

    I have come back to this after getting a headache and getting nowhere in the week ;)

    I seem close, but no cigars... I *THINK* it's trying to programme the wrong device or in the wrong order, but what do I know?

    I am finding on Google others have issues with forcing a target, but maybe I am way off course. Below I copy past the results of trying to run the run.tcl file AD supply in a zip with other files. I set the Xilinx workspace to C:/workspace and unzipped the supplied files in there, and before trying to run the run.tcl I ensured I was in the workspace directory. Does this give a clues as to what's gone wrong please? Even when the none running core is running the same happens. To get it running I have to power down the PlutoSDR and power it up again.


    ****** Xilinx System Debugger (XSDB) v2014.1

    **** Build date : Apr 4 2014-14:07:09

    ** Copyright 1986-2014 Xilinx, Inc. All Rights Reserved.

    Got $XILINX_SDK: C:/XilinxSDK/SDK/2014.1

    xsdb% connect -host localhost -port 3121 tcfchan#0


    xsdb% targets

    1 xc7z010

    2 APU

    3 ARM Cortex-A9 MPCore #0 (Stopped: Suspended)

    4 ARM Cortex-A9 MPCore #1 (Running)

    xsdb% target 1

    xsdb% targets

    1* xc7z010

    2 APU

    3 ARM Cortex-A9 MPCore #0 (Stopped: Suspended)

    4 ARM Cortex-A9 MPCore #1 (Running)

    xsdb% cd C:/workspace

    xsdb% dir

    Volume in drive C has no label.

    Volume Serial Number is D080-C2AD

    Directory of C:\workspace

    11/06/2022 09:50 <DIR> .

    11/06/2022 09:50 <DIR> ..

    10/06/2022 10:31 <DIR> .metadata

    20/08/2021 13:12 31,486 ps7_init.tcl

    10/06/2022 12:28 <DIR> RemoteSystemsTempFiles

    03/03/2017 08:56 257 run.tcl

    11/06/2022 10:11 567 SDK.log

    20/08/2021 13:12 964,144 system_top.bit

    20/08/2021 13:13 448,084 u-boot.elf

    5 File(s) 1,444,538 bytes

    4 Dir(s) 422,109,966,336 bytes free

    xsdb% xmd source -tcl run.tcl

    ****** Xilinx Microprocessor Debugger (XMD) EngineExecuting user script : run.tcl

    JTAG chain configuration


    Device ID Code IR Length Part Name

    1 4ba00477 4 arm_dap

    2 13722093 6 xc7z010


    Enabling extended memory access checks for Zynq.

    Writes to reserved memory are not permitted and reads return 0.

    To disable this feature, run "debugconfig -memory_access_check disable".


    CortexA9 Processor Configuration



    User ID.............................0x00000000

    No of PC Breakpoints................6

    No of Addr/Data Watchpoints.........4

    Connected to "arm" target. id = 64

    Starting GDB server for "arm" target (id = 64) at TCP port no 1234

    Processor stopped

    Error Executing User Script : run.tcl

    Error :: ERROR: No Elf file associated with target

    ****** XMD v2014.1 (64-bit)

    **** SW Build 881834 on Fri Apr 4 14:06:19 MDT 2014

    ** Copyright 1986-2014 Xilinx, Inc. All Rights Reserved.



  • It was a bug in the Xilinx software. I will try and write up the procedure, meanwhile, if anyone is desperate to use JTAG to bring a dead Pluto back to life I would happily talk it through on the phone, my e-mail is good on QRZ. you will NEED:

    A Digilent HS3 JTAG programmer, (some discounted ones on UK Ebay at the moment, which is where I got mine).

    An Analog Devices JTAG board, which SHOULD come with a ten way set of male to male pins to fit the small spacing holes in the Pluto PCB. Mine did not, they are hard to find without incurring a lot of handling and postage fees here in the UK. I soldered 1/8 Watt through hole resistor lead wires to the PCB and trimmed them to an equal height. The right pin "thing" would make it a LOT easier. You also need to sign up at Xilinx to get the software, and a free licence. Joining the Secret Service is probably easier and quicker... :)

    See my first post for a link to the procedure, which needs modifying.

    I will write it up, but have lost the best part of two days with the thing, so need to catch up with work. I tend to dig in when I get near to success, even if the time / cost elements are getting suspect.

  • You need to replace a file in Xilinx that's incorrect.

    It's xmdterm.tcl

    I have it on my server at:

    Save it as a pure text file

    I can't remember exactly where in Xilinx it is, so you will have to do a search for it. Rename the existing file to something like xmderm.tcl_old and put the new one in its place.

    Hopefully that will fix things if you are using the older version of Xilinx that I did, as shown earlier in the thread.

    IMHO Xilinx is a buggy as hell and keeping up with fixes would be a full time job <LOL>

    It was such a nightmare just buying a new Pluto would be best for my sanity if I had the same problems again :)

    Good luck!!