aboutsummaryrefslogtreecommitdiff
path: root/rtos/freertos_config/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'rtos/freertos_config/CMakeLists.txt')
-rw-r--r--rtos/freertos_config/CMakeLists.txt104
1 files changed, 104 insertions, 0 deletions
diff --git a/rtos/freertos_config/CMakeLists.txt b/rtos/freertos_config/CMakeLists.txt
new file mode 100644
index 0000000..bd3fd3c
--- /dev/null
+++ b/rtos/freertos_config/CMakeLists.txt
@@ -0,0 +1,104 @@
+#
+# Copyright (c) 2019-2020 Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the License); you may
+# not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an AS IS BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+if(CMAKE_SYSTEM_PROCESSOR STREQUAL "cortex-m3")
+ add_compile_definitions(CPU_CORTEX_M3)
+elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "cortex-m33")
+ add_compile_definitions(CPU_CORTEX_M33)
+elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "cortex-m4")
+ add_compile_definitions(CPU_CORTEX_M4)
+elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "cortex-m55")
+ add_compile_definitions(CPU_CORTEX_M55)
+elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "cortex-m7")
+ add_compile_definitions(CPU_CORTEX_M7)
+else()
+ message(FATAL_ERROR "Unsupported compiler ${CMAKE_SYSTEM_PROCESSOR}.")
+endif()
+
+if((${TARGET} STREQUAL "mps2") OR (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "cortex-m55"))
+ set("SYSTEM_CORE_CLOCK" "25000000")
+else()
+ set("SYSTEM_CORE_CLOCK" "32000000")
+endif()
+
+
+configure_file(FreeRTOSConfig.h.in FreeRTOSConfig.h)
+set(FREERTOS_CONFIG_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR})
+
+# FreeRTOS kernel library
+add_library(freertos_kernel STATIC)
+
+# Set include directories
+target_include_directories(freertos_kernel PUBLIC
+ ${FREERTOS_KERNEL_PATH}/include
+ ${FREERTOS_CONFIG_INCLUDE_DIR}
+)
+
+# Add kernel source files
+target_sources(freertos_kernel PRIVATE
+ ${FREERTOS_KERNEL_PATH}/tasks.c
+ ${FREERTOS_KERNEL_PATH}/list.c
+ ${FREERTOS_KERNEL_PATH}/queue.c
+)
+
+# Add the heap implementation
+# heap_3 uses the compiler supplied malloc & free for the heap.
+target_sources(freertos_kernel PRIVATE
+ ${FREERTOS_KERNEL_PATH}/portable/MemMang/heap_3.c)
+
+if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "cortex-m3")
+target_sources(freertos_kernel PRIVATE
+ ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM3/port.c
+)
+target_include_directories(freertos_kernel PUBLIC
+ ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM3
+)
+elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "cortex-m4")
+ target_sources(freertos_kernel PRIVATE
+ ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM4F/port.c
+ )
+ target_include_directories(freertos_kernel PUBLIC
+ ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM4F
+ )
+elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "cortex-m7")
+ target_sources(freertos_kernel PRIVATE
+ ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM7/r0p1/port.c
+ )
+ target_include_directories(freertos_kernel PUBLIC
+ ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM7/r0p1
+ )
+elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "cortex-m33")
+ target_sources(freertos_kernel PRIVATE
+ ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM33_NTZ/non_secure/port.c
+ ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM33_NTZ/non_secure/portasm.c
+ )
+ target_include_directories(freertos_kernel PUBLIC
+ ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM33_NTZ/non_secure
+ )
+elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "cortex-m55")
+# TODO: using the same port files as Cortex-M33. Update for Cortex-M55.
+ target_sources(freertos_kernel PRIVATE
+ ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM33_NTZ/non_secure/port.c
+ ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM33_NTZ/non_secure/portasm.c
+ )
+ target_include_directories(freertos_kernel PUBLIC
+ ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM33_NTZ/non_secure
+ )
+else()
+ message(FATAL_ERROR "Invalid processor ${CMAKE_SYSTEM_PROCESSOR} when building FreeRTOS kernel")
+endif()