Xapp1078 was created in February 2013. This article describes the way to start running two cores, with two CPU cores running Linux and Bare-metal, respectively. It's been the past four years, so call it a traditional amp solution.
Key processes for this scenario:
(1) Modify the FSBL source code so that it can load multiple elf and bit files until it encounters the flag load address to stop load and return to run U-boot.
(2) through the configuration file image.bif core0 u-boot.elf and core1 bare-metal.elf files are included in the dummy BIN file for load stop, and then run Bootgen build Boot.bin.
(3) After the dual-core boot, the core1 is in Wfe state. CORE0 first writes the Bare-metal.elf's run address to the WFE loop's detection address, then SEV or interrupts Wake core1, then core1 jumps to run bare-metal.elf. CORE0 launches the Linux app from the file system and communicates with Core1.
Ug1186 was created in May 2017, the article describes how to implement AMP using the Openamp Framework on ZYNQ, with two CPU cores running Linux and Bare-metal, respectively. Called it the Openamp scheme. The Master Linux CPU core uses the Remoteproc API to control the lifecycle of the remote kernel (life cycle management LCM), assigning system resources to remote processor and creating virtio devices. Communication between software running on different CPU cores is implemented through the Rpmsg API.
Key processes for this scenario:
(1) Design Bare-metal.elf program based on Remoteproc and rpmsg.
(2) Bare-metal.elf is added to the Petalinux project, and subsequent Remoteproc calls bare-metal.elf in the filesystem of Linux.
(3) Configure kernel corresponding options to work with Openamp.
Compare traditional Xilinx amp scenarios and Openamp scenarios-xapp1078 and ug1186