Changes

Jump to: navigation, search
no edit summary
== Introduction ==
This application note describes how to build the software components required to set up asymmetric multi-processing (AMP for short) configuration required to run Linux OS on first Cortex-A9 core (also denoted as core #0) and FreeRTOS on second Cortex-A9 core (also denoted as core #1) of the Zynq SOC.
Asymmetric Multiprocessing (AMP) allows a multiprocessor/multicore system to run multiple Operating Systems (OS) that are independent of each other. In other words, each CPU has its own private memory space, which contains the OS and the applications that are to run on that CPU. In addition, there can be some shared memory space that is used for multiprocessor communication. This is contrasted with Symmetric Multiprocessing (SMP), in which one OS runs on multiple CPUs using a public shared memory space. Thanks to AMP, developers can use open-source Linux and FreeRTOS operating systems and the RPMsg Inter Processor Communication (IPC) framework between the Zynq's two high-performance ARM® Cortex™-A9 processors to quickly implement applications that need to deliver deterministic, real-time responsiveness for markets such as automotive, industrial and others with similar requirements. For further information, please refer to this [http://www.wiki.xilinx.com/Multi-OS+Support+%28AMP+%26+Hypervisor%29 link].
* JP17.4 – UART0_TX
* JP17.6 – UART0_RX
Please follow the steps listed below to build a HelloWorld application that prints a message on UART0 (via EMIO) on FreeRTOS running on Bora core #21.
* From the SDK GUI, create e new application project:
[[File:AN-BELK-001_01.jpg|600px|thumb|center]]
**:this is a brief description of these variables
***<code>program_fpga</code>: Loads FPGA binary from TFTP and programs the bitstream
***<code>load_freertos</code>: Loads freertos application binary from TFTP and writes application start address for core #2 1
***<code>mem=${kernel_memory}</code>: sets maximum kernel memory (1008M = 1024M - 16M)
***<code>maxcpus=${nr_cpus}</code>: sets maximum Linux cores to 1
#linux kernel boots, enabling and using both cores
#RPMsg and virtio drivers (compiled as modules) are loaded
#core #2 1 is released
#FreeRTOS binary image is loaded
#core #2 1 is started.In other words, boot process of core #2 1 is under the control of the Linux o.s. In principle this allows a dynamic use of the core #2 1 that can be allocated for FreeRTOS application only when it is actually needed.
The example performs IRQ latency measurements on FreeRTOS side by using a hardware timer. These measures are collected by the counterpart application running on Linux side and shown on console. Plese follow the steps listed below:
**:this a brief description of these variables
***:<code>program_fpga</code>: Loads FPGA binary from TFTP and programs the bitstream
***:<code>load_freertos</code>: Loads freertos application binary from TFTP and writes application start address for core #21
* Boot the system running the following command: <code>run net_nfs</code>
4,650
edits

Navigation menu