Using custom FreeRTOS with S32K SDK and OSIF for ARM

In “Tutorial: FreeRTOS 10.0.1 with NXP S32 Design Studio 2018.R1” I showed how to use a custom FreeRTOS with the S32 Design Studio (ARM). The OSIF (OS Interface) provides an operating system and services abstraction for the application which is used by other S32K SDK components:

OSIF in S32K for ARM Eclipse Project

OSIF in S32K for ARM Eclipse Project

The challenge I had was to make the OSIF component aware that there is a custom FreeRTOS component in the project (it worked fine with the NXP supplied one). If the presence of FreeRTOS is detected, the OSIF will use the RTOS services. Otherwise it will create its own services, e.g. using the SysTick timer interrupt.

Here is how you can use the McuOnEclipse FreeRTOS with the S32K SDK using the OSIF:

šŸ’” You will need at least version 01.558 of the McuOnEclipse FreeRTOS component, available from SourceForge.

  1. The OSIF checks for the presence of a component named ‘FreeRTOS’. In the component settings, rename the component:
    FreeRTOS component name

    FreeRTOS component name

    The component will generate a FreeRTOSConfig.h (to configure the RTOS) and the file FreeRTOS_config.h (to configure the component settings which are not covered by the standard FreeRTOS one)

  2. Enable to generate FreeRTOS files into sub folders, with ‘Manual Clock Values disabled:
    FreeRTOS Source Folders

    FreeRTOS Source Folders

    This generates the RTOS files into sub folders:

    FreeRTOS files folder structure

    FreeRTOS files folder structure

    The reason for this is that otherwise there might be conflicts with the NXP version of the FreeRTOS file handling. The ‘normal’ component files are still stored in the normal place:

    FreeRTOS component files

    FreeRTOS component files

  3. Now with the extra sub folders, I need to tell the compiler where he can find the header files. This is a setting in the project, so add the following include paths (you can copy-paste them):
    ../Generated_Code/FreeRTOS/Source/include
    ../Generated_Code/FreeRTOS/config/gcc
    ../Generated_Code/FreeRTOS/Source/portable/GCC/ARM_CM4F

    FreeRTOS Include Paths

    FreeRTOS Include Paths

  4. Before including “Events.c” in main.c, make sure you include the necessary FreeRTOS files first:
    #include "FreeRTOS.h"
    #include "task.h"

    FreeRTOS includes

    FreeRTOS includes

  5. Finally, add the following define to the compiler preprocessor settings:
    USING_OS_FREERTOS

    USING_OS_FREERTOS

    USING_OS_FREERTOS

That’s it. With all this, the OSIF component uses the FreeRTOS services and can be used with other S32K SDK components :-).

OSIF using FreeRTOS functions

OSIF using FreeRTOS functions

Happy FreeRTOSing šŸ™‚

Links

Advertisements

What do you think?

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.