Changes

Jump to: navigation, search
Introduction
This application note describe 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 and FreeRTOS on second Cortex®-A9 core of the Freescale i.MX6 SOC. The latencystat demo is a RPMsg-based application that exploits sophisticated techniques to handle inter-processors communication and synchronization.
Please download == Asymmetric Multiprocessing == Thanks to latest technological improvements, multicore processors are becoming popular in embedded world too. These architectures allows the implementation of processing schemes that were not feasible with traditional single-core CPUs. Among these, one of the most interesting is asymmetric multiprocessing (AMP for short). This configuration permits to address several requirements that the embedded system developers struggle to handle in case of single-core systems. This application note describes in detail the implementation of Linux/FreeRTOS asymmetric multiprocessing configuration on DAVE Embedded Systems AXEL LITE SoM. This configuration is a typical example about how to leverage AMP flexibility to combine, on one single piece of silicon, the versatility of Linux o.s. for general purpose computation, connectivity and HMI and the determinism of an RTOS to satisfy real-time constraints. Since AXEL family products are all based on Freescale i.MX6 processors, what here described applies to AXEL ULTRA too. As known, AMP allows a multicore system to run simultaneously1 multiple Operating Systems (OS) that are independent of each other. In other words, each core has its own private memory space, which contains the OS and the applications that are to run on that core. In addition, there can be some shared memory space that is used for inter-core communication. This is in contrast to Symmetric Multiprocessing (SMP), in which one OS runs on multiple cores 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 to quickly implement applications that need to deliver deterministic, real-time responsiveness for markets such as automotive, industrial and others with similar requirements, while preserving the openness of Linux. The following picture depicts the structure of the system. [[File:XELK-amp-config.png|thumb|center|400px|AMP configuration]] Core #0: === Inter-core communication ===● takes care of boot process● once Linux gets control of processor, initializes core #1 in SMP mode● stops core #1 and switches it to AMP mode● loads binary image of FreeRTOS that is then executed by core #1 Inter-core communication is based on RPMsg framework2. The adoption of a standardized and mainlined protocol improves dramatically the portability and the maintainability of the application code.On Linux kernel, this framework is supported by the kernel 3.10.17_GA – released by Freescale itself along with L3.10.17_1.0.0_IMX6QDLS_BUNDLE BSP – upon which the XELK 2.0.0 is based3.The picture below shows how the system memory is fragmented. The portion of memory used to create a shared area between the two cores – ring buffers – is allocated inside the 256 MByte region used by FreeRTOS. [[httpFile:AMP_Memory_layout.png|thumb|center|400px|Memory layout]] == XELK platform ==AXEL Embedded Linux Kit (XELK for short) provides all the necessary components required to set up the developing environment for:● building the second stage bootloader (U-Boot)● building and running Linux operating system on AXEL-based systems● building Linux applications that will run on the target DAVE Embedded Systems provides all the customization required (in particular at bootloader and Linux kernel levels) to enable customers use the standard i.MX6 development tools for building all the firmware/software components that will run on the target system. Please refer to the XELK Quick Start Guide for further details on XELK.<b>N.B.: </wwwb>this application note has been tested using XELK 2.dave0.eu0. == AMP on AXEL == The following sections describe 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 and FreeRTOS on second Cortex®-A9 core.The <code>latencystat</sites/default/files/files/ancode> demo is a RPMsg-xelkbased application that exploits sophisticated techniques to handle inter-001processors communication and synchronization. === Prerequisities ===● AXEL Embedded Linux Kit (please refer to XELK Quick Start Guide for further details) version 2.0.0● access to AXEL git repositories (see below)● an <code>arm-ampnone-linuxeabi-freertos</code> toolchain for building FreeRTOS  === Software components git repositories === The software components for this application note are provided as git repositories, so the user can immediately get access to the source trees and keep these components in sync and up to date with DAVE Embedded Systems repositories.pdf  === Building the software components ===The following paragraphs describe how to build the software components required for this application . Please note that:● the standard Linux infrastructure will be used to load the firmware for the second core Linux will start in PDF format] SMP mode, running on both cores; then CPU1 will be shutdown and freeRTOS firmware will be loaded and run ● The GPIO7_13 pin (JP10.9 of the AXEL EVB-LITE) is toggled during the ISR● The EIM_D19 signal (available on the R5 resistor on the AXEL EVB-LITE) is the output of the EPIT1 (which is the interrupt source) The FreeRTOS application programs the EPIT1, which uses 66MHz as time-base (prescaler=1), setting FFFF.FFFF - 0x000F.4240 (1k tick) as the compare value. The timer starts a countdown from 0xFFFF.FFFF and, as it reaches the compare value, it triggers the ISR and toggles the EIM_D19 pin.  The ISR counts the number of ticks after the compare value and saves that information to return it to the Linux application for the overall informationhistogram calculation.
== Downloading,configuring and building ==
8,154
edits

Navigation menu