User manual

Table Of Contents
Zynq-7000 AP SoC Technical Reference Manual www.xilinx.com 160
UG585 (v1.11) September 27, 2016
Chapter 6: Boot and Configuration
6.1.10 Starting Code on CPU 1
CPU 0 is in charge of starting code execution on CPU 1. The BootROM puts CPU 1 into the Wait for
Event mode. Nothing has been enabled and only a few general purpose registers have been
modified to place it in a state where it is waiting at the WFE instruction.
There is a small amount of protocol required for CPU 0 to start an application on CPU1. When CPU 1
receives a system event, it immediately reads the contents of address
0xFFFFFFF0 and jumps to that
address. If the SEV is issued prior to updating the destination address location (
0xFFFFFFF0), CPU 1
continues in the WFE state because
0xFFFFFFF0 has the address of the WFE instruction as a safety
net. If the software that is written to address
0xFFFFFFF0 is invalid or points to uninitialized memory,
results are unpredictable.
Only ARM-32 ISA code is supported for the initial jump on CPU 1. Thumb and Thumb-II code is not
supported at the destination of the jump. This means that the destination address must be 32-bit
aligned and must be a valid ARM-32 instruction. If these conditions are not met, results are
unpredictable.
The steps for CPU 0 to start an application on CPU 1 are as follows:
1. Write the address of the application for CPU 1 to
0xFFFFFFF0.
2. Execute the SEV instruction to cause CPU 1 to wake up and jump to the application.
The address range
0xFFFFFE00 to 0xFFFFFFF0 is reserved and not available for use until the stage 1
or above application is fully functional. Any access to these regions prior to the successful start-up
of the second CPU causes unpredictable results.
6.1.11 Development Environment
For development and debug, the JTAG interface provides access to the DAP and TAP controllers for
system control. These controllers provide a wide range of capabilities for the developer. The
developer also has the optional ability to access the ARM Test Port User Interface (TPUI) to have a
high bandwidth debug datapath from the APU to the debug tools. These test and debug features are
described in Chapter 27, JTAG and DAP Subsystem.
In JTAG boot mode, a flash device is not required, but can be part of the system. When booting from
a flash device in non-secure mode, the JTAG interface and DAP/TAP controllers can be enabled for
debug and test.
In JTAG boot mode, the BootROM disables access to the hard-coded ROM memory, as usual, and
then executes the WFE instruction in the CPU. JTAG boot mode has control flexibility for a
development environment with access to the PS AXI interconnect via the DAP controller shown in
Figure 5-1, page 120.
The JTAG I/O connections are explained in Chapter 27, JTAG and DAP Subsystem. The debug
environment is described in Chapter 28, System Test and Debug.