diff --git a/arch/arm/core/Kconfig b/arch/arm/core/Kconfig index a6a529b33b55..9ddac8bc2765 100644 --- a/arch/arm/core/Kconfig +++ b/arch/arm/core/Kconfig @@ -15,7 +15,7 @@ config CPU_CORTEX_M bool select CPU_CORTEX select ARCH_HAS_CUSTOM_SWAP_TO_MAIN - select HAS_CMSIS + select HAS_CMSIS_CORE select HAS_FLASH_LOAD_OFFSET select ARCH_HAS_THREAD_ABORT select ARCH_HAS_TRUSTED_EXECUTION if ARM_TRUSTZONE_M diff --git a/ext/hal/cmsis/CMakeLists.txt b/ext/hal/cmsis/CMakeLists.txt index 80e9cdb26723..e0c61fef0a11 100644 --- a/ext/hal/cmsis/CMakeLists.txt +++ b/ext/hal/cmsis/CMakeLists.txt @@ -1,11 +1,3 @@ -if(CONFIG_HAS_CMSIS) - zephyr_include_directories(Include) -endif() +# SPDX-License-Identifier: Apache-2.0 -# As of CMSIS v5.6.0, __PROGRAM_START is to indicate whether the -# ARM vendor or the OS supplies data/bss init routine, otherwise -# the default data/bss init routine for the selected toolchain is -# added. We set the macro in build-time to guarantee compatibility -# with all existing ARM platforms. - -zephyr_compile_definitions(__PROGRAM_START) +add_subdirectory_ifdef(CONFIG_HAS_CMSIS_CORE_M Core) diff --git a/ext/hal/cmsis/Core/CMakeLists.txt b/ext/hal/cmsis/Core/CMakeLists.txt new file mode 100644 index 000000000000..08d3c9934b01 --- /dev/null +++ b/ext/hal/cmsis/Core/CMakeLists.txt @@ -0,0 +1,11 @@ +# SPDX-License-Identifier: Apache-2.0 + +zephyr_include_directories(Include) + +# As of CMSIS v5.6.0, __PROGRAM_START is to indicate whether the +# ARM vendor or the OS supplies data/bss init routine, otherwise +# the default data/bss init routine for the selected toolchain is +# added. We set the macro in build-time to guarantee compatibility +# with all existing ARM platforms. + +zephyr_compile_definitions(__PROGRAM_START) diff --git a/ext/hal/cmsis/Include/cmsis_armcc.h b/ext/hal/cmsis/Core/Include/cmsis_armcc.h similarity index 100% rename from ext/hal/cmsis/Include/cmsis_armcc.h rename to ext/hal/cmsis/Core/Include/cmsis_armcc.h diff --git a/ext/hal/cmsis/Include/cmsis_armclang.h b/ext/hal/cmsis/Core/Include/cmsis_armclang.h similarity index 100% rename from ext/hal/cmsis/Include/cmsis_armclang.h rename to ext/hal/cmsis/Core/Include/cmsis_armclang.h diff --git a/ext/hal/cmsis/Include/cmsis_armclang_ltm.h b/ext/hal/cmsis/Core/Include/cmsis_armclang_ltm.h similarity index 100% rename from ext/hal/cmsis/Include/cmsis_armclang_ltm.h rename to ext/hal/cmsis/Core/Include/cmsis_armclang_ltm.h diff --git a/ext/hal/cmsis/Include/cmsis_compiler.h b/ext/hal/cmsis/Core/Include/cmsis_compiler.h similarity index 100% rename from ext/hal/cmsis/Include/cmsis_compiler.h rename to ext/hal/cmsis/Core/Include/cmsis_compiler.h diff --git a/ext/hal/cmsis/Include/cmsis_gcc.h b/ext/hal/cmsis/Core/Include/cmsis_gcc.h similarity index 100% rename from ext/hal/cmsis/Include/cmsis_gcc.h rename to ext/hal/cmsis/Core/Include/cmsis_gcc.h diff --git a/ext/hal/cmsis/Include/cmsis_iccarm.h b/ext/hal/cmsis/Core/Include/cmsis_iccarm.h similarity index 100% rename from ext/hal/cmsis/Include/cmsis_iccarm.h rename to ext/hal/cmsis/Core/Include/cmsis_iccarm.h diff --git a/ext/hal/cmsis/Include/cmsis_version.h b/ext/hal/cmsis/Core/Include/cmsis_version.h similarity index 100% rename from ext/hal/cmsis/Include/cmsis_version.h rename to ext/hal/cmsis/Core/Include/cmsis_version.h diff --git a/ext/hal/cmsis/Include/core_armv81mml.h b/ext/hal/cmsis/Core/Include/core_armv81mml.h similarity index 100% rename from ext/hal/cmsis/Include/core_armv81mml.h rename to ext/hal/cmsis/Core/Include/core_armv81mml.h diff --git a/ext/hal/cmsis/Include/core_armv8mbl.h b/ext/hal/cmsis/Core/Include/core_armv8mbl.h similarity index 100% rename from ext/hal/cmsis/Include/core_armv8mbl.h rename to ext/hal/cmsis/Core/Include/core_armv8mbl.h diff --git a/ext/hal/cmsis/Include/core_armv8mml.h b/ext/hal/cmsis/Core/Include/core_armv8mml.h similarity index 100% rename from ext/hal/cmsis/Include/core_armv8mml.h rename to ext/hal/cmsis/Core/Include/core_armv8mml.h diff --git a/ext/hal/cmsis/Include/core_cm0.h b/ext/hal/cmsis/Core/Include/core_cm0.h similarity index 100% rename from ext/hal/cmsis/Include/core_cm0.h rename to ext/hal/cmsis/Core/Include/core_cm0.h diff --git a/ext/hal/cmsis/Include/core_cm0plus.h b/ext/hal/cmsis/Core/Include/core_cm0plus.h similarity index 100% rename from ext/hal/cmsis/Include/core_cm0plus.h rename to ext/hal/cmsis/Core/Include/core_cm0plus.h diff --git a/ext/hal/cmsis/Include/core_cm1.h b/ext/hal/cmsis/Core/Include/core_cm1.h similarity index 100% rename from ext/hal/cmsis/Include/core_cm1.h rename to ext/hal/cmsis/Core/Include/core_cm1.h diff --git a/ext/hal/cmsis/Include/core_cm23.h b/ext/hal/cmsis/Core/Include/core_cm23.h similarity index 100% rename from ext/hal/cmsis/Include/core_cm23.h rename to ext/hal/cmsis/Core/Include/core_cm23.h diff --git a/ext/hal/cmsis/Include/core_cm3.h b/ext/hal/cmsis/Core/Include/core_cm3.h similarity index 100% rename from ext/hal/cmsis/Include/core_cm3.h rename to ext/hal/cmsis/Core/Include/core_cm3.h diff --git a/ext/hal/cmsis/Include/core_cm33.h b/ext/hal/cmsis/Core/Include/core_cm33.h similarity index 100% rename from ext/hal/cmsis/Include/core_cm33.h rename to ext/hal/cmsis/Core/Include/core_cm33.h diff --git a/ext/hal/cmsis/Include/core_cm35p.h b/ext/hal/cmsis/Core/Include/core_cm35p.h similarity index 100% rename from ext/hal/cmsis/Include/core_cm35p.h rename to ext/hal/cmsis/Core/Include/core_cm35p.h diff --git a/ext/hal/cmsis/Include/core_cm4.h b/ext/hal/cmsis/Core/Include/core_cm4.h similarity index 100% rename from ext/hal/cmsis/Include/core_cm4.h rename to ext/hal/cmsis/Core/Include/core_cm4.h diff --git a/ext/hal/cmsis/Include/core_cm7.h b/ext/hal/cmsis/Core/Include/core_cm7.h similarity index 100% rename from ext/hal/cmsis/Include/core_cm7.h rename to ext/hal/cmsis/Core/Include/core_cm7.h diff --git a/ext/hal/cmsis/Include/core_sc000.h b/ext/hal/cmsis/Core/Include/core_sc000.h similarity index 100% rename from ext/hal/cmsis/Include/core_sc000.h rename to ext/hal/cmsis/Core/Include/core_sc000.h diff --git a/ext/hal/cmsis/Include/core_sc300.h b/ext/hal/cmsis/Core/Include/core_sc300.h similarity index 100% rename from ext/hal/cmsis/Include/core_sc300.h rename to ext/hal/cmsis/Core/Include/core_sc300.h diff --git a/ext/hal/cmsis/Include/mpu_armv7.h b/ext/hal/cmsis/Core/Include/mpu_armv7.h similarity index 100% rename from ext/hal/cmsis/Include/mpu_armv7.h rename to ext/hal/cmsis/Core/Include/mpu_armv7.h diff --git a/ext/hal/cmsis/Include/mpu_armv8.h b/ext/hal/cmsis/Core/Include/mpu_armv8.h similarity index 100% rename from ext/hal/cmsis/Include/mpu_armv8.h rename to ext/hal/cmsis/Core/Include/mpu_armv8.h diff --git a/ext/hal/cmsis/Include/tz_context.h b/ext/hal/cmsis/Core/Include/tz_context.h similarity index 100% rename from ext/hal/cmsis/Include/tz_context.h rename to ext/hal/cmsis/Core/Include/tz_context.h diff --git a/ext/hal/cmsis/Kconfig b/ext/hal/cmsis/Kconfig index 22bb8b2f28b3..0e45d15ba80c 100644 --- a/ext/hal/cmsis/Kconfig +++ b/ext/hal/cmsis/Kconfig @@ -1,8 +1,13 @@ -# # Copyright (c) 2016 Intel Corporation -# # SPDX-License-Identifier: Apache-2.0 -# -config HAS_CMSIS +config HAS_CMSIS_CORE bool + select HAS_CMSIS_CORE_M if CPU_CORTEX_M + +if HAS_CMSIS_CORE + +config HAS_CMSIS_CORE_M + bool + +endif diff --git a/ext/hal/cmsis/README b/ext/hal/cmsis/README index 1afa679f128f..8dde9d70733d 100644 --- a/ext/hal/cmsis/README +++ b/ext/hal/cmsis/README @@ -1,15 +1,15 @@ The ARM Cortex Microcontroller Software Interface Standard (CMSIS) defines a -set of standard interfaces to ARM Cortex-M SOCs. In particular, the CMSIS-CORE -component standardizes the software interface to core and peripheral registers, -as well as exception names and the system clock frequency. Multiple SOC -vendors, including NXP and Nordic Semiconductor, include the CMSIS-CORE header -files in their SOC header files. These SOC header files are in turn used by -the vendor's peripheral drivers. +set of standard interfaces to ARM Cortex family SOCs. In particular, the +CMSIS-CORE component standardizes the software interface to core and peripheral +registers, as well as exception names and the system clock frequency. Multiple +SOC vendors, including NXP and Nordic Semiconductor, include the CMSIS-CORE +header files in their SOC header files. These SOC header files are in turn used +by the vendor's peripheral drivers. http://www.arm.com/products/processors/cortex-m/cortex-microcontroller-software-interface-standard.php The sources in this directory are imported from https://github.com/ARM-software/CMSIS_5.git -The current version supported in Zephyr is -https://github.com/ARM-software/CMSIS_5/releases/tag/5.5.1 +The current version supported in Zephyr is +https://github.com/ARM-software/CMSIS_5/releases/tag/5.6.0 diff --git a/modules/Kconfig.atmel b/modules/Kconfig.atmel index 7da2e3bf42ee..25c5a1afd686 100644 --- a/modules/Kconfig.atmel +++ b/modules/Kconfig.atmel @@ -6,7 +6,7 @@ config ASF bool - select HAS_CMSIS + select HAS_CMSIS_CORE depends on SOC_FAMILY_SAM || SOC_FAMILY_SAM0 config ATMEL_WINC1500 diff --git a/modules/Kconfig.cypress b/modules/Kconfig.cypress index e0ba1ae3e2fc..acf57dadd5c2 100644 --- a/modules/Kconfig.cypress +++ b/modules/Kconfig.cypress @@ -6,4 +6,4 @@ config HAS_CYPRESS_DRIVERS bool - select HAS_CMSIS + select HAS_CMSIS_CORE diff --git a/modules/Kconfig.imx b/modules/Kconfig.imx index 21684b744849..eb1f91810ba6 100644 --- a/modules/Kconfig.imx +++ b/modules/Kconfig.imx @@ -5,7 +5,7 @@ config HAS_IMX_HAL bool - select HAS_CMSIS + select HAS_CMSIS_CORE depends on SOC_FAMILY_IMX if HAS_IMX_HAL diff --git a/modules/Kconfig.mcux b/modules/Kconfig.mcux index 30635aa3491d..dbb654dbfe1b 100644 --- a/modules/Kconfig.mcux +++ b/modules/Kconfig.mcux @@ -5,7 +5,7 @@ config HAS_MCUX bool - select HAS_CMSIS + select HAS_CMSIS_CORE depends on SOC_FAMILY_KINETIS || SOC_FAMILY_IMX || SOC_FAMILY_LPC if HAS_MCUX diff --git a/modules/Kconfig.nordic b/modules/Kconfig.nordic index 511001965a93..86a11e2d1128 100644 --- a/modules/Kconfig.nordic +++ b/modules/Kconfig.nordic @@ -6,6 +6,7 @@ config HAS_NORDIC_DRIVERS config HAS_NRFX bool + select HAS_CMSIS_CORE menu "nrfx drivers" depends on HAS_NRFX diff --git a/modules/Kconfig.silabs b/modules/Kconfig.silabs index 41d43abac663..71aba9b72f7d 100644 --- a/modules/Kconfig.silabs +++ b/modules/Kconfig.silabs @@ -5,5 +5,5 @@ config HAS_SILABS_GECKO bool - select HAS_CMSIS + select HAS_CMSIS_CORE depends on SOC_FAMILY_EXX32 diff --git a/modules/Kconfig.simplelink b/modules/Kconfig.simplelink index b2fca60b7eea..6f386e8d4568 100644 --- a/modules/Kconfig.simplelink +++ b/modules/Kconfig.simplelink @@ -22,7 +22,7 @@ config SIMPLELINK_HOST_DRIVER config HAS_MSP432P4XXSDK bool - select HAS_CMSIS + select HAS_CMSIS_CORE # Kconfig - CC13X2 / CC26X2 SDK HAL configuration diff --git a/modules/Kconfig.stm32 b/modules/Kconfig.stm32 index 286f46884341..ad53ec1c6642 100644 --- a/modules/Kconfig.stm32 +++ b/modules/Kconfig.stm32 @@ -5,7 +5,7 @@ config HAS_STM32CUBE bool - select HAS_CMSIS + select HAS_CMSIS_CORE depends on SOC_FAMILY_STM32 if HAS_STM32CUBE diff --git a/soc/arm/nordic_nrf/nrf51/Kconfig.series b/soc/arm/nordic_nrf/nrf51/Kconfig.series index 28409d9d8776..aaad0cd4982c 100644 --- a/soc/arm/nordic_nrf/nrf51/Kconfig.series +++ b/soc/arm/nordic_nrf/nrf51/Kconfig.series @@ -12,7 +12,6 @@ config SOC_SERIES_NRF51X select SOC_FAMILY_NRF select HAS_SYS_POWER_STATE_DEEP_SLEEP_1 select XIP - select HAS_CMSIS select HAS_NRFX select HAS_SEGGER_RTT help diff --git a/soc/arm/nordic_nrf/nrf52/Kconfig.series b/soc/arm/nordic_nrf/nrf52/Kconfig.series index 2ae01f5d05b5..23923c260485 100644 --- a/soc/arm/nordic_nrf/nrf52/Kconfig.series +++ b/soc/arm/nordic_nrf/nrf52/Kconfig.series @@ -13,7 +13,6 @@ config SOC_SERIES_NRF52X select SOC_FAMILY_NRF select HAS_SYS_POWER_STATE_DEEP_SLEEP_1 select XIP - select HAS_CMSIS select HAS_NRFX select HAS_SEGGER_RTT help diff --git a/soc/arm/nordic_nrf/nrf91/Kconfig.series b/soc/arm/nordic_nrf/nrf91/Kconfig.series index c45183215598..8e7b38223a74 100644 --- a/soc/arm/nordic_nrf/nrf91/Kconfig.series +++ b/soc/arm/nordic_nrf/nrf91/Kconfig.series @@ -15,7 +15,6 @@ config SOC_SERIES_NRF91X select SOC_FAMILY_NRF select HAS_SYS_POWER_STATE_DEEP_SLEEP_1 select XIP - select HAS_CMSIS select HAS_NRFX select HAS_SEGGER_RTT help diff --git a/soc/arm/nxp_kinetis/k2x/Kconfig.soc b/soc/arm/nxp_kinetis/k2x/Kconfig.soc index 2c4035304d11..3fb831d76dcf 100644 --- a/soc/arm/nxp_kinetis/k2x/Kconfig.soc +++ b/soc/arm/nxp_kinetis/k2x/Kconfig.soc @@ -22,7 +22,6 @@ config SOC_MK22F51212 select HAS_MCUX_SIM select HAS_OSC select HAS_MCG - select HAS_CMSIS select CPU_HAS_FPU endchoice