FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2040
Graham Sanderson debbd254b6
RP2040 fixes (#424)
* RP2040: malloc needs to be thread safe for FreeRTOS whether both cores are used or not

* RP2040: CMake file had broken left over test code

* RP2040: portIS_FREE_RTOS_CORE() returned an incorrect value prior to scheduler init when the application was compiled without multicore support

* RP2040: Bad initialization code was causing IRQs to get disabled before main() was called when using non static allocation
2021-12-21 11:08:41 -08:00
..
include RP2040 fixes (#424) 2021-12-21 11:08:41 -08:00
.gitignore Add RP2040 support (#341) 2021-06-30 13:20:54 -07:00
CMakeLists.txt Add RP2040 support (#341) 2021-06-30 13:20:54 -07:00
FreeRTOS_Kernel_import.cmake RP2040 fixes (#424) 2021-12-21 11:08:41 -08:00
idle_task_static_memory.c Add RP2040 support (#341) 2021-06-30 13:20:54 -07:00
library.cmake Add RP2040 support (#341) 2021-06-30 13:20:54 -07:00
LICENSE.md Add RP2040 support (#341) 2021-06-30 13:20:54 -07:00
pico_sdk_import.cmake Add RP2040 support (#341) 2021-06-30 13:20:54 -07:00
port.c RP2040 fixes (#424) 2021-12-21 11:08:41 -08:00
README.md Add RP2040 support (#341) 2021-06-30 13:20:54 -07:00

Overview

This directory provides a FreeRTOS-Kernel port that can be used with the Raspberry Pi Pico SDK. It supports:

  • Simple CMake INTERFACE libraries, to provide the FreeRTOS-Kernel and also the individual allocator types, without copying code into the user's project.
  • Running the FreeRTOS-Kernel and tasks on either core 0 or core 1
  • Use of SDK synchronization primitives (such as mutexes, semaphores, queues from pico_sync) between FreeRTOS tasks and code executing on the other core, or in IRQ handlers.

Note that a FreeRTOS SMP version of this port is also available in the FreeRTOS-Kernel smp branch, which additionally supports utilizing both RP2040 CPU cores for FreeRTOS tasks simultaneously.

Using this port

Copy FreeRTOS-Kernel-import.cmake into your project, and add:

import(FreeRTOS_Kernel_import.cmake)

below the usual import of pico_sdk_import.cmake

This will find the FreeRTOS kernel if it is a direct sub-module of your project, or if you provide the FREERTOS_KERNEL_PATH variable in your environment or via -DFREERTOS_KERNEL_PATH=/path/to/FreeRTOS-Kernel on the CMake command line.

Advanced Configuration

Some additional config options are defined here which control some low level implementation details.

Known Limitations

  • Tickless idle has not currently been tested, and is likely non-functional