Override boot mode using JTAG¶
A bit of background¶
AMD Zynq UltraScale+ MPSoC devices boot by using firmware from storage selected by boot mode pins. When accessing hardware remotely (as is the case in Smart Mission Lab), it’s possible to use JTAG access to override boot mode.
Prerequisites¶
Vivado Lab installed on EGSE Host
Steps¶
Log in to EGSE Host
my-machine$ ssh customer@egse-my-egse.egse.sml.lan customer@egse-my-egse:~$
Start Xilinx System Debugger (
xsdb
)customer@egse-my-egse:~$ xsdb rlwrap: warning: your $TERM is 'xterm-256color' but rlwrap couldn't find it in the terminfo database. Expect some problems. ****** System Debugger (XSDB) v2024.1 **** Build date : May 22 2024-19:19:01 ** Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. ** Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved. xsdb%
Connect to locally running
hw_server
instancexsdb% connect tcfchan#0 xsdb%
Check if DPU is running and reachable by JTAG
xsdb% xsdb% targets 1 PS TAP 2 PMU 3 PL 5 PSU 6 RPU 7 Cortex-R5 #0 (Halted) 8 Cortex-R5 #1 (Lock Step Mode) 9 APU 10 Cortex-A53 #0 (Running) 11 Cortex-A53 #1 (Power On Reset)
Select
PSU
targetxsdb% targets -set -filter {name =~ "PSU"} xsdb%
Set alternative boot mode in
boot_mode_user
registerxsdb% rwr crl_apb boot_mode_user alt_boot_mode <new boot mode>
Enable usage of alternative boot mode
xsdb% rwr crl_apb boot_mode_user use_alt 1
Trigger system reset
xsdb% rst -system
DPU will reset and boot using firmware from storage selected by new boot mode
To revert to default boot mode set
use_alt
to 0 and reset devicexsdb% rwr crl_apb boot_mode_user use_alt 0 xsdb% rst -system
References¶
BOOT_MODE_USER
register in Zynq UltraScale+ Devices Register References (UG1087) (https://docs.amd.com/r/en-US/ug1087-zynq-ultrascale-registers/BOOT_MODE_USER-CRL_APB-Register)