From 8863730024adcd91fb3861cf6805b013136fa579 Mon Sep 17 00:00:00 2001 From: Davide Grohmann Date: Fri, 6 May 2022 16:36:35 +0200 Subject: Add support for Cortex-M85 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 --- README.md | 6 +- cmake/toolchain/arm-none-eabi-gcc.cmake | 80 ------------------------ cmake/toolchain/armclang.cmake | 104 -------------------------------- rtos/freertos_config/CMakeLists.txt | 13 +++- 4 files changed, 14 insertions(+), 189 deletions(-) delete mode 100644 cmake/toolchain/arm-none-eabi-gcc.cmake delete mode 100644 cmake/toolchain/armclang.cmake 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= -DCMAKE_SYSTEM_PROCESSOR=cortex-m -$ make +$ cmake -B build -DCMAKE_TOOLCHAIN_FILE=/cmake/toolchain/ -DTARGET_CPU=cortex-m +$ 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" - "$<$:${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} - "$<$:-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("$<$:-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() -- cgit v1.2.1