aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavide Grohmann <davide.grohmann@arm.com>2022-05-06 16:36:35 +0200
committerDavide Grohmann <davide.grohmann@arm.com>2022-05-12 19:09:07 +0200
commit8863730024adcd91fb3861cf6805b013136fa579 (patch)
tree97e5f57e5aa0f7c1a13404d4fdf24c93fcfd7007
parent5dffbf2ef16a1771c8587c430b42c643a1858bc6 (diff)
downloadethos-u-core-software-8863730024adcd91fb3861cf6805b013136fa579.tar.gz
Add support for Cortex-M8522.05-rc2
Remove old unused cmake toolchain files. Adapt FreeRTOS to be used with Cortex-M85: fallback to use Cortex-M33 port files in FreeRTOS like for Cortex-M55. Change-Id: I79af29ed920e1920c970bc6f516e9b711019692a
-rw-r--r--README.md6
-rw-r--r--cmake/toolchain/arm-none-eabi-gcc.cmake80
-rw-r--r--cmake/toolchain/armclang.cmake104
-rw-r--r--rtos/freertos_config/CMakeLists.txt13
4 files changed, 14 insertions, 189 deletions
diff --git a/README.md b/README.md
index da5618e..ff3538a 100644
--- a/README.md
+++ b/README.md
@@ -6,10 +6,8 @@ The Arm(R) Ethos(TM)-U core software is built with CMake. It is recommended to
build out of tree like illustrated below.
```
-$ mkdir build
-$ cd build
-$ cmake .. -DCMAKE_TOOLCHAIN_FILE=<toolchain> -DCMAKE_SYSTEM_PROCESSOR=cortex-m<nr><features>
-$ make
+$ cmake -B build -DCMAKE_TOOLCHAIN_FILE=<core_platform_path>/cmake/toolchain/<toolchain_file> -DTARGET_CPU=cortex-m<nr><features>
+$ cmake --build build -j8
```
Available build options can be listed with `cmake -LH ..`.
diff --git a/cmake/toolchain/arm-none-eabi-gcc.cmake b/cmake/toolchain/arm-none-eabi-gcc.cmake
deleted file mode 100644
index 964b9e3..0000000
--- a/cmake/toolchain/arm-none-eabi-gcc.cmake
+++ /dev/null
@@ -1,80 +0,0 @@
-#
-# Copyright (c) 2019-2021 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 (__TOOLCHAIN_LOADED)
- return()
-endif()
-set(__TOOLCHAIN_LOADED TRUE)
-
-set(CMAKE_SYSTEM_NAME Generic)
-set(CMAKE_C_COMPILER "arm-none-eabi-gcc")
-set(CMAKE_CXX_COMPILER "arm-none-eabi-g++")
-set(CMAKE_SYSTEM_PROCESSOR "cortex-m33+nodsp" CACHE STRING "Select Cortex-M architure. (cortex-m0, cortex-m3, cortex-m33, cortex-m4, cortex-m55, cortex-m7, etc)")
-
-set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
-
-SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
-SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
-SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
-
-set(CMAKE_C_STANDARD 99)
-set(CMAKE_CXX_STANDARD 14)
-
-# The system processor could for example be set to cortex-m33+nodsp+nofp.
-set(__CPU_COMPILE_TARGET ${CMAKE_SYSTEM_PROCESSOR})
-string(REPLACE "+" ";" __CPU_FEATURES ${__CPU_COMPILE_TARGET})
-list(POP_FRONT __CPU_FEATURES CMAKE_SYSTEM_PROCESSOR)
-
-string(FIND ${__CPU_COMPILE_TARGET} "+" __OFFSET)
-if(__OFFSET GREATER_EQUAL 0)
- string(SUBSTRING ${__CPU_COMPILE_TARGET} ${__OFFSET} -1 CPU_FEATURES)
-endif()
-
-# Add -mcpu to the compile options to override the -mcpu the CMake toolchain adds
-add_compile_options(-mcpu=${__CPU_COMPILE_TARGET})
-
-# Set floating point unit
-if("${__CPU_COMPILE_TARGET}" MATCHES "\\+fp")
- set(FLOAT hard)
-elseif("${__CPU_COMPILE_TARGET}" MATCHES "\\+nofp")
- set(FLOAT soft)
-elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "cortex-m33" OR
- "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "cortex-m55")
- set(FLOAT hard)
-else()
- set(FLOAT soft)
-endif()
-
-add_compile_options(-mfloat-abi=${FLOAT})
-add_link_options(-mfloat-abi=${FLOAT})
-
-# Link target
-add_link_options(-mcpu=${__CPU_COMPILE_TARGET})
-
-#
-# Compile options
-#
-set(cxx_flags "-fno-unwind-tables;-fno-rtti;-fno-exceptions")
-
-add_compile_options("-Wall;-Wextra;-Wsign-compare;-Wunused;-Wswitch-default;-Wformat;\
--Wdouble-promotion;-Wredundant-decls;-Wshadow;-Wcast-align;-Wnull-dereference;\
--Wno-format-extra-args;-Wno-unused-function;-Wno-unused-label;\
--Wno-missing-field-initializers;-Wno-return-type"
- "$<$<COMPILE_LANGUAGE:CXX>:${cxx_flags}>"
-)
-
diff --git a/cmake/toolchain/armclang.cmake b/cmake/toolchain/armclang.cmake
deleted file mode 100644
index 7d607ed..0000000
--- a/cmake/toolchain/armclang.cmake
+++ /dev/null
@@ -1,104 +0,0 @@
-#
-# Copyright (c) 2019-2021 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 (__TOOLCHAIN_LOADED)
- return()
-endif()
-set(__TOOLCHAIN_LOADED TRUE)
-
-set(CMAKE_SYSTEM_NAME Generic)
-set(CMAKE_C_COMPILER "armclang")
-set(CMAKE_CXX_COMPILER "armclang")
-set(CMAKE_ASM_COMPILER "armclang")
-set(CMAKE_SYSTEM_PROCESSOR "cortex-m33+nodsp" CACHE STRING "Select Cortex-M architure. (cortex-m0, cortex-m3, cortex-m33, cortex-m4, cortex-m55, cortex-m7, etc)")
-
-set(CMAKE_C_STANDARD 99)
-set(CMAKE_CXX_STANDARD 11)
-
-# The system processor could for example be set to cortex-m33+nodsp+nofp.
-set(__CPU_COMPILE_TARGET ${CMAKE_SYSTEM_PROCESSOR})
-string(REPLACE "+" ";" __CPU_FEATURES ${__CPU_COMPILE_TARGET})
-list(POP_FRONT __CPU_FEATURES CMAKE_SYSTEM_PROCESSOR)
-
-string(FIND ${__CPU_COMPILE_TARGET} "+" __OFFSET)
-if(__OFFSET GREATER_EQUAL 0)
- string(SUBSTRING ${__CPU_COMPILE_TARGET} ${__OFFSET} -1 CPU_FEATURES)
-endif()
-
-# Add -mcpu to the compile options to override the -mcpu the CMake toolchain adds
-add_compile_options(
- -mcpu=${__CPU_COMPILE_TARGET}
- "$<$<COMPILE_LANGUAGE:ASM>:-masm=auto;--target=arm-arm-none-eabi>")
-
-# Set floating point unit
-if("${__CPU_COMPILE_TARGET}" MATCHES "\\+fp")
- set(FLOAT hard)
-elseif("${__CPU_COMPILE_TARGET}" MATCHES "\\+nofp")
- set(FLOAT soft)
-elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "cortex-m33" OR
- "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "cortex-m4" OR
- "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "cortex-m55" OR
- "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "cortex-m7")
- set(FLOAT hard)
-else()
- set(FLOAT soft)
-endif()
-
-add_compile_options(-mfloat-abi=${FLOAT})
-#add_link_options(-mfloat-abi=${FLOAT})
-
-# Link target
-set(__CPU_LINK_TARGET ${CMAKE_SYSTEM_PROCESSOR})
-if("nodsp" IN_LIST __CPU_FEATURES)
- string(APPEND __CPU_LINK_TARGET ".no_dsp")
-endif()
-if("nofp" IN_LIST __CPU_FEATURES)
- string(APPEND __CPU_LINK_TARGET ".no_fp")
-endif()
-
-if(CMAKE_SYSTEM_PROCESSOR STREQUAL "cortex-m55")
- set(__CPU_LINK_TARGET 8.1-M.Main.dsp)
-endif()
-
-add_link_options(--cpu=${__CPU_LINK_TARGET})
-add_link_options(--lto --info common,debug,sizes,totals,veneers,unused --symbols --diag_suppress=L6439W)
-
-#
-# Compile options
-#
-
-add_compile_options(-Wall -Wextra
- -Wsign-compare
- -Wunused
- -Wswitch-default
- -Wformat
- -Wdouble-promotion
- -Wredundant-decls
- -Wshadow
- -Wcast-align
- -Wnull-dereference
- -Wno-deprecated-register
- -Wno-format-extra-args
- -Wno-missing-field-initializers
- -Wno-unused-function
- -Wno-unused-label
- -Wno-unused-parameter
- -Wno-return-type)
-add_compile_options(-fno-unwind-tables -fno-rtti -fno-exceptions)
-add_compile_options(-mthumb)
-add_compile_options("$<$<CONFIG:DEBUG>:-gdwarf-3>")
diff --git a/rtos/freertos_config/CMakeLists.txt b/rtos/freertos_config/CMakeLists.txt
index 34fe132..318390d 100644
--- a/rtos/freertos_config/CMakeLists.txt
+++ b/rtos/freertos_config/CMakeLists.txt
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2019-2020 Arm Limited. All rights reserved.
+# Copyright (c) 2019-2022 Arm Limited. All rights reserved.
#
# SPDX-License-Identifier: Apache-2.0
#
@@ -26,6 +26,8 @@ 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)
+elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "cortex-m85")
+ add_compile_definitions(CPU_CORTEX_M85)
else()
message(FATAL_ERROR "Unsupported compiler ${CMAKE_SYSTEM_PROCESSOR}.")
endif()
@@ -102,6 +104,15 @@ elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "cortex-m55")
target_include_directories(freertos_kernel PUBLIC
${FREERTOS_KERNEL_PATH}/portable/GCC/ARM_CM33_NTZ/non_secure
)
+elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "cortex-m85")
+# TODO: using the same port files as Cortex-M33. Update for Cortex-M85.
+ 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()