XAPP1078 (v1.0) February 14, 2013 www.xilinx.com 1
© Copyright 2013 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. ARM and Cortex are trademarks of ARM in the EU and other countries. All other trademarks are the property of their respective owners.
Summary The Zynq™-7000 All Programmable SoC contains two ARM® Cortex™-A9 processors that
can be configured to concurrently run independent software stacks or executables. This
application note describes a method of starting up both processors, each running its own
operating system and application, and allowing each processor to communicate with the other
through shared memory.
Included
Systems
The design is created and built using the Xilinx Platform Studio (XPS) 14.3. The design also
includes software built using the Xilinx Software Development Kit (SDK). A complete set of
project files is provided with this application note to allow the designer to examine and rebuild
the design or use the files as a template for starting a new design.
Pre-built and pre-implemented files targeting the Zynq-7000 ZC702 demonstration platform are
also provided in case the designer wants to skip the steps of reproducing hardware, software,
or boot file targets.
Introduction The Zynq-7000 AP SoC provides two Cortex-A9 processors that share common memory and
peripherals. Asymmetric multiprocessing (AMP) is a mechanism that allows both processors to
run their own operating systems or bare-metal applications with the possibility of loosely
coupling those applications via shared resources. The reference design includes the hardware
and software necessary to build a reference design that runs both Cortex-A9 processors in an
AMP configuration. CPU0 runs Linux and CPU1 runs a bare-metal application. Care has been
taken to prevent the CPUs from conflicting on shared hardware resources. This document also
describes how to create a bootable solution and how to debug both CPUs.
Design
Overview
In this reference design, each of the two Cortex-A9 processors is configured to run its own
software. CPU0 is configured to run Linux and CPU1 is configured to run a bare-metal
application.
In this AMP example, the Linux operating system running on CPU0 is the master of the system
and is responsible for:
• System initialization
• Controlling CPU1’s startup
• Communicating with CPU1
• Interacting with the user
The bare-metal application running on CPU1 is responsible for:
• Managing a “heart beat” that can be monitored by Linux on CPU0
• Communicating with Linux on CPU0
• Servicing interrupts from a core in the programmable logic (PL)
• Communicating interrupt events to Linux running on CPU0
Application Note: Zynq-7000 AP SoC
XAPP1078 (v1.0) February 14, 2013
Simple AMP Running Linux and Bare-Metal
System on Both Zynq SoC Processors
Author: John McDougall