Xilinx Zynq-7000
The Xilinx Zynq-7000 are Cortex-A9 based microcontrollers
Flash Banks
QSPI Flash
QSPI flash programming requires special handling compared to internal flash. For more information about this, please see the QSPI Flash Programming Support article.
J-Link supports QSPI programming for Zynq-7000 for the flash bank located at 0xFC000000. There are multiple loaders available. The default loader assumes that an external osciallator running at 33 MHz is used and uses this as a base clock for the PLL to run the flash programming at 50 MHz. If you are using an oscillator that is running faster than 33 MHz, we recommend using the NoPLLInit loader. Otherwise proper execution of the flash operation is not guaranteed.
| Device | Base address | Maximum size | Available loaders |
|---|---|---|---|
| XA7Z010 XA7Z020 XC7Z007S XC7Z012S XC7Z014S XC7Z010 XC7Z015 XC7Z020 XC7Z030 XC7Z035 XC7Z045 XC7Z100 XQ7Z020 |
0xFC000000 | 16 MB |
|
Device Specifc Handling
Reset
- The devices uses normal Cortex-A reset, no special handling necessary, like described here.
eFUSE Programming
The eFuses (electronic fuses) on Xilinx Zynq-7000 SoCs provide a secure, one-time programmable (OTP) mechanism for storing device configuration and security parameters directly within the silicon. Once programmed, an eFuse bit cannot be reverted, making it an ideal method for setting permanent device attributes such as boot configuration options, encryption keys, security states, or unique identifiers.
eFUSE programming is only supported by Flasher via U-Flash.
Supported operations:
- Programming AES key fuses
- Programming Usr fuses
- Setting write protection of AES key and Usr fuses
- Setting write protection of the control register
- Setting read protection of the AES key
Due to error correction codes, all data must be programmed at once.
- The device needs to be connected directly to the Flasher. No other devices are allowed in the JTAG chain
- The security configuration is only written, if the programmed fuses could be verified successfully
eFUSE Memory Mapping
The Key and Usr fuses are extracted from a data file with the following address mapping:
| Bank name | Base address | Maximum size |
|---|---|---|
| Key | 0x0000 | (32 bytes) |
| Usr | 0x1000 | (4 bytes) |
Evaluation Boards
- Xilinx ZedBoard evaluation board: https://wiki.segger.com/Zedboard_Evalboard
- Xilinx MicroZed evaluation board: https://wiki.segger.com/MicroZed_Evalboard
Tracing on Zynq series
Tracing on Xilinx Zynq
Minimum requirements
In order to use trace on the Xilinx Zynq SoC, the following minimum requirements have to be met:
- J-Link software version V7.92n or later
- Ozone V3.30c or later (if streaming trace and / or the sample project from below shall be used)
- SEGGER Embedded Studio V7.32
- J-Trace PRO for Cortex-M HW version V3.0 or later for streaming trace
- J-Link Plus V12 or later for ETB trace
To rebuild the project our IDE Embedded Studio can be used. The recommended version to rebuild the projects is V6.30. But the examples are all prebuild and work out-of-the box with Ozone, so rebuilding is not necessary.
Streaming trace
The project has been tested with the minimum requirements mentioned above and a trace capable board. Trace board design recommendations can be found here: Trace board design recommendations
Example project: Xilinx_Zynq_XC7007_TracePins.zip
Note: The example is shipped with a compiled .JLinkScriptfile which will initialize the following MIO pins as trace pins: TCLK = PS_MIO24_501, TD0 = PS_MIO26_501, TD1 = PS_MIO27_501, TD2 = PS_MIO22_501, TD3 = PS_MIO23_501. Should you need the original source, please get in touch with SEGGER directly via our support system: https://www.segger.com/ticket/. If you are routing the trace pins via the FPGA no additional script file is needed, you only need to have the J-Link software version installed listed under "Minimum requirements".
To create your own .JLinkScriptfile you can use the following guide as reference: How_to_configure_JLinkScript_files_to_enable_tracing
Pin tracing via the FPGA
The Xilinx Zynq family supports routing the trace pins via the FPGA circuit for more flexibility. Please note that in that case you will need to make sure that the FPGA image has been programmed and loaded before starting to trace your application in the Cortex-A9 main core, otherwise trace data might be missing.
Trace buffer (ETB)
Example Project: Xilinx_Zynq_XC7007_TraceBuffer.zip