FreeRTOS for iMX6 Quad

ypivenix wrote on Tuesday, November 04, 2014:

I am interested in getting FreeRTOS working with the Freescale iMX6 processor (quad). How do I get started to get the kernel to build and run on this target. This is a arm a9 processor. It is likely that 3 cores will be running linux while the other core will be for FreeRTOS.

thanks,

edwards3 wrote on Tuesday, November 04, 2014:

There are A9 demo projects for Xilinx, Altera and Renesas parts. You can use those to get started. There is also this page http://www.freertos.org/Using-FreeRTOS-on-Cortex-A-Embedded-Processors.html

ypivenix wrote on Wednesday, November 05, 2014:

Can I use the FreeRTOS\Source\portable\GCC\ARM_CA9 port files for the imx6 CA9 assuming using GCC ?

rtel wrote on Thursday, November 06, 2014:

If you are using GCC, and the iMX6 chip you are using has a standard GIC
(Generic Interrupt Controller from ARM) then that is the correct port
layer to use. You already have a link to the generic “FreeRTOS on ARM
Cortex-A” page in a post above. You will also find examples of how to
set the constants referred to on that page in the Xilinx Zinq, Altera
Cyclone 5 SoC and Renesas RZ demo projects - although tose projects may
or may not be using the GCC compiler the stitching between the project
files and the FreeRTOS Cortex-A port layer is the same whichever
compiler is used.

Regards.

ypivenix wrote on Thursday, November 06, 2014:

Directly from that imx6 datasheet:
The ARM Cortex A9 MPCore™ complex includes:
• General Interrupt Controller (GIC) with 128 interrupt support

So it appears that I can use the existing port layer. Is there documentation on what specific function need to exist in port.c?

It seems that they are:

pxPortInitialiseStack
xPortStartScheduler
vPortEndScheduler
prvSetupTimerInterrupt
vPortEnterCritical
vPortExitCritical

However, other ports have additional functions. I would have expected all the same functions name in every port.c. Is this incorrect ?

thanks,

rtel wrote on Thursday, November 06, 2014:

You don’t need to edit anything in the port.c file - just build it. The
prototypes for the portable layer functions called by the core kernel
code are in portable.h - so the functions in that header file must be
implemented, any other functions would be port specific.

Regards.