aboutsummaryrefslogtreecommitdiff
path: root/rtos/freertos_config/CMakeLists.txt
diff options
context:
space:
mode:
authorBhavik Patel <bhavik.patel@arm.com>2020-07-29 12:28:18 +0200
committerBhavik Patel <bhavik.patel@arm.com>2020-10-27 16:58:48 +0100
commit68c1f1b463691fadbccef22e22d59f5e61546ca2 (patch)
tree1753440d0eada82577720109b92ada22ca3831f0 /rtos/freertos_config/CMakeLists.txt
parentd273d8e9c8513079f807b48af2e277f46469acf0 (diff)
downloadethos-u-core-software-68c1f1b463691fadbccef22e22d59f5e61546ca2.tar.gz
MLBEDSW-2593 Build FreeRTOS kernel as a part of ethosu_core target
The ethosu_core target now includes the FreeRTOS kernel if the CORE_SOFTWARE_RTOS is set to FreeRTOS. Currently supported builds are for cortex M3, M4, M7, M33, and M55. The FreeRTOSConfig.h file is generated as a part of the build. Change-Id: Ief6921fd0d9aa3849497ef0810d2714a12eb6773
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()