blob: 318390d14af33b9536146067c3bfddb9b1ebb6d8 [file] [log] [blame]
Bhavik Patel68c1f1b2020-07-29 12:28:18 +02001#
Davide Grohmann88637302022-05-06 16:36:35 +02002# Copyright (c) 2019-2022 Arm Limited. All rights reserved.
Bhavik Patel68c1f1b2020-07-29 12:28:18 +02003#
4# SPDX-License-Identifier: Apache-2.0
5#
6# Licensed under the Apache License, Version 2.0 (the License); you may
7# not use this file except in compliance with the License.
8# You may obtain a copy of the License at
9#
10# www.apache.org/licenses/LICENSE-2.0
11#
12# Unless required by applicable law or agreed to in writing, software
13# distributed under the License is distributed on an AS IS BASIS, WITHOUT
14# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15# See the License for the specific language governing permissions and
16# limitations under the License.
17#
18
19if(CMAKE_SYSTEM_PROCESSOR STREQUAL "cortex-m3")
20 add_compile_definitions(CPU_CORTEX_M3)
21elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "cortex-m33")
22 add_compile_definitions(CPU_CORTEX_M33)
23elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "cortex-m4")
24 add_compile_definitions(CPU_CORTEX_M4)
25elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "cortex-m55")
26 add_compile_definitions(CPU_CORTEX_M55)
27elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "cortex-m7")
28 add_compile_definitions(CPU_CORTEX_M7)
Davide Grohmann88637302022-05-06 16:36:35 +020029elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "cortex-m85")
30 add_compile_definitions(CPU_CORTEX_M85)
Bhavik Patel68c1f1b2020-07-29 12:28:18 +020031else()
32 message(FATAL_ERROR "Unsupported compiler ${CMAKE_SYSTEM_PROCESSOR}.")
33endif()
34
35if((${TARGET} STREQUAL "mps2") OR (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "cortex-m55"))
36 set("SYSTEM_CORE_CLOCK" "25000000")
37else()
38 set("SYSTEM_CORE_CLOCK" "32000000")
39endif()
40
41
42configure_file(FreeRTOSConfig.h.in FreeRTOSConfig.h)
43set(FREERTOS_CONFIG_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR})
44
45# FreeRTOS kernel library
46add_library(freertos_kernel STATIC)
47
Bhavik Patel97906eb2020-12-17 15:32:16 +010048target_compile_options(freertos_kernel PRIVATE
49 $<$<COMPILE_LANGUAGE:CXX>:${TOOLCHAIN_CXX_OPTIONS}> "-Wno-redundant-decls")
50
Bhavik Patel68c1f1b2020-07-29 12:28:18 +020051# Set include directories
52target_include_directories(freertos_kernel PUBLIC
53 ${FREERTOS_KERNEL_PATH}/include
54 ${FREERTOS_CONFIG_INCLUDE_DIR}
55)
56
57# Add kernel source files
58target_sources(freertos_kernel PRIVATE
59 ${FREERTOS_KERNEL_PATH}/tasks.c
60 ${FREERTOS_KERNEL_PATH}/list.c
61 ${FREERTOS_KERNEL_PATH}/queue.c
62)
63
64# Add the heap implementation
65# heap_3 uses the compiler supplied malloc & free for the heap.
66target_sources(freertos_kernel PRIVATE
67 ${FREERTOS_KERNEL_PATH}/portable/MemMang/heap_3.c)
68
69if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "cortex-m3")
70target_sources(freertos_kernel PRIVATE
71 ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM3/port.c
72)
73target_include_directories(freertos_kernel PUBLIC
74 ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM3
75)
76elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "cortex-m4")
77 target_sources(freertos_kernel PRIVATE
78 ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM4F/port.c
79 )
80 target_include_directories(freertos_kernel PUBLIC
81 ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM4F
82 )
83elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "cortex-m7")
84 target_sources(freertos_kernel PRIVATE
85 ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM7/r0p1/port.c
86 )
87 target_include_directories(freertos_kernel PUBLIC
88 ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM7/r0p1
89 )
90elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "cortex-m33")
91 target_sources(freertos_kernel PRIVATE
92 ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM33_NTZ/non_secure/port.c
93 ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM33_NTZ/non_secure/portasm.c
94 )
95 target_include_directories(freertos_kernel PUBLIC
96 ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM33_NTZ/non_secure
97 )
98elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "cortex-m55")
99# TODO: using the same port files as Cortex-M33. Update for Cortex-M55.
100 target_sources(freertos_kernel PRIVATE
101 ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM33_NTZ/non_secure/port.c
102 ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM33_NTZ/non_secure/portasm.c
103 )
104 target_include_directories(freertos_kernel PUBLIC
105 ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM33_NTZ/non_secure
106 )
Davide Grohmann88637302022-05-06 16:36:35 +0200107elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "cortex-m85")
108# TODO: using the same port files as Cortex-M33. Update for Cortex-M85.
109 target_sources(freertos_kernel PRIVATE
110 ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM33_NTZ/non_secure/port.c
111 ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM33_NTZ/non_secure/portasm.c
112 )
113 target_include_directories(freertos_kernel PUBLIC
114 ${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM33_NTZ/non_secure
115 )
Bhavik Patel68c1f1b2020-07-29 12:28:18 +0200116else()
117 message(FATAL_ERROR "Invalid processor ${CMAKE_SYSTEM_PROCESSOR} when building FreeRTOS kernel")
118endif()