Xilinx Software Command Line Tools (XSCT): Reference Guide (UG1208) Xsct

User Manual:

Open the PDF directly: View PDF PDF.
Page Count: 115 [warning: Documents this large are best viewed by clicking the View PDF Link!]

%(%*6+"5.+))*;%*
++(=>
Reference Guide
UG1208 (v2017.1) April 5, 2017
UG1208 (v2017.2) June 7, 2017
4%/%+*%/0+.7
The following table shows the revision history for this document.
Date Version Revision
April 5, 2017 2017.1 Added new changebsp command
Added support for Serial Vector Format (SVF) for A53 processors
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
2
UG1208 (v2017.2) June 7, 2017
06/07/2017: Released with Vivado® Design Suite 2017.2 without changes from 2017.1.
Table of Contents
%(%*6+"5.+))*;%*++(=>
7/0)-3%.)*0/9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 E
*/0((%*#*3*$%*#
*/0((%*#*3*$%*#+*%*+5/ 9999999999999999999999999999999999999999999999999999999999999999999999999999999999 F
*/0((%*#*3*$%*#+*%*36 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 G
+))*/
.#0+**1+**#)*09999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 @@
.#0#%/0./99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 @D
.+#.)631+* 999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 @F
.#0)+.7999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 AG
.#0+5*(+: 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 BD
.#0/0 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 BG
.#0.',+%*0/:0$,+%*0/ 999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 BH
0#99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 CC
%/((*+3/ 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 CE
//99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 DC
,.1+*/999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 EC
.+&0/9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 EH
+))*/ 999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 HG
///
$*#%*#+),%(.,1+*/+ *,,(%1+*.+&099999999999999999999999999999999999999999999999999999999999999999 HH
.1*#*,,(%1+*.+&0/%*#*,,(%1+*),(0 999999999999999999999999999999999999999999999999 @??
.1*#++0()#*.+#.)0$(/$99999999999999999999999999999999999999999999999999999999999999999999 @??
3##%*#.+#.)(.73**%*#+*0$.#0 999999999999999999999999999999999999999999999999999999999999999 @?@
3##%*#,,(%1+*/+*7*-(0.(I+ 9999999999999999999999999999999999999999999999999999999999999999 @?A
+% 7%*#2*#/9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 @?D
. +.)%*#0*(+*,,(%1+*3# 9999999999999999999999999999999999999999999999999999999999999999999999999999999 @?D
*.1*#%(/99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 @?G
3**%*#*,,(%1+*%*+*;*0.14+ 999999999999999999999999999999999999999999999999999999999999999999999 @?H
3**%*#(.%,0/ 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 @@?
5%0$%*#05**%(%*64(+,)*0*4%.+*)*0 9999999999999999999999999999999999999999 @@@
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
3
UG1208 (v2017.2) June 7, 2017
/%*# 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 @@@
+.'%*#5%0$%..%/ 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 @@A
%1+*(/+3./*#(+1/
(/8),+.0*0#(+1/999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 @@C
*6
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
4
UG1208 (v2017.2) June 7, 2017
%(%*6+"5.+))*;%*++(=>
Graphical development environments such as the Xilinx® Software Development Kit (Xilinx
SDK) are useful for getting up to speed on development for a new processor architecture. It
helps to abstract away and group most of the common functions into logical wizards that
even the novice can use. However, scriptability of a tool is also essential for providing the
flexibility to extend what is done with that tool. It is particularly useful when developing
regression tests that will be run nightly or running a set of commands that are used often by
the developer.
Xilinx Software Command-line Tool (XSCT) is an interactive and scriptable command-line
interface to Xilinx SDK. As with other Xilinx tools, the scripting language for XSCT is based on
Tools Command Language (Tcl). You can run XSCT commands interactively or script the
commands for automation. XSCT supports the following actions:
Create hardware, board support packages (BSPs), and application projects
Manage repositories
Set toolchain preferences
Configure and build BSPs/applications
Download and run applications on hardware targets
Create and flash boot images by running Bootgen and program_flash tools.
This reference guide is intended to provide information you need to develop scripts for
software development and debug targeting the Xilinx family of processors.
As you read the document you will notice usage of some abbreviations for various products
produced by Xilinx. For example:
Use of ps7 in the source code implies that these files are targeting the Zynq® - 7000 AP
SoC family of products, and specifically the dual-core Cortex™ ARM® A9 processors in
the SoC.
Use of psu in the source code implies that this code is targeting a Zynq UltraScale+
MPSoC device, which contains a Cortex Quad-core ARM A53, dual-core ARM R5, ARM
Mali 400 GPU, and a MicroBlaze™ processor based platform management unit (PMU).
Hardware definition files (HDF) are used to transfer the information about the hardware
system that includes a processor to the embedded software development tools such as
Xilinx SDK (XSDK) and Xilinx Software Command-Line Tools (XSCT). It includes
information about which peripherals are instantiated, clocks, memory interfaces, and
memory maps.
Microprocessor Software Specification (MSS) files are used to store information about the
BSP. They contain OS information for the BSP, software drivers associated with each
peripheral of the hardware design, STDIO settings, and compiler flags like optimization
and debug information level.
Chapter 1
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
5
UG1208 (v2017.2) June 7, 2017
7/0)-3%.)*0/
If you plan to use capabilities that are offered through the Xilinx SDK or the Xilinx Software
Command-Line Tool (XSCT), then you also need to meet the hardware and software
requirements that are specific to that capability.
The following table lists the hardware and software requirements:
CPU
Speed
2.2 GHz minimum or higher;
Hyper-threading (HHT) or Multi-
core recommended.
Processor Intel Pentium 4, Intel Core Duo,
or Xeon Processors; SSE2
minimum
Memory/
RAM
2 GB or higher
Hardware Requirements
Display
Resolution
1024×768 or higher at normal
size (96 dpi)
Windows Windows 7 SP1 (64-bit)
Windows 8.1 (64-bit)
Windows 10 Pro (64-bit)
Supported Operating Systems
NOTE: 32-bit machine support is now only
available through Lab Tools and Hardware Server
standalone product installers.
Linux Red Hat Enterprise Linux:
6.6-6.7 (64-bit)
7.0-7.1 (64-bit)
• CentOS:
6.7-6.8 (64-bit)
7.1-7.2 (64-bit)
SUSE Linux Enterprise:
11.4 (64-bit)
12.1 (64-bit)
Ubantu Linux 16.04 LTS
(64-bit)
NOTE: Additional library
installation required.
Disk Space Based on the components selected during
installation.
Chapter 1: Xilinx Soware Command-Line Tool (XSCT)
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
6
UG1208 (v2017.2) June 7, 2017
*/0((%*#*3*$%*#
The Xilinx® Software Command-Line Tool (XSCT) can be installed either as a part of the Xilinx
SDK installer or as a separate command-line tool only installation. XSCT is available for the
following platforms:
Microsoft Windows
• Linux
The following sections explain the installation process for each of these platforms.
*/0((%*#*3*$%*#+*%*+5/
XSCT can be installed using the Windows executable installer. The installer executable bears
the name Xilinx_SDK_<version>_Win64.EXE, where <version> indicates the Xilinx
Software Development Kit (Xilinx SDK) version number.
NOTE: Installing XSCT on Microsoft Windows operating system might require administrator rights. In
addition, your project workspace needs to be set up in any folder that you can fully access.
1. To install XSCT, double-click the Windows installer executable file.
2. The installer accepts your login credentials and allows you to select specific tool
components. The client then automatically downloads only what you have selected and
installs it on your local machine.
3. In the Select Edition to Install window, select the Xilinx Software Command-Line Tool
(XSCT) option to install XSCT as a seperate command-line tool only. Alternatively, you can
also select the Xilinx Software Development Kit (XSDK) option to install XSCT as a part of
the Xilinx SDK, an Eclipse-based integrated development environment.
4. Unless you choose otherwise, XSCT is installed in the C:\Xilinx directory.
5. To launch XSCT on Windows, select Start →Programs →Xilinx Design Tools →SDK
<version> and then select Xilinx Software Command Line Tool. Where SDK <version>
indicates the Xilinx Software Development Kit version number.
6. You can also launch XSCT from the command line.
cd C:\Xilinx\SDK\<version>\bin
xsct.bat
7. To view the available command-line options, issue the help command at the XSCT
command prompt.
****** Xilinx Software Commandline Tool (XSCT)
Chapter 2
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
7
UG1208 (v2017.2) June 7, 2017
** Copyright 1986-2016 Xilinx, Inc. All Rights Reserved.
xsct% help
Available Help Categories
connections - Target Connection Management
registers - Target Registers
running - Program Execution
memory - Target Memory
download - Target Download FPGA/BINARY
reset - Target Reset
breakpoints - Target Breakpoints/Watchpoints
streams - Jtag UART
miscellaneous - Miscellaneous
jtag - JTAG Access
sdk - SDK Projects
petalinux - Petalinux commands
hsi - HSI commands
Type "help" followed by above "category" for more details or
help" followed by the keyword "commands" to list all the commands
xsct%
*/0((%*#*3*$%*#+*%*36
Xilinx Software Command-line Tool (XSCT) can be installed using the small self-extracting web
install executable binary distribution file. The installer file bears the name
Xilinx_SDK_<version>_Lin64.BIN, where <version> indicates the Xilinx Software
Development Kit (Xilinx SDK) version number.
NOTE: The procedure for installing XSCT on Linux depends on which Linux distribution you are using.
Ensure that the installation folder has the appropriate permissions. In addition, your project workspace
needs to be set up in any folder that you can fully access.
1. To install XSCT, launch the terminal and change the permission of the self-extracting binary
executable.
$ chmod +x Xilinx_SDK_<version>_Lin64.BIN
2. Start the installation process or run the .BIN file.
./Xilinx_SDK_<version>_Lin64.BIN
3. The installer accepts your login credentials and allows you to select specific tool
components. The client then automatically downloads only what you have selected and
installs it on your local machine.
4. In the Select Edition to Install window, select the Xilinx Software Command-Line Tool
(XSCT) option to install XSCT as a seperate command-line tool only. Alternatively, you can
also select the Xilinx Software Development Kit (XSDK) option to install XSCT as a part of
the Xilinx SDK, an Eclipse-based integrated development environment.
5. Unless you choose otherwise, XSCT is installed in the /opt/Xilinx directory.
Chapter 2: Installing and Launching XSCT
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
8
UG1208 (v2017.2) June 7, 2017
6. To launch XSCT on Linux, select Applications →Other and then select Xilinx Software
Command Line Tool <version>. Where <version> is the version number of the XSCT.
7. You can also launch XSCT from the command line.
cd /opt/Xilinx/SDK/<version>/bin
./xsct
8. To view the available command-line options, issue the help command at the XSCT
command prompt.
****** Xilinx Software Commandline Tool (XSCT)
** Copyright 1986-2016 Xilinx, Inc. All Rights Reserved.
xsct% help
Available Help Categories
connections - Target Connection Management
registers - Target Registers
running - Program Execution
memory - Target Memory
download - Target Download FPGA/BINARY
reset - Target Reset
breakpoints - Target Breakpoints/Watchpoints
streams - Jtag UART
miscellaneous - Miscellaneous
jtag - JTAG Access
sdk - SDK Projects
petalinux - Petalinux commands
hsi - HSI commands
Type "help" followed by above "category" for more details or
help" followed by the keyword "commands" to list all the commands
xsct%
Chapter 2: Installing and Launching XSCT
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
9
UG1208 (v2017.2) June 7, 2017
+))*/
The Xilinx® Software Command-Line tool allows you to create complete Xilinx SDK
workspaces, investigate the hardware and software, debug and run the project, all from the
command line.
XSCT commands are broadly classified into the following categories. The commands in each
category are described subsequently.
Target Connection Management
Target Registers
Program Execution
Target Memory
Target Download FPGA/BINARY
Target Reset
Target Breakpoints/Watchpoints
Jtag UART
Miscellaneous
JTAG Access
SDK Projects
HSI Commands
TIP:
Help for each of the commands can be viewed by running help <command> or <command> -help in
the XSCT console. All the available XSCT commands can be listed by running help commands.
You can use Ctrl+C to terminate long running commands like fpga or elf download or for/while
loops.
You can terminate XSCT by pressing Ctrl+C twice in succession.
Windows style paths are supported when the path is enclosed within curly brackets {}.
Chapter 3
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
10
UG1208 (v2017.2) June 7, 2017
.#0+**1+**#)*0
Use these commands to connect to or disconnect from hw_server and list or select active
targets.
The following is a list of connections commands:
connect
disconnect
targets
gdbremote connect
gdbremote disconnect
+**0
Connect to hw_server/TCF agent
Syntax
connect [options]
Allows users to connect to a server, list connections or switch between connections.
Opons
Option Description
-host <host name/ip> Name/IP address of the host machine
-port <port num> TCP port number
-url <url> URL description of hw_server/TCF agent
-list List open connections
-set <channel-id> Set active connection
-new Create a new connection, even one exist to the same url
-xvc-url <url> Open Xilinx Virtual Cable connection
Returns
The return value depends on the options used.
-port, -host, -url, -new:<channel-id> of the new connection or error if the
connection fails
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
11
UG1208 (v2017.2) June 7, 2017
-list: list of open channels or nothing when there are no open channels
-set: nothing
Example(s)
connect -host localhost -port 3121
Connect to hw_server/TCF agent on host localhost and port 3121
connect -url tcp:localhost:3121
Identical to previous example.
%/+**0
Disconnect from hw_server/TCF agent.
Syntax
disconnect
Disconnect from active channel.
disconnect <channel-id>
Disconnect from specified channel.
Returns
Nothing, if the connection is closed. Error string, if invalid channel-id is specified.
0.#0/
List targets or switch between targets.
Syntax
targets [options]
List available targets.
targets <target id>
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
12
UG1208 (v2017.2) June 7, 2017
Select <target id> as active target.
Opons
Option Description
-set Set current target to entry single entry in list. This is useful in
comibination with -filter option. An error will be generate if list
is empty or contains more than one entry.
-regexp Use regexp for filter matching
-nocase Use case insensitive filter matching
-filter <filter-
expression>
Specify filter expression to control which targets are included in
list based on its properties. Filter expressions are similar to Tcl
expr syntax. Target properties are references by name, while Tcl
variables are accessed using the $ syntax, string must be
quoted. Operators ==, !=, <=, >=, <, >, && and || are
supported as well as (). There operators behave like Tcl expr
operators. String matching operator =~ and !~ match lhs string
with rhs pattern using either regexp or string match.
-target-
properties
Returns a Tcl list of dict's containing target properties.
-index <index> Include targets based on jtag scan chain position. This is
identical to specifying -filter {jtag_device_index==<index>}.
-timeout <sec> Poll until the targets specified by filter option are found on the
scan chain, or until timeout. This option is valid only with filter
option. The timeout value is in seconds. Default timeout is 3
seconds
Returns
The return value depends on the options used.
<none>: Targets list when no options are used.
-filter: Filtered targets list.
-target-properties: Tcl list consisting of target properties.
An error is returned when target selection fails.
Example(s)
targets
List all targets.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
13
UG1208 (v2017.2) June 7, 2017
targets -filter {name =~ "ARM*#1"}
List targets with name starting with "ARM" and ending with "#1".
targets 2
Set target with id 2 as the current target.
targets -set -filter {name =~ "ARM*#1"}
Set current target to target with name starting with "ARM" and ending with "#1".
targets -set -filter {name =~ "MicroBlaze*"} -index 0
Set current target to target with name starting with "MicroBlaze" and which is on 1st
JTAG device.
#.)+0+**0
Connect to GDB remote server.
Syntax
gdbremote connect [options] server
Connect to a GDB remote server, for example, qemu. A special client named tcfgdbclient
is used to connect to remote GDB server.
Opons
Option Description
-architecture
<name>
Specify default architecture is remote server does not
provide it.
Returns
Nothing, if the connection is successful. Error string, if the connection failed.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
14
UG1208 (v2017.2) June 7, 2017
#.)+0%/+**0
Disconnect from GDB remote server.
Syntax
gdbremote disconnect [target-id]
Disconnect from GDB remote server, for example, qemu.
Returns
Nothing, if the connection is close. Error string, if there is no active connection.
.#0#%/0./
These commands can be used to read and write to the target registers
The following is a list of registers commands:
rrd
rwr
..
Read register for active target.
Syntax
rrd [options] [reg]
Read registers or register definitions. For a processor core target, processor core register
can be read. For a target representing a group of processor cores, system registers or IOU
registers can be read.
Opons
Option Description
-defs Read register definitions instead of values
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
15
UG1208 (v2017.2) June 7, 2017
Option Description
-no-bits Does not show bit fields along with register values. By default,
bit fields are shown, when available
Returns
Register names and values, or register definitions if successful. Error string, if the registers
cannot be read or if an invalid register is specified.
Example(s)
rrd
Read top level registers or groups.
rrd r0
Read register r0.
rrd usr r8
Read register r8 in group usr.
.5.
Write to register
Syntax
rwr <reg> <value>
Write the <value> to active target register specified by <reg> For a processor core target,
processor core register can be written to. For a target representing a group of processor
cores, system registers or IOU registers can be written.
Returns
Nothing, if successful. Error string, if an invalid register is specified or the register cannot
be written.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
16
UG1208 (v2017.2) June 7, 2017
Example(s)
rwr r8 0x0
Write 0x0 to register r8.
rwr usr r8 0x0
Write 0x0 to register r8 in group usr.
.+#.)631+*
These commands can be used for program execution, target state, and disassembly.
The following is a list of running commands:
state
stop
con
stp
nxt
stpi
nxti
stpout
dis
print
locals
backtrace
profile
mbprofile
/00
Display the current state of the target.
Syntax
state
Return the current execution state of target.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
17
UG1208 (v2017.2) June 7, 2017
/0+,
Stop active target.
Syntax
stop
Suspend execution of active target.
Returns
Nothing, if the target is suspended. Error string, if the target is already stopped or cannot
be stopped.
An information message is printed on the console when the target is suspended.
+*
Resume active target.
Syntax
con [options]
Resume execution of active target.
Opons
Option Description
-addr <address> Resume execution from address specified by <address>.
-block Block until the target stops or a timeout is reached.
-timeout <sec> Timeout value in seconds.
Returns
Nothing, if the target is resumed. Error string, if the target is already running or cannot be
resumed or does not halt within timeout, after being resumed.
An information message is printed on the console when the target is resumed.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
18
UG1208 (v2017.2) June 7, 2017
Example(s)
con -addr 0x100000
Resume execution of the active target from address 0x100000.
con -block
Resume execution of the active target and wait until the target stops.
con -block -timeout 5
Resume execution of the active target and wait until the target stops or until the 5 second
timeout is reached.
/0,
Step into a line of source code.
Syntax
stp [count]
Resume execution of the active target until control reaches instruction that belongs to
different line of source code. If a function is called, stop at first line of the function code.
Error is returned if line number information not available. If <count> is greater than 1,
repeat <count> times. Default value of count is 1.
Returns
Nothing, if the target has single stepped. Error string, if the target is already running or
cannot be resumed.
An information message is printed on the console when the target stops at the next
address.
*60
Step over a line of source code.
Syntax
nxt [count]
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
19
UG1208 (v2017.2) June 7, 2017
Resume execution of the active target until control reaches instruction that belongs to a
different line of source code, but runs any functions called at full speed. Error is returned
if line number information not available. If <count> is greater than 1, repeat <count>
times. Default value of count is 1.
Returns
Nothing, if the target has stepped to the next source line. Error string, if the target is
already running or cannot be resumed.
An information message is printed on the console when the target stops at the next
address.
/0,%
Execute a machine instruction.
Syntax
stpi [count]
Execute a single machine instruction. If instruction is function call, stop at first instruction
of the function code If <count> is greater than 1, repeat <count> times. Default value of
count is 1.
Returns
Nothing, if the target has single stepped. Error if the target is already running or cannot
be resumed.
An information message is printed on the console when the target stops at the next
address.
*61
Step over a machine instruction.
Syntax
nxti [count]
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
20
UG1208 (v2017.2) June 7, 2017
Step over a single machine instruction. If instruction is function call, execution continues
until control returns from the function. If <count> is greater than 1, repeat <count> times.
Default value of count is 1.
Returns
Nothing, if the target has stepped to the next address. Error string, if the target is already
running or cannot be resumed.
An information message is printed on the console when the target stops at the next
address.
/0,+30
Step out from current function.
Syntax
stpout [count]
Resume execution of current target until control returns from current function. If <count>
is greater than 1, repeat <count> times. Default value of count is 1.
Returns
Nothing, if the target has stepped out of the current function. Error if the target is already
running or cannot be resumed.
An information message is printed on the console when the target stops at the next
address.
%/
Disassemble instructions.
Syntax
dis <address> [num]
Disassemble <num> instructions at address specified by <address> The keyword "pc" can
be used to disassemble instructions at current PC default value for <num> is 1.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
21
UG1208 (v2017.2) June 7, 2017
Returns
Disassembled instructions if successful. Error string, if the target instructions cannot be
read.
Example(s)
dis
Disassemble an instruction at the current PC value
dis pc 2
Disassemble two instructions at the current PC value
dis 0x0 2
Disassemble two instructions at address 0x0
,.%*0
Get or set the value of an expression.
Syntax
print [options] [expression]
Get or set the value of an expression specified by <expression>. The <expression> can
include constants, local/global variables, CPU registers, or any operator, but pre-
processor macros defined through #define are not supported. CPU registers can be
specified in the format {$r1}, where r1 is the register name. Elements of a complex data
types like a structure can be accessed through '.' operator. For example, var1.int_type
refers to int_type element in var1 struct. Array elements can be accessed through their
indices. For example, array1[0] refers to the element at index 0 in array1.
Opons
Option Description
-add <expression> Add the <expression> to auto expression list. The values or
definitions of the expressions in auto expression list are
displayed when expression name is not specified. Frequently
used expressions should be added to the auto expression list.
-defs
[expression]
Return the expression definitions like address, type, size and
RW flags. Not all definitions are available for all the expressions.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
22
UG1208 (v2017.2) June 7, 2017
Option Description
For example, address is available only for variables and not
when the expression includes an operator.
-dict
[expression]
Return the result in Tcl dict format, with variable names as dict
keys and variable values as dict values. For complex data like
structures, names are in the form of parent.child.
-remove
[expression]
Remove the expression from auto expression list. Only
expressions previously added to the list through -add option
can be removed. When the expression name is not specified, all
the expressions in the auto expression list are removed.
-set <expression> Set the value of a variable. It is not possible to set the value of
an expression which includes constants or operators.
Returns
The return value depends on the options used.
<none> or -add: Expression value(s)
-defs: Expression definition(s)
-remove or -set: Nothing
Error string, if expression value cannot be read or set.
Example(s)
print Int_Glob
Return the value of variable Int_Glob.
print -a Microseconds
Add the variable Microseconds to auto expression list and return its value.
print -a Int_Glob*2 + 1
Add the expression (Int_Glob*2 + 1) to auto expression list and return its value.
print tmp_var.var1.int_type
Return the value of int_type element in var1 struct, where var1 is a member of tmp_var
struct.
print tmp_var.var1.array1[0]
Return the value of the element at index 0 in array array1. array1 is a member of var1
struct, which is in turn a member of tmp_var struct.
print
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
23
UG1208 (v2017.2) June 7, 2017
Return the values of all the expressions in auto expression list.
print -defs
Return the definitions of all the expressions in auto expression list.
print -set Int_Glob 23
Set the value of the variable Int_Glob to 23.
print -remove Microseconds
Remove the expression Microseconds from auto expression list.
print {r1}
Return the value of CPU register r1.
(+(/
Get or set the value of a local variable.
Syntax
locals [options] [variable-name [variable-value]]
Get or set the value of a variable specified by <variable-name>. When variable name
and value are not specified, values of all the local variables are returned. Elements of a
complex data types like a structure can be accessed through '.' operator. For example,
var1.int_type refers to int_type element in var1 struct. Array elements can be accessed
through their indices. For example, array1[0] refers to the element at index 0 in array1.
Opons
Option Description
-defs Return the variable definitions like address, type, size and RW
flags.
-dict
[expression]
Return the result in Tcl dict format, with variable names as dict
keys and variable values as dict values. For complex data like
structures, names are in the form of parent.child.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
24
UG1208 (v2017.2) June 7, 2017
Returns
The return value depends on the options used.
<none>: Variable value(s)
-defs: Variable definition(s)
Nothing, when variable value is set. Error string, if variable value cannot be read or
set.
Example(s)
locals Int_Loc
Return the value of the local variable Int_Loc.
locals
Return the values of all the local variables in the current stack frame.
locals -defs
Return definitions of all the local variables in the current stack frame.
locals Int_Loc 23
Set the value of the local variable Int_Loc to 23.
locals tmp_var.var1.int_type
Return the value of int_type element in var1 struct, where var1 is a member of tmp_var
struct.
locals tmp_var.var1.array1[0]
Return the value of the element at index 0 in array array1. array1 is a member of var1
struct, which is in turn a member of tmp_var struct.
'0.
Stack back trace.
Syntax
backtrace
Return stack trace for current target. Target must be stopped. Use debug information for
best result.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
25
UG1208 (v2017.2) June 7, 2017
Returns
Stack Trace, if successful. Error string, if Stack Trace cannot be read from the target.
,.+!(
Configure and run the GNU profiler.
Syntax
profile [options]
Configure and run the GNU profiler. The profiling needs to enabled while building bsp
and application to be profiled.
Opons
Option Description
-freq <sampling-
freq>
Sampling frequency.
-scratchaddr
<addr>
Scratch memory for storing the profiling related data. It needs
to be assigned carefully, as it should not overlap with the
program sections.
-out <file-name> Name of the output file for writing the profiling data. This
option also runs the profiler and collects the data. If file name is
not specified, profiling data is written to gmon.out
Returns
Depends on options used.
-scratchaddr, -freq: Returns nothing on successful configuration. Error string, in
case of error.
-out: Returns nothing, and generates a file. Error string, in case of error.
Example(s)
profile -freq 10000 -scratchaddr 0
Configure the profiler with a sampling frequency of 10000 and scratch memory at 0x0.
profile -out testgmon.out
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
26
UG1208 (v2017.2) June 7, 2017
Output the profile data in testgmon.out.
),.+!(
Configure and run the MB profiler.
Syntax
mbprofile [options]
Configure and run the MB profiler, a non-intrusive profiler for profiling the application
running on MB. The output file is generated in gmon.out format. The results can be
viewed using gprof editor. In case of cycle count, an annotated disassembly file is also
generated clearly marking time taken for execution of instructions.
Opons
Option Description
-low <addr> Low address of the profiling address range.
-high <addr> High address of the profiling address range.
-freq <value> Microblaze clock frequency. Default is 100MHz.
-count-instr Count no. of executed instructions. By default no. of clock
cycles of executed instructions are counted.
-cumulate Cumulative profiling. Profiling without clearing the profiling
buffers.
-start Enable and start profiling.
-stop Disable/stop profiling.
-out <filename> Output profiling data to file. <filename> Name of the output
file for writing the profiling data. If file name is not specified,
profiling data is written to gmon.out.
Returns
Depends on options used.
-low, -high, -freq, -count-instr, -start, -cumulate: Returns nothing on
successful configuration. Error string, in case of error.
-stop: Returns nothing, and generates a file. Error string, in case of error.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
27
UG1208 (v2017.2) June 7, 2017
Example(s)
mbprofile -low 0x0 -high 0x3FFF
Configure the mb-profiler with address range 0x0 to 0x3FFF for profiling to count the
clock cycles of executed instructions.
mbprofile -start
Enable and start profiling.
mbprofile -stop -out testgmon.out
Output the profile data in testgmon.out
mbprofile -count-instr
Configure the mb-profiler to profile for entire program address range to count no. of
instructions executed.
.#0)+.7
These commands can be used to Read and Write to the target memory space.
The following is a list of memory commands:
mrd
mwr
osa
memmap
).
Memory read.
Syntax
mrd [options] <address> [num]
Read <num> words from the active target's memory address specified by <address>.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
28
UG1208 (v2017.2) June 7, 2017
Opons
Option Description
-force Overwrite access protection. By default accesses to reserved
and invalid address ranges are blocked.
-size <access-
size>
<access-size> can be one of the values below: b = Bytes
accesses h = Half-word accesses w = Word accesses Default
access size is w Address will be aligned to access-size before
reading memory.
-value Return a Tcl list of values, instead of displaying the result on
console.
-bin Return data read from the target in binary format.
-file <file-name> Write binary data read from the target to <file-name>.
-address-space
<name>
Access specified memory space instead default memory space
of current target. For ARM DAP targets, address spaces DPR,
APR and AP<n> can be used to access DP Registers, AP
Registers and MEM-AP addresses, respectively. For backwards
compatibility -arm-dap and -arm-ap options can be used as
shorthand for "-address-space APR" and "-address-space
AP<n>", respectively. The APR address range is 0x0 - 0xfffc,
where the higher 8 bits select an AP and lower 8 bits are the
register address for that AP.
-unaligned-access Memory address is not aligned to access size, before
performing a read operation. Support for unaligned accesses is
target architecture dependent. If this option is not specified,
addresses are automatically aligned to access size.
Note(s)
Select a APU target to access ARM DAP and MEM-AP address space.
Returns
Memory addresses and data in requested format, if successful. Error string, if the target
memory cannot be read.
Example(s)
mrd 0x0
Read a word at 0x0.
mrd 0x0 10
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
29
UG1208 (v2017.2) June 7, 2017
Read 10 words at 0x0.
mrd -value 0x0 10
Read 10 words at 0x0 and return a Tcl list of values.
mrd -size b 0x1 3
Read 3 bytes at address 0x1.
mrd -size h 0x2 2
Read 2 half-words at address 0x2.
mrd -bin -file mem.bin 0 100
Read 100 words at address 0x0 and write the binary data to mem.bin.
mrd -address-space APR 0x100
Read APB-AP CSW on Zynq The higher 8 bits (0x1) select the APB-AP and lower 8 bits
(0x0) is the address of CSW.
mrd -address-space APR 0x04
Read AHB-AP TAR on Zynq The higher 8 bits (0x0) select the AHB-AP and lower 8 bits
(0x4) is the address of TAR.
mrd -address-space AP1 0x80090088
Read address 0x80090088 on DAP APB-AP 0x80090088 corresponds to DBGDSCR register
of Cortex-A9#0, on Zynq AP 1 selects the APB-AP.
mrd -address-space AP0 0xe000d000
Read address 0xe000d000 on DAP AHB-AP 0xe000d000 corresponds to QSPI device on
Zynq AP 0 selects the AHB-AP.
)5.
Memory write.
Syntax
mwr [options] <address> <values> [num]
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
30
UG1208 (v2017.2) June 7, 2017
Write <num> words from list of <values> to active target memory address specified by
<address>. If <num> words is not specified, all the <values> from the list are written
sequentially from the address specifed by <address> If <num> is greater than the size of
the <values> list, the last word in the list is filled at the remaining address locations.
mwr [options] -bin -file <file-name> <address> [num]
Read <num> values from a binary file and write to active target memory address specified
by <address>. If <num> words is not specified, all the data from the file is written
sequentially from the address specifed by <address>.
Opons
Option Description
-force Overwrite access protection. By default accesses to reserved
and invalid address ranges are blocked.
-size <access-
size>
<access-size> can be one of the values below: b = Bytes
accesses h = Half-word accesses w = Word accesses Default
access size is w Address will be aligned to access-size before
writing to memory.
-bin Read binary data from a file and write it to target address
space.
-file <file-name> File from which binary data is read to write to target address
space.
-address-space
<name>
Access specified memory space instead default memory space
of current target. For ARM DAP targets, address spaces DPR,
APR and AP<n> can be used to access DP Registers, AP
Registers and MEM-AP addresses, respectively. For backwards
compatibility -arm-dap and -arm-ap options can be used as
shorthand for "-address-space APR" and "-address-space
AP<n>", respectively. The APR address range is 0x0 - 0xfffc,
where the higher 8 bits select an AP and lower 8 bits are the
register address for that AP.
-unaligned-
accesses
Memory address is not aligned to access size, before
performing a write operation. Support for unaligned accesses is
target architecture dependent. If this option is not specified,
addresses are automatically aligned to access size.
Note(s)
Select a APU target to access ARM DAP and MEM-AP address space.
Returns
Nothing, if successful. Error string, if the target memory cannot be written.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
31
UG1208 (v2017.2) June 7, 2017
Example(s)
mwr 0x0 0x1234
Write 0x1234 to address 0x0.
mwr 0x0 {0x12 0x23 0x34 0x45}
Write 4 words from the list of values to address 0x0.
mwr 0x0 {0x12 0x23 0x34 0x45} 10
Write 4 words from the list of values to address 0x0 and fill the last word from the list at
remaining 6 address locations.
mwr -size b 0x1 {0x1 0x2 0x3} 3
write 3 bytes from the list at address 0x1.
mwr -size h 0x2 {0x1234 0x5678} 2
write 2 half-words from the list at address 0x2.
mwr -bin -file mem.bin 0 100
Read 100 words from binary file mem.bin and write the data at target address 0x0.
mwr -arm-dap 0x100 0x80000042
Write 0x80000042 to APB-AP CSW on Zynq The higher 8 bits (0x1) select the APB-AP and
lower 8 bits (0x0) is the address of CSW.
mwr -arm-dap 0x04 0xf8000120
Write 0xf8000120 to AHB-AP TAR on Zynq The higher 8 bits (0x0) select the AHB-AP and
lower 8 bits (0x4) is the address of TAR.
mwr -arm-ap 1 0x80090088 0x03186003
Write 0x03186003 to address 0x80090088 on DAP APB-AP 0x80090088 corresponds to
DBGDSCR register of Cortex-A9#0, on Zynq AP 1 selects the APB-AP.
mwr -arm-ap 0 0xe000d000 0x80020001
Write 0x80020001 to address 0xe000d000 on DAP AHB-AP 0xe000d000 corresponds to
QSPI device on Zynq AP 0 selects the AHB-AP.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
32
UG1208 (v2017.2) June 7, 2017
+/
Configure OS awareness for a symbol file.
Syntax
osa -file <file-name> [options]
Configure OS awareness for the symbol file <file-name> specified. If no symbol file is
specifed and only one symbol file exists in target's memory map, then that symbol file is
used. If no symbol file is specifed and multiple symbol files exist in target's memory map,
then an error is thrown.
Opons
Option Description
-disable Disable OS awareness for a symbol file. If this option is not
specified, OS awareness is enabled.
-fast-exec Enable fast process start. New processes will not be tracked for
debug and are not visible in the debug targets view.
-fast-step Enable fast stepping. Only the current process will be re-synced
after stepping. All other processes will not be re-synced when
this flag is turned on.
Note(s)
fast-exec and fast-step options are not valid with disable option.
Returns
Nothing, if OSA is configured successfully. Error, if ambiguous options are specified.
Example(s)
osa -file <symbol-file> -fast-step -fast-exec
Enable OSA for <symbole-file> and turn on fast-exec and fast-step modes.
osa -disable -file <symbol-file>
Disable OSA for <symbol-file>.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
33
UG1208 (v2017.2) June 7, 2017
))),
Modify memory map.
Syntax
memmap <options>
Add/remove a memory map entry for the active target.
Opons
Option Description
-addr <memory-
address>
Address of the memory region that should be added/removed
from the target's memory map.
-size <memory-
size>
Size of the memory region.
-flags
<protection-
flags>
Protection flags for the memory region. <protection-flags>
can be a bitwise OR of the values below: 0x1 = Read access is
allowed 0x2 = Write access is allowed 0x4 = Instruction fetch
access is allowed Default value of <protection-flags> is 0x3
(Read/Write Access).
-list List the memory regions added to the active target's memory
map.
-clear Specify whether the memory region should be removed from
the target's memory map.
-relocate-
section-map
<addr>
Relocate the address map of the program sections to <addr>.
This option should be used when the code is self-relocating, so
that the debugger can find the debug symbol information for
the code. <addr> is the relative address, to which all the
program sections are relocated.
-osa Enable OS awareness for the symbol file. Fast process start and
fast stepping options are turned off by default. These options
can be enabled using the osa command. See "help osa" for
more details.
-properties
<dict>
Specify advanced memory map properties.
-meta-data <dict> Specify meta-data of advanced memory map properties.
Note(s)
Only the memory regions previously added through memmap command can be
removed.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
34
UG1208 (v2017.2) June 7, 2017
Returns
Nothing, while setting the memory map, or list of memory maps when -list option is
used.
Example(s)
memmap -addr 0xfc000000 -size 0x1000 -flags 3
Add the memory region 0xfc000000 - 0xfc000fff to target's memory map Read/Write
accesses are allowed to this region.
memmap -addr 0xfc000000 -clear
Remove the previously added memory region at 0xfc000000 from target's memory map.
.#0+5*(+:
These commands can be used to download elf/binary files to the target or configure FPGA.
The following is a list of download commands:
dow
verify
fpga
+5
Download ELF and binary file to target.
Syntax
dow [options] <file>
Download ELF file <file> to active target.
dow -data <file> <addr>
Download binary file <file> to active target address specified by <addr>.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
35
UG1208 (v2017.2) June 7, 2017
Opons
Option Description
-clear Clear uninitialized data (bss).
-keepsym Keep previously downloaded elfs in the list of symbol files.
Default behavior is to clear the old symbol files while
downloading an elf.
-force Overwrite access protection. By default accesses to reserved
and invalid address ranges are blocked.
-relocate-
section-map
<addr>
Relocate the address map of the program sections to <addr>.
This option should be used when the code is self-relocating, so
that the debugger can find debug symbol information for the
code. <addr> is the relative address, to which all the program
sections are relocated.
Returns
Nothing.
4.% 7
Verify if ELF/binary file is downloaded correctly to target.
Syntax
verify [options] <file>
Verify if the ELF file <file> is downloaded correctly to active target.
verify -data <file> <addr>
Verify if the binary file <file> is downloaded correctly to active target address specified
by <addr>.
Opons
Option Description
-force Overwrite access protection. By default accesses to reserved
and invalid address ranges are blocked.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
36
UG1208 (v2017.2) June 7, 2017
Returns
Nothing, if successful. Error string, if the memory address cannot be accessed or if there is
a mismatch.
,#
Configure FPGA.
Syntax
fpga <bitstream-file>
Configure FPGA with given bitstream.
fpga [options]
Configure FPGA with bitstream specified options, or read FPGA state.
Opons
Option Description
-file <bitstream-
file>
Specify file containing bitstream.
-partial Configure FPGA without first clearing current configuration.
This options should be used while configuring partial
bitstreams created before 2014.3 or any partial bitstreams in
binary format.
-state Return whether the FPGA is configured.
-config-status Return configuration status.
-ir-status Return IR capture status.
-boot-status Return boot history status.
-timer-status Return watchdog timer status.
-cor0-status Return configuration option 0 status.
-cor1-status Return configuration option 1 status.
-wbstar-status Return warm boot start address status.
Note(s)
If no target is selected or if the current target is not a supported FPGA device, and
only one supported FPGA device is found in the targets list, then this device will be
configured.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
37
UG1208 (v2017.2) June 7, 2017
Returns
Depends on options used.
-file, -partial: Nothing, if fpga is configured, or an error if the configuration failed.
One of the other options Configutation value.
.#0/0
These commands can be used to reset the target.
The following is a list of reset commands:
rst
./0
Target reset.
Syntax
rst [options]
Reset the active target.
Opons
Option Description
-processor Reset the active processor target.
-cores Reset the active processor group. This reset type is supported
only on Zynq. A processor group is defined as a set of
processors and on-chip peripherals like OCM.
-system Reset the active System.
-srst Generate system reset for active target. With JTAG this is done
by generating a pulse on the SRST pin on the JTAG cable
assocated with the active target.
Returns
Nothing, if reset if successful. Error string, if reset is unsupported.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
38
UG1208 (v2017.2) June 7, 2017
.#0.',+%*0/:0$,+%*0/
These commands can be used to add, remove, enable, disable or list Breakpoints/
Watchpoints. Xilinx SDK supports Breakpoints/Watchpoints at address and source line.
The following is a list of breakpoints commands:
bpadd
bpremove
bpenable
bpdisable
bplist
bpstatus
,
Set a Breakpoint/Watchpoint.
Syntax
bpadd <options>
Set a software or hardware breakpoint at address, function or <file>:<line>, or set a
read/write watchpoint, or set a cross-trigger breakpoint.
Opons
Option Description
-addr
<breakpoint-
address>
Specify the address at which the Breakpoint should be set.
-file <file-name> Specify the <file-name> in which the Breakpoint should be
set.
-line <line-
number>
Specify the <line-number> within the file, where Breakpoint
should be set.
-type
<breakpoint-type>
Specify the Breakpoint type <breakpoint-type> can be one of
the values below: auto = Auto - Breakpoint type is chosen by
hw_server/TCF agent. This is the default type hw = Hardware
Breakpoint sw = Software Breakpoint.
-mode
<breakpoint-mode>
Specify the access mode that will trigger the breakpoint.
<breakpoint-mode> can be a bitwise OR of the values below:
0x1 = Triggered by a read from the breakpoint location 0x2 =
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
39
UG1208 (v2017.2) June 7, 2017
Option Description
Triggered by a write to the breakpoint location 0x4 = Triggered
by an instruction execution at the breakpoint location This is
the default for Line and Address breakpoints 0x8 = Triggered
by a data change (not an explicit write) at the breakpoint
location.
-enable <mode> Specify initial enablement state of breakpoint. When <mode> is
0 the breakpoint is disabled, otherwise the breakpoint is
enabled. The default is enabled.
-ct-input <list>
-ct-output <list>
Specify input and output cross triggers. <list> is a list of
numbers identifying the cross trigger pin. For Zynq 0-7 is CTI
for core 0, 8-15 is CTI for core 1, 16-23 is CTI ETB and TPIU, and
24-31 is CTI for FTM.
-properties
<dict>
Specify advanced breakpoint properties.
-meta-data <dict> Specify meta-data of advanced breakpoint properties.
-target-id <id> Specify a target id for which the breakpoint should be set. A
breakpoint can be set for all the targets by specifying the <id>
as "all". If this option is not used, then the breakpoint is set for
the active target selected through targets command. If there is
no active target, then the breakpoint is set for all targets.
Note(s)
Breakpoints can be set in XSDB before connecting to hw_server/TCF agent. If there is
an active target when a Breakpoint is set, the Breakpoint will be enabled only for that
active target. If there is no active target, the Breakpoint will be enabled for all the
targets. target-id option can be used to set a breakpoint for a specific target, or all
targets. An address breakpoint or a file:line breakpoint can also be set without the
options -addr, -file or -line. For address breakpoints, specify the address as an
argument, after all other options. For file:line breakpoints, specify the file name and
line number in the format <file>:<line>, as an argument, after all other options.
Returns
Breakpoint id or an error if invalid target id is specified.
Example(s)
bpadd -addr 0x100000
Set a Breakpoint at address 0x100000 Breakpoint type is chosen by hw_server/TCF agent
bpadd -addr &main
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
40
UG1208 (v2017.2) June 7, 2017
Set a function Breakpoint at main Breakpoint type is chosen by hw_server/TCF agent
bpadd -file test.c -line 23 -type hw
Set a Hardware Breakpoint at test.c:23
bpadd -target-id all 0x100
Set a breakpoint for all targets, at address 0x100
bpadd -target-id 2 test.c:23
Set a breakpoint for target 2, at line 23 in test.c
bpadd -addr &fooVar -type hw -mode 0x3
Set a Read_Write Watchpoint on variable fooVar
bpadd -ct-input 0 -ct-output 8
Set a cross trigger to stop Zynq core 1 when core 0 stops.
,.)+4
Remove Breakpoints/Watchpoints.
Syntax
bpremove <id-list> | -all
Remove the Breakpoints/Watchpoints specified by <id-list> or remove all the
breakpoints when \"-all\" option is used.
Opons
Option Description
-all Remove all breakpoints.
Returns
Nothing, if the breakpoint is removed successfully. Error string, if the breakpoint specified
by <id> is not set.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
41
UG1208 (v2017.2) June 7, 2017
Example(s)
bpremove 0
Remove Breakpoint 0.
bpremove 1 2
Remove Breakpoints 1 and 2.
bpremove -all
Remove all Breakpoints.
,*(
Enable Breakpoints/Watchpoints.
Syntax
bpenable <id-list> | -all
Enable the Breakpoints/Watchpoints specified by <id-list> or enable all the
breakpoints when \"-all\" option is used.
Opons
Option Description
-all Enable all breakpoints.
Returns
Nothing, if the breakpoint is enabled successfully. Error string, if the breakpoint specified
by <id> is not set.
Example(s)
bpenable 0
Enable Breakpoint 0.
bpenable 1 2
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
42
UG1208 (v2017.2) June 7, 2017
Enable Breakpoints 1 and 2.
bpenable -all
Enable all Breakpoints.
,%/(
Disable Breakpoints/Watchpoints.
Syntax
bpdisable <id-list> | -all
Disable the Breakpoints/Watchpoints specified by <id-list> or disable all the
breakpoints when -all option is used.
Opons
Option Description
-all Disable all breakpoints.
Returns
Nothing, if the breakpoint is disabled successfully. Error string, if the breakpoint specified
by <id> is not set.
Example(s)
bpdisable 0
Disable Breakpoint 0.
bpdisable 1 2
Disable Breakpoints 1 and 2.
bpdisable -all
Disable all Breakpoints.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
43
UG1208 (v2017.2) June 7, 2017
,(%/0
List Breakpoints/Watchpoints.
Syntax
bplist
List all the Beakpoints/Watchpoints along with brief status for each Breakpoint and the
target on which it is set.
Returns
List of breakpoints.
,/003/
Print Breakpoint/Watchpoint status.
Syntax
bpstatus <id>
Print the status of a Breakpoint/Watchpoint specified by <id>. Status includes the target
information for which the Breakpoint is active and also Breakpoint hitcount or error
message.
Opons
None
Returns
Breakpoint status, if the breakpoint exists. Error string, if the breakpoint specified by <id>
is not set.
0#
These commands can be used to connect to JTAG UART (MDM or ARM DCC).
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
44
UG1208 (v2017.2) June 7, 2017
The following is a list of streams commands:
jtagterminal
readjtaguart
&0#0.)%*(
Start/Stop Jtag based hyper-terminal.
Syntax
jtagterminal [options]
Start/Stop a Jtag based hyper-terminal to communicate with ARM DCC or MDM UART
interface.
Opons
Option Description
-start Start the Jtag Uart terminal. This is the default option.
-stop Stop the Jtag Uart terminal.
-socket Return the socket port number, instead of starting the terminal.
External terminal programs can be used to connect to this port.
Note(s)
Select a MDM or ARM processor target before runnning this command.
Returns
Socket port number.
.&0#3.0
Start/Stop reading from Jtag Uart.
Syntax
readjtaguart [options]
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
45
UG1208 (v2017.2) June 7, 2017
Start/Stop reading from the ARM DCC or MDM Uart Tx interface. Jtag Uart output can be
printed on stdout or redirected to a file.
Opons
Option Description
-start Start reading the Jtag Uart output.
-stop Stop reading the Jtag Uart output.
-handle <file-
handle>
Specify the file handle to which the data should be redirected.
If no file handle is given, data is printed on stdout.
Note(s)
Select a MDM or ARM processor target before runnning this command.
While running a script in non-interactive mode, output from Jtag uart may not be
written to the log, until "readjtaguart -stop" is used.
Returns
Nothing, if successful. Error string, if data cannot be read from the Jtag Uart.
Example(s)
readjtaguart
Start reading from the Jtag Uart and print the output on stdout set fp [open test.log w];
readjtaguart -start -handle $fp Start reading from the Jtag Uart and print the output to
test.log.
readjtaguart -stop
Stop reading from the Jtag Uart.
%/((*+3/
The following is a list of miscellaneous commands:
loadhw
unloadhw
mdm_drwr
mb_drwr
mdm_drrd
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
46
UG1208 (v2017.2) June 7, 2017
mb_drrd
configparams
version
xsdbserver start
xsdbserver stop
xsdbserver disconnect
xsdbserver version
(+$5
Load a Vivado HW design.
Syntax
loadhw [options]
Load a Vivado HW design, and set the memory map for the current target. If the current
target is a parent for a group of processors, memory map is set for all its child processors.
If current target is a processor, memory map is set for all the child processors of it's
parent. This command returns the HW design object.
Opons
Option Description
-hw HW design file.
-list Return a list of open designs for the targets.
Returns
Design object, if the HW design is loaded and memory map is set successfully. Error
string, if the HW design cannot be opened.
Example(s)
targets -filter {name =~ "APU"}; loadhw design.hdf Load the HW design named
design.hdf and set memory map for all the child processors of APU target. targets -filter
{name =~ "xc7z045"}; loadhw design.hdf Load the HW design named design.hdf and set
memory map for all the child processors for which xc7z045 is the parent.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
47
UG1208 (v2017.2) June 7, 2017
3*(+$5
Unload a Vivado HW design.
Syntax
unloadhw
Close the Vivado HW design which was opened during loadhw command, and clear the
memory map for the current target. If the current target is a parent for a group of
processors, memory map is cleared for all its child processors. If the current target is a
processor, memory map is cleared for all the child processors of it's parent. This
command doesn't clear memory map explicitly set by users.
Returns
Nothing.
))<.5.
Write to MDM debug register.
Syntax
mdm_drwr [options] <cmd> <data> <bitlen>
Write to MDM Debug Register. cmd is 8-bit MDM command to access a Debug Register.
data is the register value and bitlen is the register width.
Opons
Option Description
-user <bscan number> Specify user bscan port number. Default is 2.
Returns
Nothing, if successful. Error string, if BSCAN port is invalid.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
48
UG1208 (v2017.2) June 7, 2017
Example(s)
mdm_drwr 8 0x40 8
Write to MDM Break/Reset control register.
)<.5.
Write to MicroBlaze debug register.
Syntax
mb_drwr [options] <cmd> <data> <bitlen>
Write to MicroBlaze Debug Register available on MDM. cmd is 8-bit MDM command to
access a Debug Register. data is the register value and bitlen is the register width.
Opons
Option Description
-user <bscan number> Specify user bscan port number. Default is 2.
Returns
Nothing, if successful. Error string, if BSCAN port is invalid.
Example(s)
mb_drwr 1 0x282 10
Write to MB control register.
))<..
Read from MDM debug register.
Syntax
mdm_drrd [options] <cmd> <bitlen>
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
49
UG1208 (v2017.2) June 7, 2017
Read a MDM debug register. cmd is 8-bit MDM command to access a Debug Register
and bitlen is the register width. Returns hex register value.
Opons
Option Description
-user <bscan number> Specify user bscan port number. Default is 2.
Returns
Register value, if successful. Error string, if BSCAN port is invalid.
Example(s)
mdm_drrd 0 32
Read XMDC ID register.
)<..
Read from MicroBlaze debug register.
Syntax
mb_drrd [options] <cmd> <bitlen>
Read a MicroBlaze debug register available on MDM. Returns hex register value
Opons
Option Description
-user <bscan number> Specify user bscan port number. Default is 2.
cmd 8-bit MDM command to access a debug register.
bitlen Register width
Returns
Register value, if successful. Error string, if BSCAN port is invalid.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
50
UG1208 (v2017.2) June 7, 2017
Example(s)
mb_drrd 3 28
Read MB status register.
+*!#,.)/
List, get or set configuration parameters.
Syntax
configparams <options>
List name and description for available configuration parameters. Configuration
parameters can be global or connection specific, therefore the list of available
configuration parameters and their value may change depending on current connection.
configparams <options> <name>
Get configuration parameter value(s).
configparams <options> <name> <value>
Set configuration parameter value.
Opons
Option Description
-all Include values for all contexts in result.
-context
[context]
Specify context of value to get or set. The default context is ""
which represet the global default. Not all options support
context specific values.
Returns
Depends on the arguments specified.
<none>: List of paramters and description of each parameter
<parameter name>: Parameter value or error, if unsupported paramter is specified
<parameter name> <paramater value>: Nothing if the value is set, or error, if
unsupported paramter is specified
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
51
UG1208 (v2017.2) June 7, 2017
Example(s)
configparams force-mem-accesses 1
Disable access protection for dow, mrd, and mwr commands.
configparams sdk-launch-timeout 100
Change the SDK launch timeout to 100 second, used for running SDK batch mode
commands.
4./%+*
Get SDK or TCF server version.
Syntax
version [options]
Get SDK or TCF server version. When no option is specified, SDK build version is returned.
Opons
Option Description
-server Get the TCF server build version, for the active connection.
Returns
SDK or TCF Server version, on success. Error string, if server verison is requested when
there is no connection.
6//.4./0.0
Start XSDB command server.
Syntax
xsdbserver start [options]
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
52
UG1208 (v2017.2) June 7, 2017
Start XSDB command server listener. XSDB command server allows external processes to
connect to XSDB to evaluate commands. The XSDB server reads commands from from
the connected socket one line at the time. After evaluation a line is sent back starting with
"okay " or "error " followed by the result or error as a backslash quoted string.
Opons
Option Description
-host <addr> Limits the network interface on which to listen for incoming
connections.
-port <port> Specifies port to listen on. If this option is not specified or if the
port is zero then a dynamically allocated port number is used.
Returns
Server details are disaplayed on the console if server is started. successfully, or error
string, if a server has been already started.
Example(s)
xsdbserver start
Start XSDB server listener using dynamically allocated port.
xsdbserver start -host localhost -port 2000
Start XSDB server listener using port 2000 and only allow incoming connections on this
host.
6//.4./0+,
Stop XSDB command server.
Syntax
xsdbserver stop
Stop XSDB command server listener and disconnect connected client if any.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
53
UG1208 (v2017.2) June 7, 2017
Returns
Nothing, if the server is closed successfully. Error string, if the server has not been started
already.
6//.4.%/+**0
Disconnect active XSDB server connection.
Syntax
xsdbserver disconnect
Disconnect current XSDB server connection.
Returns
Nothing, if the connection is closed. Error string, if there is no active connection.
6//.4.4./%+*
Return XSDB command server version.
Syntax
xsdbserver version
Return XSDB command server protocol version.
Returns
Server version if there is an active connection. Error string, if there is no active connection.
//
The following is a list of jtag commands:
jtag targets
jtag sequence
jtag device_properties
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
54
UG1208 (v2017.2) June 7, 2017
jtag lock
jtag unlock
jtag claim
jtag disclaim
jtag frequency
jtag servers
&0#0.#0/
List JTAG targets or switch between JTAG targets.
Syntax
jtag targets
List available JTAG targets.
jtag targets <target id>
Select <target id> as active JTAG target.
Opons
Option Description
-set Set current target to entry single entry in list. This is useful in
comibination with -filter option. An error will be generate if list
is empty or contains more than one entry.
-regexp Use regexp for filter matching.
-nocase Use case insensitive filter matching.
-filter <filter-
expression>
Specify filter expression to control which targets are included in
list based on its properties. Filter expressions are similar to Tcl
expr syntax. Target properties are references by name, while Tcl
variables are accessed using the $ syntax, string must be
quoted. Operators ==, !=, <=, >=, <, >, && and || are
supported as well as (). There operators behave like Tcl expr
operators. String matching operator =~ and !~ match lhs string
with rhs pattern using either regexp or string match.
-target-
properties
Returns a Tcl list of dict's containing target properties.
-open Open all targets in list. List can be shorted by specifying target-
ids and using filters.
-close Close all targets in list. List can be shorted by specifying target-
ids and using filters.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
55
UG1208 (v2017.2) June 7, 2017
Returns
The return value depends on the options used.
<none>: Jtag targets list when no options are used
-filter: Filtered jtag targets list
-target-properties: Tcl list consisting of jtag target properties
An error is returned when jtag target selection fails.
Example(s)
jtag targets
List all targets.
jtag targets -filter {name == "arm_dap"}
List targets with name "arm_dap".
jtag targets 2
Set target with id 2 as the current target.
jtag targets -set -filter {name =~ "arm*"}
Set current target to target with name starting with "arm".
jtag targets -set -filter {level == 0}
List Jtag cables.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
56
UG1208 (v2017.2) June 7, 2017
&0#/-3*
Create JTAG sequence object.
Syntax
jtag sequence
Create JTAG sequence object. The jtag sequence command creates a new sequence
object. After creation the sequence is empty. The following sequence object commands
are available:
sequence state new-state [count]
Move JTAG state machine to <new-state> and then generate <count> JTAG clocks. If
<clock> is given and <new-state> is not a looping state (RESET, IDLE, IRSHIFT, IRPAUSE,
DRSHIFT or DRPAUSE) then state machine will move towards RESET state.
sequence irshift [options] [bits [data]]
Shift data in IRSHIFT state.
sequence drshift [options] bits [data]
Shift data in DRSHIFT state. Data is either given as the last argument or if -tdi option is
given then data will be all zeros or all ones depending on the argument given to -tdi. The
<bits> and <data> arguments are not used for irshift when the -register option is
specified.
Option Description
-register <name> Select instruction register by name. This option is only
supported for irshift.
-tdi <value> TDI value to use for all clocks in SHIFT state.
-binary Format of <data> is binary, for example data from a file or
from binary format.
-integer Format of <data> is an integer. The least significant bit of data
is shifted first.
-bits Format of <data> is a binary text string. The first bit in the
string is shifted first.
-hex Format of <data> is a hexadecimal text string. The least
significant bit of the first byte in the string is shifted first.
-capture Cature TDO data during shift and return from sequence run
command.
-state <new-
state>
State to enter after shift is complete. The default is RESET.
sequence delay usec
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
57
UG1208 (v2017.2) June 7, 2017
Generate delay between sequence commands. No JTAG clocks will be generated during
the delay. The delay is guaranteed to be at least <usec> microseconds, but can be longer
for cables that do not support delays without generating JTAG clocks.
sequence get_pin pin
Get value of <pin>. Supported pins is cable specific.
sequence set_pin pin value
Set value of <pin> to <value>. Supported pins is cable specific.
sequence atomic enable
Set or clear atomic sequences. This is useful to creating sequences that are guaranteed to
run with precise timing or fail. Atomic sequences should be as short as possible to
minimize the risk of failure.
sequence run [options]
Run JTAG operations in sequence for the currently selected jtag target. This command will
return the result from shift commands using -capture option and from get_pin
commands.
Option Description
-binary Format return value(s) as binary. The first bit shifted out is the
least significant bit in the first byte returned.
-integer Format return values(s) as integer. The first bit shifted out is the
least significant bit of the integer.
-bits Format return value(s) as binary text string. The first bit shifted
out is the first character in the string.
-hex Format return value(s) as hexadecimal text string. The first bit
shifted out is the least significant bit of the first byte of the in
the string.
-single Combine all return values as a single piece of data. Without this
option the return value is a list with one entry for every shift
with -capture and every get_pin.
sequence clear
Remove all commands from sequence.
sequence delete
Delete sequence.
Returns
Jtag sequence object.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
58
UG1208 (v2017.2) June 7, 2017
Example(s)
set seqname [jtag sequence] $seqname state RESET $seqname drshift -capture -tdi 0 256
set result [$seqname run] $seqname delete.
&0#4%<,.+,.1/
Get/set device properties.
Syntax
jtag device_properties idcode
Get JTAG device properties associated with <idcode>.
jtag device_properties key value ...
Set JTAG device properties.
Returns
Jtag device properties for the given idcode, or nothing, if the idcode is unknown.
Example(s)
jtag device_properties 0x4ba00477
Return Tcl dict containing device properties for idcode 0x4ba00477.
jtag device_properties {idcode 0x4ba00477 mask 0xffffffff name dap
irlen 4}
Set device properties for idcode 0x4ba00477.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
59
UG1208 (v2017.2) June 7, 2017
&0#(+'
Lock JTAG scan chain.
Syntax
jtag lock [timeout]
Lock JTAG scan chain containing current JTAG target. Wait for scan chain lock to be
available and then lock it. If <timeout> is specified the wait time is limited to <timeout>
milliseconds. The JTAG lock prevents other clients from performing any JTAG shifts or
state changes on the scan chain. Other scan chains can be used in parallel. The jtag
run_sequence command will ensure that all commands in the sequence are performed in
order so the use of jtag lock is only needed when multiple jtag run_sequence commands
needs to be done without interruption.
Note(s)
A client should avoid locking more than one scan chain since this can cause dead-
lock.
Returns
Nothing.
&0#3*(+'
Unlock JTAG scan chain.
Syntax
jtag unlock
Unlock JTAG scan chain containing current JTAG target.
Returns
Nothing.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
60
UG1208 (v2017.2) June 7, 2017
&0#(%)
Claim JTAG device.
Syntax
jtag claim <mask>
Set claim mask for current JTAG device. This command will attept to set the claim mask
for the current JTAG device. If any set bits in <mask> are already set in the claim mask
then this command will return error "already claimed". The claim mask allow clients to
negotiate control over JTAG devices. This is different from jtag lock in that 1) it is specific
to a device in the scan chain, and 2) any clients can perform JTAG operations while the
claim is in effect.
Note(s)
Currently claim is used to disable the hw_server debugger from controlling
microprocessors on ARM DAP devices and FPGA devices containing Microblaze
processors.
Returns
Nothing.
&0#%/(%)
Disclaim JTAG device.
Syntax
jtag disclaim <mask>
Clear claim mask for current JTAG device.
Returns
Nothing.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
61
UG1208 (v2017.2) June 7, 2017
&0# .-3*7
Get/set JTAG frequency.
Syntax
jtag frequency
Get JTAG clock frequency for current scan chain.
jtag frequency -list
Get list of supported JTAG clock frequencies for current scan chain.
jtag frequency frequency
Set JTAG clock frequency for current scan chain.
Returns
Nothing, if Jtag frequency is successfully set. Current Jtag frequency, if no arguments are
specified. Supported Jtag frequencies, if -list option is used. Error string, if invalid
frequency is specified or frequency cannot be set.
&0#/'5
Get/set JTAG skew.
Syntax
jtag skew
Get JTAG clock skew for current scan chain.
jtag skew <clock-skew>
Set JTAG clock skew for current scan chain.
Note(s)
Clock skew property is not supported by some Jtag cables.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
62
UG1208 (v2017.2) June 7, 2017
Returns
Current Jtag clock skew, if no arguments are specified, or if Jtag skew is successfully set.
Error string, if invalid skew is specified or skew cannot be set.
&0#/.4./
List, open or close JTAG servers.
Syntax
jtag servers [options]
List, open, and close JTAG servers. JTAG servers are use to implement support for
different types of JTAG cables. An open JTAG server will enumberate or connect to
available JTAG ports.
Opons
Option Description
-list List opened servers. This is the default if no other option is
given.
-format List format of supported server strings.
-open <server> Specifies server to open.
-close <server> Specifies server to close.
Returns
Depends on the options specified
<none>, -list: List of open Jtag servers
-format: List of supported Jtag servers
-close: Nothing if the server is closed, or an error string, if invalid server is specified
Example(s)
jtag servers
List opened servers and number of associated ports.
jtag servers -open xilinx-xvc:localhost:10200
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
63
UG1208 (v2017.2) June 7, 2017
Connect to XVC server on host localhost port 10200.
jtag servers -close xilinx-xvc:localhost:10200
Close XVC server for host localhost port 10200.
,.1+*/
Serial Vector Format (SVF) is an industry standard file format that is used to describe JTAG
chain operations in a compact, portable fashion. SVF files are portable because complicated
vendor-specific programming algorithms can be conveyed by generic SVF instructions,
requiring no special knowledge of the target device. XSCT provides commands that can
directly generate SVF files for memory accesses, downloading elfs to memory, stop/start the
core, reset the core etc.
NOTE: This feature is currently available only for ARM® Cortex-A53 cores.
The following is a list of svf commands:
svf config
svf generate
svf mwr
svf dow
svf stop
svf con
svf delay
/4 +*!#
Configure options for SVF file.
Syntax
svf config [options]
Configure and generate SVF file. Supported only for Cortex#A53.
Opons
Option Description
-scan-chain <list of
idcode-irlength pairs>
List of idcode-irlength pairs. This can be obtained
from xsdb command - jtag ta.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
64
UG1208 (v2017.2) June 7, 2017
Option Description
-device-index <dap index> This is used to select device in the jtag scan chain.
Select DAP.
-cpu-index <processor
core>
This is used to select A53 core Select 0 for A53#0, 1
for A53#1, 2 for A53#2, 3 for A53#3.
-out <filename> Output SVF file.
-delay <tcks> Delay in ticks between AP writes.
-linkdap Generate SVF for linking DAP to the jtag chain for
Silicon versions 2.0 and above.
Returns
Nothing.
Example(s)
svf config -scan-chain {0x14738093 12 0x5ba00477 4} -device-index 1
-cpu-index 0 -out "test.svf"
This creates a SVF file with name test.svf for core A53#0.
/4 #*.0
Generate recorded SVF file.
Syntax
svf generate
Generate SVF file in the path specified in the config command.
Opons
None
Returns
If successful, this command returns nothing. Otherwise it returns an error.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
65
UG1208 (v2017.2) June 7, 2017
Example(s)
svf generate
/4 )5.
Record memory write to SVF file.
Syntax
svf mwr <address> <value>
Write <value> to the memory address specified by <address>.
Opons
None
Returns
Nothing
Example(s)
svf mwr 0xffff0000 0x14000000
/4 +5
Record elf download to SVF file.
Syntax
svf dow <elf file>
Record downloading of elf file <elf file> to the memory.
Opons
None
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
66
UG1208 (v2017.2) June 7, 2017
Returns
Nothing
Example(s)
svf dow "fsbl.elf"
/4 /0+,
Record stopping of core to SVF file.
Syntax
svf stop
Record suspending execution of current target to SVF file.
Opons
None
Returns
Nothing
Example(s)
svf stop
/4 +*
Record resuming of core to SVF file.
Syntax
svf con
Record resuming the execution of active target to SVF file.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
67
UG1208 (v2017.2) June 7, 2017
Opons
None
Returns
Nothing
Example(s)
svf con
/4 (7
Record delay in tcks to SVF file.
Syntax
svf delay <delay in tcks>
Record delay in tcks to SVF file.
Opons
None
Returns
Nothing
Example(s)
svf delay 1000
Delay of 1000 tcks is added to the SVF file.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
68
UG1208 (v2017.2) June 7, 2017
.+&0/
These commands support creation of hardware, BSP and application projects. You can also
use the commands to manage repositories, set toolchain preferences, and configure, build
and run applications.
The following is a list of sdk commands:
openhw
closehw
openbsp
closebsp
updatemss
getaddrmap
getperipherals
repo
configbsp
setlib
removelib
getlibs
setdriver
getdrivers
setosversion
getos
regenbsp
setws
getws
createhw
updatehw
changebsp
createbsp
createapp
createlib
projects
importprojects
importsources
getprojects
deleteprojects
configapp
toolchain
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
69
UG1208 (v2017.2) June 7, 2017
+,*$5
Open a hardware design.
Syntax
openhw <hw-proj | hdf/xml file>
Open a hardware design exported from Vivado. HDF/XML file or the hardware project
created using 'createhw' command can be passed as argument.
Opons
None
Returns
If successful, this command returns nothing. Otherwise it returns an error.
Example(s)
openhw ZC702_hw_platform
Open the hardware project ZC702_hw_platform.
openhw /tmp/wrk/hw1/system.hdf
Open the hardware project corresponding to the system.hdf.
(+/$5
Close a hardware design.
Syntax
closehw <hw project | hdf/xml file>
Close a hardware design that was opened using 'openhw' command. HDF/XML file or the
hardware project created using 'createhw' command can be passed as argument..
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
70
UG1208 (v2017.2) June 7, 2017
Opons
None
Returns
If successful, this command returns nothing. Otherwise it returns an error.
Example(s)
closehw ZC702_hw_platform
Close the hardware project ZC702_hw_platform.
closehw /tmp/wrk/hw1/system.hdf
Close the hardware project corresponding to the system.hdf.
+,*/,
Open the BSP.
Syntax
openbsp <bsp-proj | mss-file>
Open the BSP from BSP project created using 'createbsp', or from the MSS file.
Opons
None
Returns
If successful, this command returns nothing. Otherwise it returns an error.
Example(s)
openbsp hello_bsp
Open the BSP project 'hello_bsp'.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
71
UG1208 (v2017.2) June 7, 2017
openbsp /tmp/wrk/hello_bsp/system.mss
Open the bsp project corresponding to the system.mss.
(+//,
Close the BSP.
Syntax
closebsp <bsp-proj | mss-file>
Close the BSP project specified by <bsp-project> or the BSP project corresponding to
the MSS file specified by <mss-project>.
Opons
None
Returns
If successful, this command returns nothing. Otherwise it returns an error.
Example(s)
closebsp hello_bsp
Close the BSP project 'hello_bsp'.
closebsp /tmp/wrk/hello_bsp/system.mss
Close the BSP project corresponding to the system.mss.
3,0)//
Update the mss file with the changes done to the BSP.
Syntax
updatemss [OPTIONS]
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
72
UG1208 (v2017.2) June 7, 2017
Update the mss file with changes done to the BSP..
Opons
Option Description
-mss <mss file> MSS file to be updated.
Returns
If successful, this command returns nothing. Otherwise it returns an error.
Example(s)
updatemss -mss system.mss
Update system.mss file with the changes done to the BSP.
#0.),
Get the address ranges of IP connected to processor.
Syntax
getaddrmap <hw proj | hw spec file> <processor-instance>
Return the address ranges of all the IP connected to the processor in a tabular format,
along with details like size and access flags of all IP.
Opons
None
Returns
If successful, this command returns the output of IPs and ranges. Otherwise it returns an
error.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
73
UG1208 (v2017.2) June 7, 2017
Example(s)
getaddrmap hw1 ps7_cortexa9_0
Return the address map of peripherals connected to ps7_cortexa9_0. hw1 is the hw
project, which is created using command 'createhw'.
getaddrmap system.hdf ps7_cortexa9_0
Return the address map of peripherals connected to ps7_cortexa9_0. system.hdf is the hw
specification file exported from Vivado.
#0,.%,$.(/
Get a list of all peripherals in the HW design.
Syntax
getperipherals <hw proj | hdf/xml file> <processor-instance>
Return the list of all the peripherals in the hardware design, along with version and type.
If [processor-instance] is specified, return only a list of slave peripherals connected to that
processor.
Opons
None
Returns
If successful, this command returns the list of peripherals. Otherwise it returns an error.
Example(s)
getperipherals system.hdf
Return a list of peripherals in the hardware design.
getperipherals system.hdf ps7_cortexa9_0
Return a list of peripherals connected to processor CortexA9#0 in the hardware design.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
74
UG1208 (v2017.2) June 7, 2017
.,+
Get, set, or modify software repositories.
Syntax
repo [OPTIONS]
Get/set the software repositories path currently used. This command can be used to scan
the repositories, to get the list of OS/libs/drivers/apps from repository.
Opons
Option Description
-set <path-list> Set the repository path and load all the software cores
available. Multiple repository paths can be specified as Tcl list.
-get Get the repository path(s).
-scan Scan the repositories. Used this option to scan the repositories,
when some changes are done.
-os Return a list of all the OS from the repositories.
-libs Return a list of all the libs from the repositories.
-drivers Return a list of all the drivers from the repositories.
-apps Return a list of all the applications from the repositories.
Returns
Depends on the OPTIONS specified.
-scan, -set <path-list>: Returns nothing.
-get: Returns the current repository path.
-os, -libs, -drivers, -apps: Returns the list of OS/libs/drivers/apps
respectively.
Example(s)
repo -set <repo-path>
Set the repository path to the path specified by <repo-path>.
repo -os
Return a list of OS from the repo.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
75
UG1208 (v2017.2) June 7, 2017
repo -libs
Return a list of libraries from the repo.
+*!#/,
Configure settings for BSP projects.
Syntax
configbsp [OPTIONS] [<param-name> [<value>]]
If <param-name> and <value> are not specified, returns the details of all configurable
parameters of processor, os, or all libraries in BSP. If <param-name> is specified and
<value> value is not specified, return the value of the parameter. If <param-name> and
<value> are specified, set the value of parameter.
Opons
Option Description
-bsp <bsp-proj | mss
file>
BSP project or mss file.
-proc Return the configurable parameters of processor in BSP.
-os Return the configurable parameters of OS in BSP.
-lib <lib-name> Return the configurable parameters of library <lib-
name> in BSP.
-append Append the value to the parameter in BSP.
Returns
Depends on the arguments specified.
<none>: List of paramters and description of each parameter of processor, os, or libs
depending on the option specified.
<parameter>: Parameter value or error, if unsupported parameter is specified.
<parameter> <value>: Nothing if the value is set, or error, if unsupported parameter
is specified.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
76
UG1208 (v2017.2) June 7, 2017
Example(s)
configbsp -bsp system.mss -os
Return the list of configurable parameters of the OS in the BSP.
configbsp -bsp system.mss -proc
Return the list of configurable parameters of processor in the BSP.
configbsp -bsp bsp1 -lib xilisf
Return the list of configurable parameters of library "xilisf" in the BSP.
configbsp -bsp system.mss extra_compiler_flags
Return the value of parameter 'extra_compiler_flags' in the BSP.
configbsp -bsp system.mss extra_compiler_flags "-pg"
Set "-pg" as the value of parameter 'extra_compiler_flags' in the BSP.
configbsp -bsp system.mss -append extra_compiler_flags "-pg"
Append "-pg" to the value of parameter 'extra_compiler_flags' in the BSP.
/0(%
Set library & version in BSP.
Syntax
setlib [OPTIONS]
Add a library to BSP. If version is not specified, latest library version available is added. If
library is already available in BSP, the library version is updated.
Opons
Option Description
-bsp <bsp-proj | mss
file>
BSP project or mss file.
-lib <lib-name> Library name to be added to BSP.
-ver <lib-ver> Library version to be added. Default latest version of
library is added.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
77
UG1208 (v2017.2) June 7, 2017
Returns
If successful, this command returns nothing. Otherwise it returns an error.
Example(s)
setlib -bsp hello_bsp -lib xilffs -ver 2.0
Add xilffs library version 2.0 to the BSP.
setlib -bsp hello_bsp -lib xilrsa
Add latest version of xilrsa library available in repo, to the BSP.
.)+4(%
Remove library from BSP.
Syntax
removelib [OPTIONS]
Remove specified library from BSP.
Opons
Option Description
-bsp <bsp-proj | mss file> BSP project or mss file.
-lib <lib-name> Library name to be removed from BSP.
Returns
If successful, this command returns nothing. Otherwise it returns an error.
Example(s)
removelib -bsp hello_bsp -lib xilffs
Remove xilffs library from the BSP.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
78
UG1208 (v2017.2) June 7, 2017
#0(%/
Get libraries from BSP.
Syntax
getlibs [OPTIONS]
Return a list of libraries and their versions from BSP in tabular format.
Opons
Option Description
-bsp <bsp-proj | mss-file> BSP project or mss file.
Returns
If successful, this command returns the library details. Otherwise it returns an error.
Example(s)
getlibs -bsp hello_bsp
Return the list of all libraries in the BSP.
/0.%4.
Set driver for IP in the BSP.
Syntax
setdriver [OPTIONS]
Set specified driver to the IP core in the BSP.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
79
UG1208 (v2017.2) June 7, 2017
Opons
Option Description
-bsp <bsp-proj | mss-
file>
BSP project or mss file to which the driver needs to be
added.
-ip <ip-name> IP instance for which driver needs to be set.
-driver <driver-name> Driver name which needs to be added to the BSP.
-ver <driver-version> Version of the driver.
Returns
If successful, this command returns nothing. Otherwise it returns an error.
Example(s)
setdriver -bsp hello_bsp -ip ps7_uart -driver generic -ver 2.0
Set the generic driver for the ps7_uart IP in the BSP.
#0.%4./
Get drivers from BSP.
Syntax
getdrivers [OPTIONS]
Return the list of drivers from the BSP in tabular form.
Opons
Option Description
-bsp <bsp-proj | mss-file> BSP project or mss file.
Returns
If successful, this command returns list of drivers. Otherwise it returns an error.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
80
UG1208 (v2017.2) June 7, 2017
Example(s)
getdrivers -bsp hello_bsp
Return the list of drivers assigned to the IPs in the BSP.
/0+/4./%+*
Set OS version in BSP.
Syntax
setosversion [OPTIONS]
Set specified OS version in the BSP. Latest version is added by default.
Opons
Option Description
-bsp <bsp-proj | mss-
file>
BSP project or mss file corresponding to the OS.
-ver <os-version> Version of the OS. Default latest version of OS is
added.
Returns
If successful, this command returns nothing. Otherwise it returns an error.
Example(s)
setosversion -bsp hello_bsp -ver 5.4
Set the OS version 5.4 in the BSP.
setosversion -bsp hello_bsp
Set the latest OS version from repo in the BSP.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
81
UG1208 (v2017.2) June 7, 2017
#0+/
Get OS details from BSP.
Syntax
getos [OPTIONS]
Return OS details from the BSP.
Opons
Option Description
-bsp <bsp-proj | mss-file> BSP project or mss file corresponding to the OS.
Returns
If successful, this command returns OS details, otherwise it returns an error.
Example(s)
getos -bsp hello_bsp
Return the OS details in the BSP.
.#*/,
Regenerate BSP sources.
Syntax
regenbsp [OPTIONS]
Regenerate the sources with the modifications made to BSP.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
82
UG1208 (v2017.2) June 7, 2017
Opons
Option Description
-bsp <bsp-proj | mss-file> BSP project or mss file.
Returns
If successful, this command returns nothing, otherwise it returns an error.
Example(s)
regenbsp -bsp hello_bsp
Regenerate the BSP sources with the changes done in the BSP settings.
/05/
Set SDK workspace.
Syntax
setws [OPTIONS] [path]
Set SDK workspace to <path>, for creating projects. If <path> doesn't exist, then the
directory is created. If <path> is not specified, then current directory is used.
Opons
Option Description
-switch <path> Close existing workspace and switch to new workspace.
Returns
Nothing if the workspace is set successfully. Error string, if the path specified is a file.
Example(s)
setws /tmp/wrk/wksp1
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
83
UG1208 (v2017.2) June 7, 2017
Set the current workspace to /tmp/wrk/wksp1.
setws -switch /tmp/wrk/wksp2
Close the current workspace and switch to new workspace /tmp/wrk/wksp2.
#05/
Get SDK workspace.
Syntax
getws
Return the current SDK workspace.
Returns
Current workspace.
.0$5
Create a hardware project.
Syntax
createhw [OPTIONS]
Create a hardware project using a hardware specification file.
Opons
Option Description
-name <project-name> Project name that should be created.
-hwspec <HW specfiction
file>
Hardware specification file for creating a hardware
project.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
84
UG1208 (v2017.2) June 7, 2017
Returns
Nothing, if the hardware project is created successfully. Error string, if invalid options are
used or if the project cannot be created.
Example(s)
createhw -name hw1 -hwspec system.hdf
Create a hardware project with name hw1 from the hardware specification file system.hdf.
3,0$5
Update a hardware project.
Syntax
updatehw [OPTIONS]
Update a hardware project with the changes in the new hardware specification file.
Opons
Option Description
-hw <hw-project> Hardware project that should be updated.
-newhwspec <hw
specfiction file>
New hardware specification file for updating the
hardware project.
Returns
Nothing, if the HW project is updated successfully. Error string, if invalid options are used
or if the project cannot be updated.
Example(s)
updatehw -hw hw1 -newhwspec system.hdf
Update the hardware project hw1 with the changes in the new hardware specification file
system.hdf.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
85
UG1208 (v2017.2) June 7, 2017
$*#/,
Change the referenced BSP for an application.
Syntax
changebsp [OPTIONS]
Change the referenced BSP for an application project.
Opons
Option Description
-app <application-project> Application project whose BSP should be changed.
-newbsp <BSP Project> New BSP which the application should refer.
Returns
Nothing, if the Application Project refernece changed. Error string, if invalid options are
used or if the project cannot be updated.
Example(s)
changebsp -app app1
Lists the bsp projects which can be referenced by the given application project.
changebsp -app app1 -newbsp test2_bsp
Change the referneced bsp for app1 to test2_bsp.
.0/,
Create a bsp project.
Syntax
createbsp [OPTIONS]
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
86
UG1208 (v2017.2) June 7, 2017
Create a bsp project for the specified hardware and processor.
Opons
Option Description
-name <project-
name>
Project name that should be created.
-proc <processor-
name>
Processor instance that should be used for creating bsp project.
-hwproject <hw
project name>
Hardware project for which the application or bsp project
should be created.
-os <OS name> OS type for the application project. Default type is standalone.
-mss <MSS File
path>
MSS File path for creating BSP. This option can be used for
creating a BSP from user mss file. When mss file is specified,
then processor and os options will be ignored and processor/os
details are extracted from mss file.
-arch <arch-type> Processor architecture, <arch-type> can be 32 or 64 This
option is used to build the project with 32/64 bit toolchain. This
is valid only for A53 processors, defaults to 32-bit for other
processors.
Returns
Nothing, if the BSP project is created successfully. Error string, if invalid options are used
or if the project cannot be created.
Example(s)
createbsp -name bsp1 -hwproject hw1 -proc ps7_cortexa9_0
Create a BSP project with name bsp1 from the hardware project hw1 for processor
'ps7_cortexa9_0'.
createbsp -name bsp1 -hwproject hw1 -proc ps7_cortexa9_0 -os
standalone
Create a BSP project with name bsp1 from the hardware project hw1 for processor
'ps7_cortexa9_0' and standalone os.
createbsp -name bsp1 -hwproject hw1 -mss system.mss
Create a BSP project with name bsp1 with all the details from system.mss.
createbsp -name bsp1 -hwproject hw1 -proc psu_cortexa53_0 -arch 32
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
87
UG1208 (v2017.2) June 7, 2017
Create a BSP project with name bsp1 for psu_cortexa53_0 using a 32 bit tool chain.
.0,,
Create an application project.
Syntax
createapp [OPTIONS]
Create an application project from a list of template applications.
Opons
Option Description
-name <project-
name>
Project name that should be created.
-app <template-
application-name>
Name of the template application. Default is "Hello World". Use
'repo -apps' command to get the list of all application
templates.
-proc <processor-
name>
Processor instance that should be used for creating application
project.
-hwproject <hw
project name>
Hardware project for which the application or bsp project
should be created.
-bsp <BSP project
name>
BSP project for which the application project should be created.
If this option is not specified, a default bsp is created.
-os <OS name> OS type for the application project. Default type is standalone.
-lang
<programming-
language>
<programming-language>, can be 'c' or 'c++'.
-arch <arch-type> Processor architecture, <arch-type> can be 32 or 64 This
option is used to build the project with 32/64 bit toolchain. This
is valid only for A53 processors, defaults to 32-bit for other
processors.
Returns
Nothing, if the Application project is created successfully. Error string, if invalid options
are used or if the project cannot be created.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
88
UG1208 (v2017.2) June 7, 2017
Example(s)
createapp -name hello1 -bsp bsp1 -hwproject hw1 -proc ps7_cortexa9_0
Create a default application "Hello World" project with name 'hello1' for processor
'ps7_cortexa9_0'.
createapp -name fsbl1 -app {Zynq FSBL} -hwproject hw1 -proc
ps7_cortexa9_0
Create a Zynq FSBL project with name 'fsbl1' and also creates a BSP 'fsbl1_bsp' for
processor 'ps7_cortexa9_0' and default OS 'standalone'.
createapp -name e1 -app {Empty Application} -hwproject hw2
-proc microblaze_0 -lang c++ Create an empty C++ application project with name 'e1'.
createapp -name hello2 -app {Hello World} -hwproject hw1
-proc psu_cortexa53_0 -arch 32 Create a Hello World application project with name
'hello2' for processor 'psu_cortexa53_0' with 32-bit tool chain.
.0(%
Create a library project.
Syntax
createlib [OPTIONS]
Create static or shared library project.
Opons
Option Description
-name <project-
name>
Project name that should be created.
-type <library-
type>
<library-type> can be 'static' or 'shared' Default type is
'shared'.
-proc <processor-
type>
Processor type that should be used for creating application
project. 'ps7_cortex9', 'microblaze', 'psu_cortexa53' or
'psu_cortexr5'.
-os <OS name> OS type for the application project. 'linux' or 'standalone'
Default type is linux.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
89
UG1208 (v2017.2) June 7, 2017
Option Description
-lang
<programming-
language>
<programming-language> can be 'c' or 'c++' Default is c.
-arch <arch-type> Processor architecture, <arch-type> can be 32 or 64 This
option is used to build the project with 32/64 bit toolchain. This
is valid only for A53 processors, defaults to 32-bit for other
processors.
-flags <compiler-
flags>
Optional - compiler flags.
Returns
Nothing, if the library project is created successfully Error string, if invalid options are
used or if the project cannot be created
Example(s)
createlib -name lib1 -type static -proc ps7_cortexa9
Create a static library project with name 'lib1' for processor 'ps7_cortexa9' and default os
'standalone' with default language 'C'
createlib -name lib2 type shared -proc psu_cortexa53 -os linux -lang
C++
Create a shared library project with name 'lib2' for processor 'psu_cortexa53' and Linux
OS with C++ language
createlib -name st-stnd-r5-c-flags -type static -proc psu_cortexr5
-os standalone -lang C -arch 32 -flags {-g3 -pg} Create a static library project with name
'st-stnd-r5-c-flags' for processor 'psu_cortexr5' and standalone OS with C language with
extra compiler flags '-g3 -pg'
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
90
UG1208 (v2017.2) June 7, 2017
,.+&0/
Build/clean projects.
Syntax
projects [OPTIONS]
Build/Clean a bsp/application project or all projects in workspace.
Opons
Option Description
-build | -clean Build / Clean projects.
-type <project-
type>
<project-type> can be "all", "bsp" or "app" Default type is
all.
-name <project-
name>
Name of the project that should be built.
Returns
Nothing, if the project is built successfully. Error string, if invalid options are used or if the
project cannot be built.
Example(s)
projects -build -type bsp -name hello_bsp
Build the BSP project 'hello_bsp'.
projects -build
Build all the projects in the current workspace.
projects -clean -type app
Clean all the application projects in the current workspace.
projects -clean
Clean all the projects in the current workspace.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
91
UG1208 (v2017.2) June 7, 2017
%),+.0,.+&0/
Import projects to workspace.
Syntax
importprojects <path>
Import all the SDK projects from <path> to workspace.
Returns
Nothing, if the projects are imported successfully. Error string, if project path is not
specified or if the projects cannot be imported.
Example(s)
importprojects /tmp/wrk/wksp1/hello1
Import sdk project(s) into the current workspace.
%),+.0/+3./
Import sources to an application project.
Syntax
importsources [OPTIONS]
Import sources from a path to application project in workspace.
Opons
Option Description
-name <project-
name>
Application Project to which the sources should be imported.
-path <source-
path>
Path from which the source files should be imported. All the
files/directories from the <source-path> are imported to
application project. All existing source files will be overwritten
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
92
UG1208 (v2017.2) June 7, 2017
Option Description
in the application, and new ones will be copied. Linker script
will not be copied to the application directory.
-linker-script Copies the linker script as well.
Returns
Nothing, if the project sources are imported successfully. Error string, if invalid options
are used or if the project sources cannot be imported.
Example(s)
importsources -name hello1 -path /tmp/wrk/wksp2/hello2
Import the 'hello2' project sources to 'hello1' application project without the linker script.
importsources -name hello1 -path /tmp/wrk/wksp2/hello2 -linker-script
Import the 'hello2' project sources to 'hello1' application project along with the linker
script.
#0,.+&0/
Get projects from the workspace.
Syntax
getprojects [OPTIONS]
Get hw/bsp/application projects or all projects from the workspace.
Opons
Option Description
-type <project-
type>
<project-type> can be "all", "hw", "bsp" or "app" Default
type is all.
Returns
List of all the projects of type <project-type> in the workspace.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
93
UG1208 (v2017.2) June 7, 2017
Example(s)
getprojects
Return the list of all the projects available in the current workspace.
getprojects -type hw
Return the list of hardware projects.
(0,.+&0/
Delete project(s) from the workspace.
Syntax
deleteprojects [OPTIONS]
Delete project(s) from the workspace or disk.
Opons
Option Description
-name Project name/list to be deleted List of projects should be
separated by semi-colon {proj1;proj2;proj3}.
-workspace-only Delete project from workspace only and not from disk. Default
operation is to delete projects from disk.
Returns
Nothing, if the projects are deleted successfully. Error string, if invalid options are used or
if the project cannot be deleted.
Example(s)
deleteprojects -name hello1
Delete the hello1 project from the disk.
deleteprojects -name hello1 -workspace-only
Delete the hello1 project from workspace only.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
94
UG1208 (v2017.2) June 7, 2017
+*!#,,
Configure settings for application projects.
Syntax
configapp
List name and description for available configuration parameters for the application
projects. Following configuration parameters can be configured for applications:
assembler-flags : Miscellaneous flags for assembler build-config : Get/set build
configuration compiler-misc : Compiler miscellaneous flags compiler-optimization :
Optimization level define-compiler-symbols : Define symbols. Ex. MYSYMBOL include-
path : Include path for header files libraries : Libraries to be added while linking library-
search-path : Search path for the libraries added linker-misc : Linker miscellaneous flags
linker-script : Linker script for linking undef-compiler-symbols : Undefine symbols. Ex.
MYSYMBOL.
configapp [OPTIONS] -app <app-name> <param-name>
Get the value of configuration parameter <param-name> for the application specified by
<app-name>.
configapp [OPTIONS] -app <app-name>
<param-name> <value> Set/modify/remove the value of configuration parameter
<param-name> for the application specified by <app-name>.
Opons
Option Description
-set Set the configuration paramter value to new <value>.
-add Append the new <value> to configuration parameter value.
-remove Remove <value> from the configuration parameter value.
-info Displays more information like possible values and possible
operations about the configuration parameter. A parameter
name must be specified when this option is used.
Returns
Depends on the arguments specified. <none> List of paramters and description of each
parameter.
<parameter name>: Parameter value or error, if unsupported paramter is specified.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
95
UG1208 (v2017.2) June 7, 2017
<parameter name> <paramater value>: Nothing if the value is set, or error, if
unsupported paramter is specified.
Example(s)
configapp
Return the list of all the configurable options for the application.
configapp -app test build-config
Return the current build configuration.
configapp -app test build-config release
Set the current build configuration to release.
configapp -app test define-compiler-symbols FSBL_DEBUG_INFO
Add the define symbol FSBL_DEBUG_INFO to be passed to the compiler.
configapp -app test -remove define-compiler-symbols FSBL_DEBUG_INFO
Remove the define symbol FSBL_DEBUG_INFO to be passed to the compiler.
configapp -app test compiler-misc {-pg}
Append the -pg flag to compiler misc flags.
configapp -app test -set compiler-misc {-c -fmessage-length=0 -MT"$@"}
Set flags specified to compiler misc
configapp -app test -info compiler-optimization
Display more information about possible values/operation and default operation for
compiler-optimization.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
96
UG1208 (v2017.2) June 7, 2017
0++($%*
Set or get toolchain used for building projects.
Syntax
toolchain
Return a list of available toolchains and supported processor types.
toolchain <processor-type>
Get the current toolchain for <processor-type>.
toolchain <processor-type> <tool-chain>
Set the <toolchain> for <processor-type>. Any new projects created will use the new
toolchain during build.
Returns
Depends on the arguments specified <none> List of available toolchains and supported
processor types.
<processor-type>: Current toolchain for processor-type.
<processor-type> <tool-chain>: Nothing if the tool-chain is set, or error, if
unsupported tool-chain is specified.
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
97
UG1208 (v2017.2) June 7, 2017
+))*/
XSCT provides higher level abstraction commands for Hardware Software Interface (HSI)
commands and you normally do not have to run the HSI commands in XSCT. However, if
there is a need, you can run HSI commands by prefixing hsi to each HSI command. For
example, hsi open_hw_design.
NOTE: You can use only one set of the commands at a time on any design. Interleaving both sets of
commands will lead to internal errors. For example, a design opened with hsi open_hw_design cannot
be closed using closehw.
XSCT keeps track of the open designs (both software and hardware). The table below lists
the HSI commands and their corresponding XCST commands.
HSI Command Corresponding XSCT Command
hsi open_hw_design openhw
hsi close_hw_design closehw
hsi open_sw_design openbsp
hsi close_sw_design closebsp
Any modifications done to the software design or the BSP, using HSI commands, are
stored in memory. Before using any other XSCT commands, you should run the
updatemss XSCT command, to ensure that these modifications are stored in the .mss file
of the BSP.
For more details on the HSI commands and their usage, refer to the Generating Basic Software
Platforms Reference Guide (UG1138).
Chapter 3: XSCT Commands
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
98
UG1208 (v2017.2) June 7, 2017
///
As with Xilinx® Software Development Kit (Xilinx SDK) , the first step to use Xilinx Software
Command-line Tool (XSCT) involves selecting a workspace. For creating and managing
projects, XSCT launches Xilinx SDK in the background. XSCT workspaces can be seamlessly
used with Xilinx SDK and vice-versa.
NOTE: At any given point of time, a workspace can either be used only from Xilinx SDK or XSCT.
The following is a list of use cases describing how you can use the tool to perform common
tasks:
Running Tcl Scripts
Creating an Application Project Using an Application Template
Modifying BSP Settings
Changing Compiler Options of an Application Project
Working with Libraries
Creating a Bootable Image and Program the Flash
Switching Between XSCT and Xilinx SDK Developement Environment
Performing Standalone Application Debug
Running an Application in Non-Interactive Mode
Debugging a Program Already Running on the Target
Using JTAG UART
Debugging Applications on Zynq UltraScale+ MPSoC
$*#%*#+),%(.,1+*/+ *,,(%1+*
.+&0
Below is an example XSCT session that demonstrates creating an empty application for
Cortex™ A53 processor, by adding the compiler option -std=c99.
setws /tmp/wrk/workspace
createhw –name hw0 –hwspec /tmp/wrk/system.hdf
createapp –name test –app {Empty Application} –proc psu_cortexa53_0
–hwproject hw0 –os standalone
importsources -name test -path /tmp/wrk/testsources/test/
configapp –app test -add compiler-misc {-std=c99}
projects –build
Chapter 4
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
99
UG1208 (v2017.2) June 7, 2017
.1*#*,,(%1+*.+&0/%*#*,,(%1+*
),(0
Below is an example XSCT session that demonstrates creating a FSBL project for an Cortex™ -
A53 processor.
NOTE: Creating an application project will create a BSP project by adding the necessary libraries.
FSBL_DEBUG_DETAILED symbol is added to FSBL for debug messages.
setws /tmp/wrk/workspace
createhw –name hw0 –hwspec /tmp/wrk/system.hdf
createapp –name fsbl1 –app {Zynq MP FSBL} –proc psu_cortexa53_0
–hwproject hw0 –os standalone
configapp –app fsbl1 define-compiler-symbols FSBL_DEBUG_DETAILED
projects –build
.1*#++0()#*.+#.)0$(/$
Below is an example XSCT session that demonstrates creating two applications (FSBL and
Hello World). Further, create a bootable image using the applications along with bitstream
and program the image on to the flash.
NOTE: Assuming the board to be zc702. Hence -flash_type qspi_single is used as an option in
program_flash.
setws /tmp/wrk/workspace
createhw –name hw0 –hwspec /tmp/wrk/system.hdf
createapp -name fsbl -app {Zynq FSBL} -proc ps7_cortexa9_0 -hwproject hw0
-os standalone
createapp -name hello -app {Hello World} -proc ps7_cortexa9_0 -hwproject
hw0 -os standalone
projects –build
exec bootgen -arch zynq -image output.bif -w -o BOOT.bin
exec program_flash -f /tmp/wrk/BOOT.bin -flash_type qspi_single
-blank_check -verify -cable \
type xilinx_tcf url tcp:localhost:3121
Chapter 4: XSCT Use Cases
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
100
UG1208 (v2017.2) June 7, 2017
3##%*#.+#.)(.73**%*#+*0$.#0
Xilinx® System Debugger Command-line Interface (XSDB) can be used to debug a program
which is already running on the target (for example, booting from flash). You need to connect
to the target and set the symbol file for the program running on the target. This method can
also be used to debug Linux kernel booting from flash. For best results, the code running on
the target should be compiled with debug information.
Below is an example of debugging a program already running on the target. For demo
purpose, the program has been stopped at main(), before this example session.
# Connect to hw_server
xsdb% conn -url TCP:xhdbfarmc7:3121
tcfchan#0
xsdb% Info: ARM Cortex-A9 MPCore #0 (target 2) Stopped at 0x1005a4
(Hardware Breakpoint)
xsdb% Info: ARM Cortex-A9 MPCore #1 (target 3) Stopped at 0xfffffe18
(Suspended)
# Select the target on which the program is running and specify the
symbol file using the
# memmap command
xsdb% targets 2
xsdb% memmap -file dhrystone/Debug/dhrystone.elf
# Once the symbol file is specified, the debugger maps the code on the
target to the symbol
# file. bt command can be used to see the back trace. Further debug is
possible, as shown in
# the first example
xsdb% bt
0 0x1005a4 main(): ../src/dhry_1.c, line 79
1 0x1022d8 _start()+88
2 unknown-pc
Chapter 4: XSCT Use Cases
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
101
UG1208 (v2017.2) June 7, 2017
3##%*#,,(%1+*/+*7*-(0.(I+
NOTE: For simplicity, this help page assumes that Zynq® UltraScale+™ MPSoC boots up in JTAG
bootmode. The flow described here can be applied to other bootmodes too, with minor changes.
When Zynq® UltraScale+™ MPSoC boots up JTAG bootmode, all the A53 and R5 cores are
held in reset. You must clear resets on each core, before debugging on these cores. 'rst'
command in XSCT can be used to clear the resets. 'rst -processor' clears reset on an individual
processor core. 'rst -cores' clears resets on all the processor cores in the group (APU or RPU),
of which the current target is a child. For example, when A53 #0 is the current target, rst -
cores clears resets on all the A53 cores in APU.
Below is an example XSCT session that demonstrates standalone application debug on A53
#0 core on Zynq UltraScale+ MPSoC.
NOTE: Similar steps can be used for debugging applications on R5 cores and also on A53 cores in 32 bit
mode. However, the A53 cores must be put in 32 bit mode, before debugging the applications. This should
be done after POR and before the A53 resets are cleared.
#connect to remote hw_server by specifying its url.
If the hardware is connected to a local machine,-url option and the <url>
are not needed. connect command returns the channel ID of the connection
xsdb% connect -url TCP:xhdbfarmc7:3121
tcfchan#0
# List available targets and select a target through its id.
The targets are assigned IDs as they are discovered on the Jtag chain,
so the IDs can change from session to session.
For non-interactive usage, -filter option can be used to select a target,
instead of selecting the target through its ID
xsdb% targets
1 PS TAP
2 PMU
3 MicroBlaze PMU (Sleeping. No clock)
4 PL
5 PSU
6 RPU (Reset)
7 Cortex-R5 #0 (RPU Reset)
8 Cortex-R5 #1 (RPU Reset)
9 APU (L2 Cache Reset)
10 Cortex-A53 #0 (APU Reset)
11 Cortex-A53 #1 (APU Reset)
12 Cortex-A53 #2 (APU Reset)
13 Cortex-A53 #3 (APU Reset)
xsdb% targets 5
# Configure the FPGA. When the active target is not a FPGA device,
the first FPGA device is configured
xsdb% fpga ZCU102_HwPlatform/design_1_wrapper.bit
Chapter 4: XSCT Use Cases
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
102
UG1208 (v2017.2) June 7, 2017
100% 36MB 1.8MB/s 00:24
# Source the psu_init.tcl script and run psu_init command to initialize PS
xsdb% source ZCU102_HwPlatform/psu_init.tcl
xsdb% psu_init
# PS-PL power isolation must be removed and PL reset must be toggled,
before the PL address space can be accessed
# Some delay is needed between these steps
xsdb% after 1000
xsdb% psu_ps_pl_isolation_removal
xsdb% after 1000
xsdb% psu_ps_pl_reset_config
# Select A53 #0 and clear its reset
# To debug 32 bit applications on A53, A53 core must be configured
to boot in 32 bit mode, before the resets are cleared
# 32 bit mode can be enabled through CONFIG_0 register in APU module.
See ZynqMP TRM for details about this register
xsdb% targets 10
xsdb% rst -processor
# Download the application program
xsdb% dow dhrystone/Debug/dhrystone.elf
Downloading Program -- dhrystone/Debug/dhrystone.elf
section, .text: 0xfffc0000 - 0xfffd52c3
section, .init: 0xfffd5300 - 0xfffd5333
section, .fini: 0xfffd5340 - 0xfffd5373
section, .note.gnu.build-id: 0xfffd5374 - 0xfffd5397
section, .rodata: 0xfffd5398 - 0xfffd6007
section, .rodata1: 0xfffd6008 - 0xfffd603f
section, .data: 0xfffd6040 - 0xfffd71ff
section, .eh_frame: 0xfffd7200 - 0xfffd7203
section, .mmu_tbl0: 0xfffd8000 - 0xfffd800f
section, .mmu_tbl1: 0xfffd9000 - 0xfffdafff
section, .mmu_tbl2: 0xfffdb000 - 0xfffdefff
section, .init_array: 0xfffdf000 - 0xfffdf007
section, .fini_array: 0xfffdf008 - 0xfffdf047
section, .sdata: 0xfffdf048 - 0xfffdf07f
section, .bss: 0xfffdf080 - 0xfffe197f
section, .heap: 0xfffe1980 - 0xfffe397f
section, .stack: 0xfffe3980 - 0xfffe697f
100% 0MB 0.4MB/s 00:00
Setting PC to Program Start Address 0xfffc0000
Successfully downloaded dhrystone/Debug/dhrystone.elf
# Set a breakpoint at main()
xsdb% bpadd -addr &main
0
Chapter 4: XSCT Use Cases
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
103
UG1208 (v2017.2) June 7, 2017
# Resume the processor core
xsdb% con
# Info message is displayed when the core hits the breakpoint
Info: Cortex-A53 #0 (target 10) Running
xsdb% Info: Cortex-A53 #0 (target 10) Stopped at 0xfffc0d5c (Breakpoint)
# Registers can be viewed when the core is stopped
xsdb% rrd
r0: 0000000000000000 r1: 0000000000000000 r2: 0000000000000000
r3: 0000000000000004 r4: 000000000000000f r5: 00000000ffffffff
r6: 000000000000001c r7: 0000000000000002 r8: 00000000ffffffff
r9: 0000000000000000 r10: 0000000000000000 r11: 0000000000000000
r12: 0000000000000000 r13: 0000000000000000 r14: 0000000000000000
r15: 0000000000000000 r16: 0000000000000000 r17: 0000000000000000
r18: 0000000000000000 r19: 0000000000000000 r20: 0000000000000000
r21: 0000000000000000 r22: 0000000000000000 r23: 0000000000000000
r24: 0000000000000000 r25: 0000000000000000 r26: 0000000000000000
r27: 0000000000000000 r28: 0000000000000000 r29: 0000000000000000
r30: 00000000fffc1f4c sp: 00000000fffe5980 pc: 00000000fffc0d5c
cpsr: 600002cd vfp sys
# Local variables can be viewed
xsdb% locals
Int_1_Loc : 1113232
Int_2_Loc : 30
Int_3_Loc : 0
Ch_Index : 0
Enum_Loc : 0
Str_1_Loc : char[31]
Str_2_Loc : char[31]
Run_Index : 1061232
Number_Of_Runs : 2
# Local variable value can be modified
xsdb% locals Number_Of_Runs 100
xsdb% locals Number_Of_Runs
Number_Of_Runs : 100
# Global variables and be displayed, and its value can be modified
xsdb% print Int_Glob
Int_Glob : 0
xsdb% print -set Int_Glob 23
xsdb% print Int_Glob
Int_Glob : 23
# Expressions can be evaluated and its value can be displayed
xsdb% print Int_Glob + 1 * 2
Int_Glob + 1 * 2 : 25
# Step over a line of source code
xsdb% nxt
Info: Cortex-A53 #0 (target 10) Stopped at 0xfffc0d64 (Step)
# View stack trace
xsdb% bt
Chapter 4: XSCT Use Cases
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
104
UG1208 (v2017.2) June 7, 2017
0 0xfffc0d64 main()+8: ../src/dhry_1.c, line 79
1 0xfffc1f4c _startup()+84: xil-crt0.S, line 110
+% 7%*#2*#/
Below is an example XSCT session that demonstrates building a Hello World application to
target the MicroBlaze™ processor. The STDIN & STDOUT OS parameters are changed to use
the MDM_0.
NOTE: Once the BSP settings are changed, it is necessary to update the mss & regenerate the BSP sources
to reflect the BSP changes in the source file before compiling.
setws /tmp/wrk/workspace
createhw –name hw0 –hwspec /tmp/wrk/system_mb.hdf
createapp –name hello –app {Hello World} –proc microblaze_0 –hwproject
hw0 –os standalone
configbsp -bsp hello_bsp stdin mdm_0
configbsp –bsp hello_bsp stdout mdm_0
updatemss -mss hello_bsp/system.mss
regenbsp -bsp hello_bsp
projects –build
. +.)%*#0*(+*,,(%1+*3#
Xilinx® System Command-line Tool (XSCT) can be used to debug standalone applications on
one or more processor cores simultaneously. The first step involved in debugging is to
connect to hw_server and select a debug target. You can now reset the system/processor
core, initialize the PS if needed, program the FPGA, download an elf, set breakpoints, run the
program, examine the stack trace, view local/global variables.
Below is an example XSCT session that demonstrates standalone application debug on Zynq®
- 7000 AP SoC. Comments begin with #.
#connect to remote hw_server by specifying its url.
#If the hardware is connected to a local machine,-url option and the
<url>
#are not needed. connect command returns the channel ID of the connection
xsct% connect -url TCP:xhdbfarmc7:3121 tcfchan#0
# List available targets and select a target through its id.
#The targets are assigned IDs as they are discovered on the Jtag chain,
#so the IDs can change from session to session.
#For non-interactive usage, -filter option can be used to select a
target,
#instead of selecting the target through its ID
xsct% targets
Chapter 4: XSCT Use Cases
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
105
UG1208 (v2017.2) June 7, 2017
1 APU
2 ARM Cortex-A9 MPCore #0 (Running)
3 ARM Cortex-A9 MPCore #1 (Running)
4 xc7z020
xsct% targets 2
# Reset the system before initializing the PS and configuring the FPGA
xsct% rst
# Info messages are displayed when the status of a core changes
Info: ARM Cortex-A9 MPCore #0 (target 2) Stopped at 0xfffffe1c (Suspended)
Info: ARM Cortex-A9 MPCore #1 (target 3) Stopped at 0xfffffe18 (Suspended)
# Configure the FPGA. When the active target is not a FPGA device,
#the first FPGA device is configured
xsct% fpga ZC702_HwPlatform/design_1_wrapper.bit
100% 3MB 1.8MB/s 00:02
# Run loadhw command to make the debugger aware of the processor cores’
memory map
xsct% loadhw ZC702_HwPlatform/system.hdf
design_1_wrapper
# Source the ps7_init.tcl script and run ps7_init and ps7_post_config
commands
xsct% source ZC702_HwPlatform/ps7_init.tcl
xsct% ps7_init
xsct% ps7_post_config
# Download the application program
xsct% dow dhrystone/Debug/dhrystone.elf
Downloading Program -- dhrystone/Debug/dhrystone.elf
section, .text: 0x00100000 - 0x001037f3
section, .init: 0x001037f4 - 0x0010380b
section, .fini: 0x0010380c - 0x00103823
section, .rodata: 0x00103824 - 0x00103e67
section, .data: 0x00103e68 - 0x001042db
section, .eh_frame: 0x001042dc - 0x0010434f
section, .mmu_tbl: 0x00108000 - 0x0010bfff
section, .init_array: 0x0010c000 - 0x0010c007
section, .fini_array: 0x0010c008 - 0x0010c00b
section, .bss: 0x0010c00c - 0x0010e897
section, .heap: 0x0010e898 - 0x0010ec9f
section, .stack: 0x0010eca0 - 0x0011149f
100% 0MB 0.3MB/s 00:00
Setting PC to Program Start Address 0x00100000
Successfully downloaded dhrystone/Debug/dhrystone.elf
# Set a breakpoint at main()
xsct% bpadd -addr &main
0
# Resume the processor core
xsct% con
Chapter 4: XSCT Use Cases
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
106
UG1208 (v2017.2) June 7, 2017
# Info message is displayed when the core hits the breakpoint
xsct% Info: ARM Cortex-A9 MPCore #0 (target 2) Stopped at 0x1005a4
(Breakpoint)
# Registers can be viewed when the core is stopped
xsct% rrd
r0: 00000000 r1: 00000000 r2: 0010e898 r3: 001042dc
r4: 00000003 r5: 0000001e r6: 0000ffff r7: f8f00000
r8: 00000000 r9: ffffffff r10: 00000000 r11: 00000000
r12: 0010fc90 sp: 0010fca0 lr: 001022d8 pc: 001005a4
cpsr: 600000df usr fiq irq
abt und svc mon
vfp cp15 Jazelle
# Memory contents can be displayed
xsct% mrd 0xe000d000
E000D000: 800A0000
# Local variables can be viewed
xsct% locals
Int_1_Loc : 1113232
Int_2_Loc : 30
Int_3_Loc : 0
Ch_Index : 0
Enum_Loc : 0
Str_1_Loc : char[31]
Str_2_Loc : char[31]
Run_Index : 1061232
Number_Of_Runs : 2
# Local variable value can be modified
xsct% locals Number_Of_Runs 100
xsct% locals Number_Of_Runs
Number_Of_Runs : 100
# Global variables and be displayed, and its value can be modified
xsct% print Int_Glob
Int_Glob : 0
xsct% print -set Int_Glob 23
xsct% print Int_Glob
Int_Glob : 23
# Expressions can be evaluated and its value can be displayed
xsct% print Int_Glob + 1 * 2
Int_Glob + 1 * 2 : 25
# Step over a line of source code
xsct% nxt
Info: ARM Cortex-A9 MPCore #0 (target 2) Stopped at 0x1005b0 (Step)
# View stack trace
xsct% bt
0 0x1005b0 main()+12: ../src/dhry_1.c, line 91
1 0x1022d8 _start()+88
2 unknown-pc
Chapter 4: XSCT Use Cases
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
107
UG1208 (v2017.2) June 7, 2017
# Set a breakpoint at exit and resume execution
xsct% bpadd -addr &exit
1
xsct% con
Info: ARM Cortex-A9 MPCore #0 (target 2) Running
xsct% Info: ARM Cortex-A9 MPCore #0 (target 2) Stopped at 0x103094
(Breakpoint)
xsct% bt
0 0x103094 exit()
1 0x1022e0 _start()+96
2 unknown-pc
While a program is running on A9 #0, you can download another elf onto A9 #1 and debug
it, using similar steps. Note that, it is not necessary to re-connect to the hw_server, initialize
the PS or configure the FPGA in such cases. You can just select A9 #1 target and download
the elf and continue with further debug.
*.1*#%(/
Serial Vector Format (SVF) is an industry standard file format that is used to describe JTAG
chain operations in a compact, portable fashion. Below is a example SVF script:
# Reset values of respective cores
set core 0
set apu_reset_a53 {0x380e 0x340d 0x2c0b 0x1c07}
# Generate SVF file for linking DAP to the JTAG chain
# Next 2 steps are required only for Rev2.0 silicon and above.
svf config -scan-chain {0x14738093 12 0x5ba00477 4
} -device-index 1 -linkdap -out "dapcon.svf"
svf generate
# Configure the SVF generation
svf config -scan-chain {0x14738093 12 0x5ba00477 4
} -device-index 1 -cpu-index $core -delay 10 -out "fsbl_hello.svf"
# Record writing of bootloop and release of A53 core from reset
svf mwr 0xffff0000 0x14000000
svf mwr 0xfd1a0104 [lindex $apu_reset_a53 $core]
# Record stopping the core
svf stop
# Record downloading FSBL
svf dow "fsbl.elf"
# Record executing FSBL
svf con
svf delay 100000
# Record some delay and then stopping the core
svf stop
# Record downloading the application
svf dow "hello.elf"
# Record executing application
svf con
# Generate SVF
svf generate
Chapter 4: XSCT Use Cases
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
108
UG1208 (v2017.2) June 7, 2017
NOTE: SVF files can only be recorded using XSCT. You can use any standard SVF player to play the SVF
file.
To play a SVF file in Vivado® Hardware manager, connect to a target and use the following
TCL command to play the file on the selected target.
execute_hw_svf <*.svf file>
3**%*#*,,(%1+*%*+*;*0.14+
Xilinx® System Debugger Command-line Interface (XSDB) provides a scriptable interface to
run applications in non-interactive mode. To run the program in previous example using a
script, create a tcl script (and name it as, for example, test.tcl) with the following
commands. The script can be run by passing it as a launch argument to xsdb.
connect -url TCP:xhdbfarmc7:3121
# Select the target whose name starts with ARM and ends with #0.
# On Zynq, this selects “ARM Cortex-A9 MPCore #0”
targets -set -filter {name =~ "ARM* #0"}
rst
fpga ZC702_HwPlatform/design_1_wrapper.bit
loadhw ZC702_HwPlatform/system.hdf
source ZC702_HwPlatform/ps7_init.tcl
ps7_init
ps7_post_config
dow dhrystone/Debug/dhrystone.elf
# Set a breakpoint at exit
bpadd -addr &exit
# Resume execution and block until the core stops (due to breakpoint)
# or a timeout of 5 sec is reached
con -block -timeout 5
Chapter 4: XSCT Use Cases
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
109
UG1208 (v2017.2) June 7, 2017
3**%*#(.%,0/
You can create Tcl scripts with XSCT commands and run them in an interactive or non-
interactive mode. In the interactive mode, you can source the script at XSCT prompt. For
example:
xsct% source xsct_script.tcl
In the non-interactive mode, you can run the script by specifying the script as a launch
argument. Arguments to the script can follow the script name. For example:
$ xsct xsct_script.tcl [args]
The script below provides a usage example of XSCT. This script creates and builds an
application, connects to a remote hw_server, initializes the Zynq® PS connected to remote
host, downloads and executes the application on the target. These commands can be either
scripted or run interactively.
# Set SDK workspace
setws /tmp/workspace
# Create a HW project
createhw -name hw1 -hwspec /tmp/system.hdf
# Create a BSP project
createbsp -name bsp1 -hwproject hw1 -proc ps7_cortexa9_0 -os standalone
# Create application project
createapp -name hello -hwproject hw1 -bsp bsp1 -proc ps7_cortexa9_0 -os
standalone \
-lang C -app {Hello World}
# Build all projects
projects -build
# Connect to a remote hw_server
connect -host raptor-host
# Select a target
targets -set -nocase -filter {name =~ “ARM* #0}
# System Reset
rst -system
# PS7 initialization
namespace eval xsdb {source /tmp/workspace/hw1/ps7_init.tcl; ps7_init}
# Download the elf
dow /tmp/workspace/hello/Debug/hello.elf
# Insert a breakpoint @ main
bpadd -addr &main
# Continue execution until the target is suspended
con -block -timeout 500
# Print the target registers
puts [rrd]
# Resume the target
con
Chapter 4: XSCT Use Cases
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
110
UG1208 (v2017.2) June 7, 2017
5%0$%*#05**%(%*6
4(+,)*0*4%.+*)*0
Below is an example XSCT session that demonstrates creating two applications using XSCT
and modifying the BSP settings. After the execution, launch the Xilinx® SDK development
environment and select the workspace created using XSCT, to view the updates.
NOTE: The workspace created in XSCT can be used from Xilinx SDK. However, at a time, only one instance
of the tool can use the workspace.
setws /tmp/wrk/workspace
createhw –name hw0 –hwspec /tmp/wrk/system.hdf
createbsp -name bsp0 -proc ps7_cortexa9_0 -hwproject hw0 -os standalone
createapp -name hello0 -app {Hello World} -proc ps7_cortexa9_0 -hwproject
hw0 -bsp bsp0 -os standalone
createapp -name fsbl0 -app {Zynq FSBL} -proc ps7_cortexa9_0 -hwproject
hw0 -bsp bsp0 -os standalone
projects –build
/%*#
Xilinx® System Debugger Command-line Interface (XSDB) supports virtual UART through
Jtag, which is useful when the physical Uart does not exist or is non-functional. To use Jtag
UART, the SW application should be modified to redirect STDIO to the Jtag UART. Xilinx SDK
provides a CoreSight driver to support redirecting of STDIO to virtual Uart, on ARM based
designs. For MB designs, the uartlite driver can be used. To use the virtual Uart driver, open
board support settings in Xilinx SDK and can change STDIN / STDOUT to coresight/mdm.
XSDB supports virtual UART through two commands.
jtagterminal - Start/Stop Jtag based hyper-terminal. This command opens a new
terminal window for STDIO. The text input from this terminal will be sent to STDIN and
any output from STDOUT will be displayed on this terminal.
readjtaguart - Start/Stop reading from Jtag Uart. This command starts polling STDOUT
for output and displays in on XSDB terminal or redirects it to a file.
Below is an example XSCT session that demonstrates how to use a JTAG terminal for STDIO.
connect
source ps7_init.tcl
targets -set -filter {name =~"APU"}
loadhw system.hdf
stop
ps7_init
targets -set -nocase -filter {name =~ "ARM*#0"}
rst –processor
dow <app>.elf
jtagterminal
Chapter 4: XSCT Use Cases
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
111
UG1208 (v2017.2) June 7, 2017
con
jtagterminal -stop #after you are done
Below is an example XSCT session that demonstrates how to use the XSCT console as STDOUT
for JTAG UART.
connect
source ps7_init.tcl
targets -set -filter {name =~"APU"}
loadhw system.hdf
stop
ps7_init
targets -set -nocase -filter {name =~ "ARM*#0"}
rst –processor
dow <app>.elf
readjtaguart
con
readjtaguart -stop #after you are done
Below is an example XSCT session that demonstrates how to redirect the STDOUT from JTAG
UART to a file.
connect
source ps7_init.tcl
targets -set -filter {name =~"APU"}
loadhw system.hdf
stop
ps7_init
targets -set -nocase -filter {name =~ "ARM*#0"}
rst –processor
dow <app>.elf
set fp [open uart.log w]
readjtaguart -handle $fp
con
readjtaguart -stop #after you are done
+.'%*#5%0$%..%/
Below is an example XSCT session that demonstrates creating a normal BSP and add XILFFS
and XILRSA libraries to the BSP. Create a FSBL application thereafter.
NOTE: Normal BSP do not contain any libraries.
setws /tmp/wrk/workspace
createhw –name hw0 –hwspec /tmp/wrk/system.hdf
createbsp -name bsp0 -proc ps7_cortexa9_0 -hwproject hw0 -os standalone
setlib -lib xilffs
setlib -lib xilrsa
updatemss -mss bsp0/system.mss
regenbsp -bsp bsp0
createapp -name fsbl0 -app {Zynq FSBL} -proc ps7_cortexa9_0 -bsp bsp0
Chapter 4: XSCT Use Cases
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
112
UG1208 (v2017.2) June 7, 2017
-hwproject hw0 -os standalone
projects –build
Changing the OS version.
setosversion -ver 5.2
Assigning a driver to an IP.
setdriver -ip ps7_uart_1 -driver generic
Removing a library (removes xilrsa library from BSP).
removelib -lib xilrsa
Chapter 4: XSCT Use Cases
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
113
UG1208 (v2017.2) June 7, 2017
%1+*(/+3./*#(+1/
%(%*6/+3./
For support resources such as Answers, Documentation, Downloads, and Forums, see Xilinx
Support.
+(31+**0./
See the Xilinx Solution Centers for support on devices, software tools, and intellectual
property at all stages of the design cycle. Topics include design assistance, advisories, and
troubleshooting tips
(/8),+.0*0#(+1/
The information disclosed to you hereunder (the “Materials”) is provided solely for the
selection and use of Xilinx products. To the maximum extent permitted by applicable law: (1)
Materials are made available "AS IS" and with all faults, Xilinx hereby DISCLAIMS ALL
WARRANTIES AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING BUT NOT
LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-INFRINGEMENT, OR FITNESS FOR
ANY PARTICULAR PURPOSE; and (2) Xilinx shall not be liable (whether in contract or tort,
including negligence, or under any other theory of liability) for any loss or damage of any kind
or nature related to, arising under, or in connection with, the Materials (including your use of
the Materials), including for any direct, indirect, special, incidental, or consequential loss or
damage (including loss of data, profits, goodwill, or any type of loss or damage suffered as a
result of any action brought by a third party) even if such damage or loss was reasonably
foreseeable or Xilinx had been advised of the possibility of the same. Xilinx assumes no
obligation to correct any errors contained in the Materials or to notify you of updates to the
Materials or to product specifications. You may not reproduce, modify, distribute, or publicly
display the Materials without prior written consent. Certain products are subject to the terms
and conditions of Xilinx’s limited warranty, please refer to Xilinx’s Terms of Sale which can be
viewed at www.xilinx.com/legal.htm#tos; IP cores may be subject to warranty and support
terms contained in a license issued to you by Xilinx. Xilinx products are not designed or
intended to be fail-safe or for use in any application requiring fail-safe performance; you
assume sole risk and liability for use of Xilinx products in such critical applications, please refer
to Xilinx’s Terms of Sale which can be viewed at www.xilinx.com/legal.htm#tos.
Appendix A
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
114
UG1208 (v2017.2) June 7, 2017
AUTOMOTIVE APPLICATIONS DISCLAIMER
AUTOMOTIVE PRODUCTS (IDENTIFIED AS “XA” IN THE PART NUMBER) ARE NOT
WARRANTED FOR USE IN THE DEPLOYMENT OF AIRBAGS OR FOR USE IN APPLICATIONS
THAT AFFECT CONTROL OF A VEHICLE (“SAFETY APPLICATION”) UNLESS THERE IS A SAFETY
CONCEPT OR REDUNDANCY FEATURE CONSISTENT WITH THE ISO 26262 AUTOMOTIVE
SAFETY STANDARD (“SAFETY DESIGN”). CUSTOMER SHALL, PRIOR TO USING OR
DISTRIBUTING ANY SYSTEMS THAT INCORPORATE PRODUCTS, THOROUGHLY TEST SUCH
SYSTEMS FOR SAFETY PURPOSES. USE OF PRODUCTS IN A SAFETY APPLICATION WITHOUT A
SAFETY DESIGN IS FULLY AT THE RISK OF CUSTOMER, SUBJECT ONLY TO APPLICABLE LAWS
AND REGULATIONS GOVERNING LIMITATIONS ON PRODUCT LIABILITY.
© Copyright 2016-2017 Xilinx, Inc. Xilinx, the Xilinx logo, Artix, ISE, Kintex, Spartan, Virtex,
Vivado, Zynq, and other designated brands included herein are trademarks of Xilinx in the
United States and other countries. All other trademarks are the property of their respective
owners.
Appendix A: Addional Resources and Legal Noces
Xilinx Software Command-Line Tools (XSCT): Reference Guide
UG1208 (v2017.1) April 5, 2017 www.xilinx.com
115
UG1208 (v2017.2) June 7, 2017

Navigation menu