Skip to content

Commit 0c84dd0

Browse files
committed
FreeRTOS: use upstream port again, RP2350 support has landed
But the RP2350 kernel import is broken, use copy from pico-examples 2.1.0
1 parent 4238b78 commit 0c84dd0

File tree

4 files changed

+95
-3
lines changed

4 files changed

+95
-3
lines changed

.gitmodules

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@
33
url = https://github.com/ARM-software/CMSIS_5
44
[submodule "freertos"]
55
path = freertos
6-
url = https://github.com/raspberrypi/FreeRTOS-Kernel
6+
url = https://github.com/FreeRTOS/FreeRTOS-Kernel

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.12)
33
include(pico_sdk_import.cmake)
44

55
set(FREERTOS_KERNEL_PATH ${CMAKE_CURRENT_LIST_DIR}/freertos)
6-
include(freertos/portable/ThirdParty/GCC/RP2350_ARM_NTZ/FreeRTOS_Kernel_import.cmake)
6+
include(FreeRTOS_Kernel_import.cmake)
77

88
project(debugprobe)
99

FreeRTOS_Kernel_import.cmake

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
# SPDX-License-Identifier: BSD-3-clause
2+
# This is a copy of <FREERTOS_KERNEL_PATH>/portable/ThirdParty/GCC/RP2040/FREERTOS_KERNEL_import.cmake
3+
4+
# This can be dropped into an external project to help locate the FreeRTOS kernel
5+
# It should be include()ed prior to project(). Alternatively this file may
6+
# or the CMakeLists.txt in this directory may be included or added via add_subdirectory
7+
# respectively.
8+
9+
if (DEFINED ENV{FREERTOS_KERNEL_PATH} AND (NOT FREERTOS_KERNEL_PATH))
10+
set(FREERTOS_KERNEL_PATH $ENV{FREERTOS_KERNEL_PATH})
11+
message("Using FREERTOS_KERNEL_PATH from environment ('${FREERTOS_KERNEL_PATH}')")
12+
endif ()
13+
14+
# first pass we look in old tree; second pass we look in new tree
15+
foreach(SEARCH_PASS RANGE 0 1)
16+
if (SEARCH_PASS)
17+
# ports may be moving to submodule in the future
18+
set(FREERTOS_KERNEL_RP2040_RELATIVE_PATH "portable/ThirdParty/Community-Supported-Ports/GCC")
19+
set(FREERTOS_KERNEL_RP2040_BACK_PATH "../../../../..")
20+
else()
21+
set(FREERTOS_KERNEL_RP2040_RELATIVE_PATH "portable/ThirdParty/GCC")
22+
set(FREERTOS_KERNEL_RP2040_BACK_PATH "../../../..")
23+
endif()
24+
25+
if(PICO_PLATFORM STREQUAL "rp2040")
26+
set(FREERTOS_KERNEL_RP2040_RELATIVE_PATH "${FREERTOS_KERNEL_RP2040_RELATIVE_PATH}/RP2040")
27+
else()
28+
if (PICO_PLATFORM STREQUAL "rp2350-riscv")
29+
set(FREERTOS_KERNEL_RP2040_RELATIVE_PATH "${FREERTOS_KERNEL_RP2040_RELATIVE_PATH}/RP2350_RISC-V")
30+
else()
31+
set(FREERTOS_KERNEL_RP2040_RELATIVE_PATH "${FREERTOS_KERNEL_RP2040_RELATIVE_PATH}/RP2350_ARM_NTZ")
32+
endif()
33+
endif()
34+
35+
if (NOT FREERTOS_KERNEL_PATH)
36+
# check if we are inside the FreeRTOS kernel tree (i.e. this file has been included directly)
37+
get_filename_component(_ACTUAL_PATH ${CMAKE_CURRENT_LIST_DIR} REALPATH)
38+
get_filename_component(_POSSIBLE_PATH ${CMAKE_CURRENT_LIST_DIR}/${FREERTOS_KERNEL_RP2040_BACK_PATH}/${FREERTOS_KERNEL_RP2040_RELATIVE_PATH} REALPATH)
39+
if (_ACTUAL_PATH STREQUAL _POSSIBLE_PATH)
40+
get_filename_component(FREERTOS_KERNEL_PATH ${CMAKE_CURRENT_LIST_DIR}/${FREERTOS_KERNEL_RP2040_BACK_PATH} REALPATH)
41+
endif()
42+
if (_ACTUAL_PATH STREQUAL _POSSIBLE_PATH)
43+
get_filename_component(FREERTOS_KERNEL_PATH ${CMAKE_CURRENT_LIST_DIR}/${FREERTOS_KERNEL_RP2040_BACK_PATH} REALPATH)
44+
message("Setting FREERTOS_KERNEL_PATH to ${FREERTOS_KERNEL_PATH} based on location of FreeRTOS-Kernel-import.cmake")
45+
break()
46+
elseif (PICO_SDK_PATH AND EXISTS "${PICO_SDK_PATH}/../FreeRTOS-Kernel")
47+
set(FREERTOS_KERNEL_PATH ${PICO_SDK_PATH}/../FreeRTOS-Kernel)
48+
message("Defaulting FREERTOS_KERNEL_PATH as sibling of PICO_SDK_PATH: ${FREERTOS_KERNEL_PATH}")
49+
break()
50+
endif()
51+
endif ()
52+
53+
if (NOT FREERTOS_KERNEL_PATH)
54+
foreach(POSSIBLE_SUFFIX Source FreeRTOS-Kernel FreeRTOS/Source)
55+
# check if FreeRTOS-Kernel exists under directory that included us
56+
set(SEARCH_ROOT ${CMAKE_CURRENT_SOURCE_DIR})
57+
get_filename_component(_POSSIBLE_PATH ${SEARCH_ROOT}/${POSSIBLE_SUFFIX} REALPATH)
58+
if (EXISTS ${_POSSIBLE_PATH}/${FREERTOS_KERNEL_RP2040_RELATIVE_PATH}/CMakeLists.txt)
59+
get_filename_component(FREERTOS_KERNEL_PATH ${_POSSIBLE_PATH} REALPATH)
60+
message("Setting FREERTOS_KERNEL_PATH to '${FREERTOS_KERNEL_PATH}' found relative to enclosing project")
61+
break()
62+
endif()
63+
endforeach()
64+
if (FREERTOS_KERNEL_PATH)
65+
break()
66+
endif()
67+
endif()
68+
69+
# user must have specified
70+
if (FREERTOS_KERNEL_PATH)
71+
if (EXISTS "${FREERTOS_KERNEL_PATH}/${FREERTOS_KERNEL_RP2040_RELATIVE_PATH}")
72+
break()
73+
endif()
74+
endif()
75+
endforeach ()
76+
77+
if (NOT FREERTOS_KERNEL_PATH)
78+
message(FATAL_ERROR "FreeRTOS location was not specified. Please set FREERTOS_KERNEL_PATH.")
79+
endif()
80+
81+
set(FREERTOS_KERNEL_PATH "${FREERTOS_KERNEL_PATH}" CACHE PATH "Path to the FreeRTOS Kernel")
82+
83+
get_filename_component(FREERTOS_KERNEL_PATH "${FREERTOS_KERNEL_PATH}" REALPATH BASE_DIR "${CMAKE_BINARY_DIR}")
84+
if (NOT EXISTS ${FREERTOS_KERNEL_PATH})
85+
message(FATAL_ERROR "Directory '${FREERTOS_KERNEL_PATH}' not found")
86+
endif()
87+
if (NOT EXISTS ${FREERTOS_KERNEL_PATH}/${FREERTOS_KERNEL_RP2040_RELATIVE_PATH}/CMakeLists.txt)
88+
message(FATAL_ERROR "Directory '${FREERTOS_KERNEL_PATH}' does not contain a '${PICO_PLATFORM}' port here: ${FREERTOS_KERNEL_RP2040_RELATIVE_PATH}")
89+
endif()
90+
set(FREERTOS_KERNEL_PATH ${FREERTOS_KERNEL_PATH} CACHE PATH "Path to the FreeRTOS_KERNEL" FORCE)
91+
92+
add_subdirectory(${FREERTOS_KERNEL_PATH}/${FREERTOS_KERNEL_RP2040_RELATIVE_PATH} FREERTOS_KERNEL)

freertos

Submodule freertos updated 338 files

0 commit comments

Comments
 (0)