cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
mnsgs
Observer
Observer
3,094 Views
Registered: ‎05-23-2017

QSPI flashing of zcu102 (rev1.0) through JTAG

Jump to solution

Hi,

 

I have built petalinux (2017.2) for the "zcu102-zynqmp" machine, and successfully booted the device through the SD-card. Subsequently I noticed that uboot-machine and Linux devicetree is both being built according to a revB config, which however seems at least able to boot the device - is the rev1.0 not yet supported through a formal release?

 

The next step was to flash- and boot from QSPI rather than SD card, which unfortunately fails (JTAG is connected through the uUSB connector (J2)). First issue encountered seems to be the 'hw_server' not being started when the flash command issued:

 

martin@martin-Precision-5510:~/work/petalinux/build/tmp/deploy/images/zcu102-zynqmp$ program_flash -f BOOT.bin -flash_type qspi_dual_parallel -blank_check -verify -cable type xilinx_tcf url tcp:localhost:3121

 

****** Xilinx Program Flash
****** Program Flash v2017.2.1 (64-bit)
**** SW Build 1957588 on Wed Aug 9 16:32:10 MDT 2017
** Copyright 1986-2017 Xilinx, Inc. All Rights Reserved.

 

Connecting to hw_server @ tcp:localhost:3121

 

WARNING: Failed to connect to hw_server at tcp:localhost:3121

 

AFAICS, the digilent drivers and udev rules are successfully installed - kernel output when USB cable attached to J2:

 

[95765.427623] usb 3-1.7.1.1: USB disconnect, device number 63
[95768.208354] usb 3-1.7.1.1: new high-speed USB device number 64 using xhci_hcd
[95768.317678] usb 3-1.7.1.1: New USB device found, idVendor=0403, idProduct=6014
[95768.317683] usb 3-1.7.1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[95768.317686] usb 3-1.7.1.1: Product: Digilent USB Device
[95768.317689] usb 3-1.7.1.1: Manufacturer: Digilent
[95768.317691] usb 3-1.7.1.1: SerialNumber: 210308A1CE74
[95768.321163] ftdi_sio 3-1.7.1.1:1.0: FTDI USB Serial Device converter detected
[95768.321257] usb 3-1.7.1.1: Detected FT232H
[95768.321511] usb 3-1.7.1.1: FTDI USB Serial Device converter now attached to ttyUSB5
[95768.359172] ftdi_sio ttyUSB5: FTDI USB Serial Device converter now disconnected from ttyUSB5
[95768.359231] ftdi_sio 3-1.7.1.1:1.0: device disconnected


Starting the hw_server manually causes the below:

 

martin@martin-Precision-5510:~/work/petalinux/build/tmp/deploy/images/zcu102-zynqmp$ hw_server -d -I15 -L /tmp/log && program_flash -f BOOT.bin -flash_type qspi_dual_parallel -blank_check -verify -cable type xil
inx_tcf url tcp:localhost:3121

 

****** Xilinx hw_server v2017.2.1
**** Build date : Aug 9 2017-16:39:25
** 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:martin-Precision-5510:3121


****** Xilinx Program Flash
****** Program Flash v2017.2.1 (64-bit)
**** SW Build 1957588 on Wed Aug 9 16:32:10 MDT 2017
** Copyright 1986-2017 Xilinx, Inc. All Rights Reserved.

 

Connecting to hw_server @ tcp:localhost:3121

 

Connected to hw_server @@ tcp:localhost:312
Available targets and devices:
Target 0 : jsn-JTAG-SMT2NC-210308A1CE74

Device 0: jsn-JTAG-SMT2NC-210308A1CE74-24738093-0

 

ERROR: Please specify a valid FSBL file for flash type: qspi_dual_parallel

 

hw_server log file attached.

 

The same issue occurs whether dip switches are configured to boot from JTAG/QSPI/SD - any idea what I am missing?

 

Thanks,

Martin

0 Kudos
1 Solution

Accepted Solutions
mnsgs
Observer
Observer
4,492 Views
Registered: ‎05-23-2017

Ok, it appears resolved now - I was apparently missing a few steps which weren't required by previous versions:

 

1) SDK needs initialization - achieved through 'source /opt/Xilinx/SDK/2017.2/settings64.sh'

 

which triggered hw_server to be started by 'program_flash'

 

