Open main menu

DAVE Developer's Wiki β

Changes

Created page with "{{InfoBoxTop}} {{AppliesToSBCLynx}} {{InfoBoxBottom}} == History == {| class="wikitable" border="1" !Version !Date !Axel_Embedded_Linux_Kit_(XELK)#XELK_software_components|X..."
{{InfoBoxTop}}
{{AppliesToSBCLynx}}
{{InfoBoxBottom}}
== History ==
{| class="wikitable" border="1"
!Version
!Date
![[Axel_Embedded_Linux_Kit_(XELK)#XELK_software_components|XELK version]]
!Notes
|-
|0.9.2
|Feb 2015
|2.0.0
|Update for XELK 2.0.0 release
|-
|0.9.3
|April 2015
|2.0.0
|Minor fixes
|-
|1.0.0
|April 2018
|2.1.0
|Updated info for command erros
|}

==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 the [http://www.dave.eu/sites/default/files/files/an-xelk-001-amp-linux-freertos.pdf application note in PDF format] for the overall information.

== Downloading,configuring and building ==

Assuming that a local repository has not been created, clone the remote AMPgit repository (the <code>-b</code> option is used to automatically checkout the current branch):

<pre>
dvdk@dvdk:~/xelk$ git clone git@git.dave.eu:dave/axel/linux-2.6-imx.git
</pre>
* Enter the git directory
* Switch to AMP branch:
<pre>
dvdk@dvdk:~/xelk/linux-2.6-imx$ git checkout axel-feat-2.1.0-amp
</pre>

=== Build the Linux kernel ===

Set the correct environment '''sourcing''' the iMX6 toolchain:

<pre>
dvdk@dvdk:~/xelk$ source env.sh
</pre>

Select the '''Axel''' board configuration:

<pre>
dvdk@dvdk:~/xelk/linux-2.6-imx$ make imx_v7_axel_defconfig
</pre>

build the Linux kernel and the XELK-L-S device tree:

<pre>
dvdk@dvdk:~/xelk/linux-2.6-imx$ make UIMAGE_LOADADDR=0x18008000 imx6q-xelk-l.dtb uImage modules
</pre>

=== Build FreeRTOS ===

Clone the FreeRTOS repository and build the real-time OS:

<pre>
dvdk@dvdk:~/xelk$ git@git.dave.eu :dave/axel/freertos.git
dvdk@dvdk:~/xelk$ cd freertos
</pre>

For building the FreeRTOS, a proper toolchain has to be used:

<pre>
dvdk@dvdk:~/xelk/freertos$ export PATH=<path to arm-eabi toolchain>/bin:$PATH
dvdk@dvdk:~/xelk/freertos$ export ARCH=arm
dvdk@dvdk:~/xelk/freertos$ export CROSS_COMPILE=arm-none-eabi-

and then run <code>make</code> to build the RTOS binary image:
<pre>
dvdk@dvdk:~/xelk/freertos$ make
</pre>


=== Building latencystat ===

Just clone, enter the <code>latecystat</code> directory and build with '''make''':

<pre>
dvdk@dvdk:~/xelk$ git@git.dave.eu :dave/axel/latencystat.git
dvdk@dvdk:~/xelk$ cd latencystat
dvdk@dvdk:~/xelk/latencystat$ make
</pre>


=== Running the AMP on the target ===

move the device tree binary load address (the default 0x18000000 conflicts the AMP kernel loadaddr, it must be moved to a higher address) by changing u-boot environment for example as:

<pre>
=> setenv fdtaddr 0x1c000000
</pre>

<pre class="board-terminal">
</pre>
8,221
edits