diff options
Diffstat (limited to 'rtos/freertos_config/CMakeLists.txt')
-rw-r--r-- | rtos/freertos_config/CMakeLists.txt | 104 |
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() |