Skip to content

remote reboot

Sho Uemura edited this page Jun 4, 2025 · 3 revisions

Remote reboot of RFSoC board

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.

current instructions (with xsdb)

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.

old instructions (with xsct)

$ cd /tools/Xilinx/SDK/2019.1/bin 
$ ./xsct 
   xsct% connect 
   xsct% targets 1 
   xsct% rst -por 
   xsct% exit

Clone this wiki locally