AR# 58584

2013.3 / 2013.4 /14.7 SDK, iMPACT, Zynq-7000 - Indirect Flash program does not work with multiple Zynq devices on JTAG chain


There are multiple Zynq devices on the JTAG chain. 

Indirect Flash program from iMPACT and SDK works only for the first Zynq device on the JTAG chain.

How do I program Flash on the other Zynq devices?


If all Zynq devices are connected to each other in cascaded JTAG mode, change it to independent JTAG mode for the Zynq devices other than the target device.

For example, if there are three Zynq devices on the JTAG chain and you are programming Flash via the third device:

[ARM DAP#1] -> [PL TAP#1] -> [ARM DAP#2] -> [PL TAP#2] -> [ARM DAP#3] -> [PL TAP#3]

Change the first and second device to the independent JTAG mode:

[PL TAP#1] -> [PL TAP#2] -> [ARM DAP#3] -> [PL TAP#3]

This issue will be fixed in the 2014.1 version of the tools.

To work around this issue until then, please follow the steps below:

Note: This solution assumes that 2013.4 tool are used and the patch in (Xilinx Answer 59896) has been applied.

This solution uses the uboot API to copy the image to the QSPI.
The uboot ELF can be obtain from the Xilinx Wiki page here
Launch SDK, and do the following:
  • Connect to 2nd device in the JTAG chain
  • Init the PS7
  • Place the BOOT.bin into DDR (you can use any address, but don't overwrite the uboot at 0x04000000)
  • Download the uboot ELF
  • Execute
 Here are the commands to be used as a reference:
connect arm hw -debugdevice devicenr 3
source ps7_init.tcl
dow -data BOOT.bin 0x08000000
Open the serial port and stop the process from completing by hitting enter.

Next, the QSPI API will be used to copy the (BIN file) image from DDR on to the QSPI.

The commands to do this are seen below:
sf probe 0 0 0
sf erase 0 0x200000
sf write 0x08000000 0 0x200000
Finally, set the Mode pins to boot from QSPI, and do a POR.
The boot image in the QSPI will now be used.
AR# 58584
Date 06/25/2014
Status Active
Type General Article