User manual

Table Of Contents
Zynq-7000 AP SoC Technical Reference Manual www.xilinx.com 155
UG585 (v1.11) September 27, 2016
Chapter 6: Boot and Configuration
If the system is booted in secure mode and then reset by a non-POR reset with a BootROM Header
that indicates a non-secure boot, then the system goes into a secure lockdown with error code
0x201A.
BootROM Header Search
If the BootROM does not detect a valid BootROM Header, the BootROM performs a search function
to find another BootROM Header. The search function is described in section 6.3.10 BootROM
Header Search. BootROM Header search is supported for Quad-SPI, NAND and NOR boot modes.
The BootROM Header is never encrypted and the search functions work with an encrypted or
un-encrypted FSBL/User code images.
BootROM Execution Influencers
The BootROM is influenced by different conditions. Some are intentional, others are not.
Pin strapping
Reset signal pins
Validity of the BootROM Header (checksum for header search)
BootROM Header boot mode and conflicts that cause lockdown errors
Error Detection, Device Lockdown and Error Codes
If the BootROM detects an error while executing the BootROM Header, it locks down the system and
generate an error code. There are two lockdown types:
Secure Lockdown (no access to device, requires a POR to restart the system).
Non-secure Lockdown (JTAG might be enabled and any system reset can restart the system to
run the BootROM again).
When a lockdown occurs, the error code is written into the slcr.REBOOT_STATUS register. The error
codes are listed in Table 6-20, page 198.
6.1.6 FSBL / User Code Execution
The FSBL/User code executes after the BootROM is finished. The FSBL/User code reconfigures the PS
as needed and optionally configures the PL. The BootROM loads the FSBL/User code into the OCM
unless the execute-in-place option is enabled. The FSBL/User code operations:
Initialize the PS using the PS7 Init data that is generated by Vivado tools (MIO, DDR, etc.)
Program the PL using a bitstream (if provided).
Load the second stage bootloader or bare-metal application code into DDR memory.
Hand off system control to the second stage bootloader or bare-metal application.
The FSBL/User code requirements are explained in UG821
, Zynq-7000 All Programmable SoC Software
Developers Guide. FSBL code can be generated by the Vivado SDK for bare-metal applications.