FreeRTOS on Nordic nRF5340?

Does anyone know if FreeRTOS is working/ported for the dual core nRF5340? I need it to support the BLE controller/host most.

@SeacoastRon : The nRF5340 is supported by the ARMv8M / Cortex-M33 port.

You might find the nRF5 SDK “ble_app_hrs_freertos” example helpful for porting the SoftDevice if you choose to use the nordic “SoftDevice” BLE stack.

Alternatively, Apache mynewt-nimble is a quite popular open source stack with support for both FreeRTOS and the nRF5340 SoC.

Thank you for the info. Does the M33 port support the dual core mode of the nRF5340? BLE controller is on one core (only 256kB) and the BLE host is on the other core (1 MB)?

@SeacoastRon : Currently we do not have an official Symmetric Multi-Processing port for the Cortex-M33, so you would be limited to a single core. You may be able to use both cores in an AMP configuration though.

Do you want to run FreeRTOS on the application processor? If so, you should be able to use the M33 port as mentioned by Paul.

This example shows how to run FreeRTOS on the application processor in nRF9160 - https://github.com/FreeRTOS/FreeRTOS/tree/main/FreeRTOS/Demo/CORTEX_MPU_M33F_Nordic_NRF9160_SES

I have FreeRTOS running on my nRF5340DK application core. You will need to do some tweaks to the nRF9160 port to get this running.

I have a question though. I’d like to get BLE running on it using the network core. I can see in the Nordic example of the UART peripheral, they use the RPC library to do remote calls to the network core from the application core. However, all these examples use the Zephyr OS. I started looking for the FreeRTOS BLE library and looking for ways to interface with the RPC library. The network core would manage the BLE modem and part of the stack. It’s built under Zephyr. I’m fine with that for now and may want to rewrite that later. I’m more concerned with the application core at this point.

I’m seeing that the FreeRTOS BLE library is deprecated. I don’t see any updates as to where the new library is located. Does this mean FreeRTOS no longer supports BLE?

You are correct in that our Android and iOS BLE SDKs have been deprecated. The reasons for this are listed on those repositories specific READMEs. However these are specific to mobile devices. While FreeRTOS doesn’t specifically have a core BLE library, we still do have this library which provides a BLE abstraction layer for embedded devices.

Sounds like you need an RPC client for your Application core which is running some FreeRTOS code. Is this correct?

Yes, this is correct. I also need to have an RPC client that would be compatible with the BLE host running on the network core, i.e. the RPC client needs to send the correct messages and recognize the responses coming back over the RPC interface.