2) FSBL needs explicitly referred together with boot.bin: 'program_flash -f BOOT.bin -flash_type qspi_dual_parallel -fsbl fsbl-zcu102-zynqmp.elf -cable type xilinx_tcf url TCP:127.0.0.1:3121'

 

Thanks,

Martin

View solution in original post

0 Kudos
4 Replies
hpoetzl
Voyager
Voyager
3,078 Views
Registered: ‎06-24-2013

Hey @mnsgs,

 

In Vivado you normally flash the SPI from the TCL shell like this ...

open_hw
connect_hw_server
open_hw_target

create_hw_cfgmem -hw_device [lindex [get_hw_devices xc*] 0] [lindex [get_cfgmem_parts {s25fl128sxxxxxx0-spi-x1_x2_x4}] 0]

write_cfgmem -force -interface SPIx4 -format MCS -size 128 -loadbit "up 0x0 blink.bit" -file "blink.mcs"

set_property CFGMEM_PART {s25fl128sxxxxxx0-spi-x1_x2_x4} [ get_property PROGRAM.HW_CFGMEM [lindex [get_hw_devices xc*] 0]]
set_property PROGRAM.ADDRESS_RANGE  {use_file} [ get_property PROGRAM.HW_CFGMEM [lindex [get_hw_devices xc*] 0]]
set_property PROGRAM.FILES [list "blink.mcs" ] [ get_property PROGRAM.HW_CFGMEM [lindex [get_hw_devices xc*] 0]]
set_property PROGRAM.PRM_FILE {} [ get_property PROGRAM.HW_CFGMEM [lindex [get_hw_devices xc*] 0]]
set_property PROGRAM.UNUSED_PIN_TERMINATION {pull-none} [ get_property PROGRAM.HW_CFGMEM [lindex [get_hw_devices xc*] 0]]
set_property PROGRAM.BLANK_CHECK  0 [ get_property PROGRAM.HW_CFGMEM [lindex [get_hw_devices xc*] 0]]
set_property PROGRAM.ERASE  1 [ get_property PROGRAM.HW_CFGMEM [lindex [get_hw_devices xc*] 0]]
set_property PROGRAM.CFG_PROGRAM  1 [ get_property PROGRAM.HW_CFGMEM [lindex [get_hw_devices xc*] 0]]
set_property PROGRAM.VERIFY  1 [ get_property PROGRAM.HW_CFGMEM [lindex [get_hw_devices xc*] 0]]
set_property PROGRAM.CHECKSUM  0 [ get_property PROGRAM.HW_CFGMEM [lindex [get_hw_devices xc*] 0]]

create_hw_bitstream -hw_device [lindex [get_hw_devices xc*] 0] [get_property PROGRAM.HW_CFGMEM_BITFILE [ lindex [get_hw_devices xc*] 0]]; 
program_hw_devices [lindex [get_hw_devices xc*] 0];
program_hw_cfgmem -hw_cfgmem [ get_property PROGRAM.HW_CFGMEM [lindex [get_hw_devices xc*] 0]]

Note that this is just an example and needs to be adjusted to your case.

 

Hope this helps,

Herbert

-------------- Yes, I do this for fun!
0 Kudos
mnsgs
Observer
Observer
3,048 Views
Registered: ‎05-23-2017

Thanks Herbert, since I am currently not using Vivado (Bitstream is generated elsewhere) I prefer to stick to program_flash. I used to use this for z7000 development - I would assume it still to be possible.

 

Br,

Martin

0 Kudos
mnsgs
Observer
Observer
4,493 Views
Registered: ‎05-23-2017

Ok, it appears resolved now - I was apparently missing a few steps which weren't required by previous versions:

 

1) SDK needs initialization - achieved through 'source /opt/Xilinx/SDK/2017.2/settings64.sh'

 

which triggered hw_server to be started by 'program_flash'

 

2) FSBL needs explicitly referred together with boot.bin: 'program_flash -f BOOT.bin -flash_type qspi_dual_parallel -fsbl fsbl-zcu102-zynqmp.elf -cable type xilinx_tcf url TCP:127.0.0.1:3121'

 

Thanks,

Martin

View solution in original post

0 Kudos
hpoetzl
Voyager
Voyager
3,028 Views
Registered: ‎06-24-2013

You're welcome!

 

All the best,

Herbert

-------------- Yes, I do this for fun!
0 Kudos