-
Notifications
You must be signed in to change notification settings - Fork 127
remote reboot
When you crash the Linux OS (the board will no longer respond to any network input - ping, Jupyter, anything), you need to power-cycle the board. If you want to be able to do this remotely, these instructions send a power-on reset command through the USB-JTAG connector (the same connector you use to get a serial console). Wait a minute or two for the board to boot, and you should be able to connect.
These instructions work with newer versions of Vivado that have xsdb and not xsct - xsdb and xsct are almost interchangeable and you should use whichever you have, the differences between these two sets of instructions are not really important.
Paste the following into a text file reset_zynq.tcl (or you can run the commands by hand in the xsdb shell, similar to how xsct is used below):
connect
targets -filter {name == "PS TAP"} -set
rst -por
disconnect
$ source ~/Soft/Vivado_Lab/2020.2/settings64.sh
$ xsdb reset_zynq.tcl
If you have multiple boards connected, you can do a more complex filter such as targets -set -filter {name == "PS TAP" && jtag_cable_product == "ZCU216 FT4232H"}. To figure out what properties to filter on:
xsdb% foreach x [targets -filter {name =~ "PS TAP"} -target-properties] {puts $x}
target_ctx {JTAG-jsn-HW-Z1-ZCU104 FT4232H-33062A-147e0093-0} target_id 1 level 0 name {PS TAP} parent_ctx {} parent {} state_reason {} is_current 0 bscan {} jtag_device_id 2 jtag_device_ctx {jsn-HW-Z1-ZCU104 FT4232H-33062A-147e0093-0} jtag_device_name xczu28dr jtag_cable_id 1 jtag_cable_ctx {jsn-HW-Z1-ZCU104 FT4232H-33062A} jtag_cable_name {Xilinx HW-Z1-ZCU104 FT4232H 33062A} jtag_device_index 0 jtag_cable_manufacturer Xilinx jtag_cable_product {HW-Z1-ZCU104 FT4232H} jtag_cable_serial 33062A
target_ctx {JTAG-jsn-HW-Z1-ZCU111 FT4232H-97040A-147e0093-0} target_id 6 level 0 name {PS TAP} parent_ctx {} parent {} state_reason {} is_current 0 bscan {} jtag_device_id 8 jtag_device_ctx {jsn-HW-Z1-ZCU111 FT4232H-97040A-147e0093-0} jtag_device_name xczu28dr jtag_cable_id 7 jtag_cable_ctx {jsn-HW-Z1-ZCU111 FT4232H-97040A} jtag_cable_name {Xilinx HW-Z1-ZCU111 FT4232H 97040A} jtag_device_index 0 jtag_cable_manufacturer Xilinx jtag_cable_product {HW-Z1-ZCU111 FT4232H} jtag_cable_serial 97040A
target_ctx {JTAG-jsn-ZCU216 FT4232H-932116130140A-147fe093-0} target_id 11 level 0 name {PS TAP} parent_ctx {} parent {} state_reason {} is_current 0 bscan {} jtag_device_id 14 jtag_device_ctx {jsn-ZCU216 FT4232H-932116130140A-147fe093-0} jtag_device_name xczu49dr jtag_cable_id 13 jtag_cable_ctx {jsn-ZCU216 FT4232H-932116130140A} jtag_cable_name {Xilinx ZCU216 FT4232H 932116130140A} jtag_device_index 0 jtag_cable_manufacturer Xilinx jtag_cable_product {ZCU216 FT4232H} jtag_cable_serial 932116130140A
target_ctx JTAG-jsn1-147fb093-0 target_id 24 level 0 name {PS TAP} parent_ctx {} parent {} state_reason {} is_current 0 bscan {} jtag_device_id 20 jtag_device_ctx jsn1-147fb093-0 jtag_device_name xczu48dr jtag_cable_id 19 jtag_cable_ctx jsn1 jtag_cable_name {RealDigital RFS 88B000000195A} jtag_device_index 0 jtag_cable_manufacturer Xilinx jtag_cable_product {} jtag_cable_serial 88B000000195A
or
xsdb% foreach x [targets -filter {name =~ "PS TAP"} -target-properties] {puts [dict get $x "jtag_cable_name"]}
Xilinx HW-Z1-ZCU104 FT4232H 33062A
Xilinx HW-Z1-ZCU111 FT4232H 97040A
Xilinx ZCU216 FT4232H 932116130140A
RealDigital RFS 88B000000195A
It's good practice to first run the targets command without the -set flag, to make sure that it selects exactly one target.
$ cd /tools/Xilinx/SDK/2019.1/bin
$ ./xsct
xsct% connect
xsct% targets 1
xsct% rst -por
xsct% exit