diff --git a/boards/others/stm32f030_demo/stm32f030_demo_defconfig b/boards/others/stm32f030_demo/stm32f030_demo_defconfig index 8c2017d2bcc6a..dde4ff07a7177 100644 --- a/boards/others/stm32f030_demo/stm32f030_demo_defconfig +++ b/boards/others/stm32f030_demo/stm32f030_demo_defconfig @@ -1,9 +1,5 @@ # SPDX-License-Identifier: Apache-2.0 -# Kernel Options due to Low Memory (4k) -CONFIG_MAIN_STACK_SIZE=640 -CONFIG_IDLE_STACK_SIZE=200 -CONFIG_ISR_STACK_SIZE=512 # Prevent Interrupt Vector Table in RAM CONFIG_SRAM_VECTOR_TABLE=n diff --git a/boards/st/nucleo_f030r8/nucleo_f030r8_defconfig b/boards/st/nucleo_f030r8/nucleo_f030r8_defconfig index bc6f05a7777b3..dde4ff07a7177 100644 --- a/boards/st/nucleo_f030r8/nucleo_f030r8_defconfig +++ b/boards/st/nucleo_f030r8/nucleo_f030r8_defconfig @@ -1,9 +1,5 @@ # SPDX-License-Identifier: Apache-2.0 -# Kernel Options due to Low Memory (8k) -CONFIG_MAIN_STACK_SIZE=640 -CONFIG_IDLE_STACK_SIZE=200 -CONFIG_ISR_STACK_SIZE=512 # Prevent Interrupt Vector Table in RAM CONFIG_SRAM_VECTOR_TABLE=n diff --git a/boards/st/nucleo_f031k6/nucleo_f031k6_defconfig b/boards/st/nucleo_f031k6/nucleo_f031k6_defconfig index fdc64d65e1adc..c98d7ba651b3c 100644 --- a/boards/st/nucleo_f031k6/nucleo_f031k6_defconfig +++ b/boards/st/nucleo_f031k6/nucleo_f031k6_defconfig @@ -1,9 +1,5 @@ # SPDX-License-Identifier: Apache-2.0 -# Kernel Options due to Low Memory (4k) -CONFIG_MAIN_STACK_SIZE=512 -CONFIG_IDLE_STACK_SIZE=150 -CONFIG_ISR_STACK_SIZE=512 CONFIG_LOG_BUFFER_SIZE=256 # Prevent Interrupt Vector Table in RAM CONFIG_SRAM_VECTOR_TABLE=n diff --git a/boards/st/nucleo_g031k8/nucleo_g031k8_defconfig b/boards/st/nucleo_g031k8/nucleo_g031k8_defconfig index e91ac02cdda07..e3d8f7bb3d266 100644 --- a/boards/st/nucleo_g031k8/nucleo_g031k8_defconfig +++ b/boards/st/nucleo_g031k8/nucleo_g031k8_defconfig @@ -1,10 +1,5 @@ # SPDX-License-Identifier: Apache-2.0 -# Kernel Options due to Low Memory (8k) -CONFIG_MAIN_STACK_SIZE=640 -CONFIG_IDLE_STACK_SIZE=200 -CONFIG_ISR_STACK_SIZE=512 - # Serial Drivers CONFIG_SERIAL=y CONFIG_UART_INTERRUPT_DRIVEN=y diff --git a/boards/st/nucleo_l011k4/nucleo_l011k4_defconfig b/boards/st/nucleo_l011k4/nucleo_l011k4_defconfig index 026b05cc7f84e..e3d8f7bb3d266 100644 --- a/boards/st/nucleo_l011k4/nucleo_l011k4_defconfig +++ b/boards/st/nucleo_l011k4/nucleo_l011k4_defconfig @@ -1,10 +1,5 @@ # SPDX-License-Identifier: Apache-2.0 -# Kernel Options due to Low Memory (2k) -CONFIG_MAIN_STACK_SIZE=320 -CONFIG_IDLE_STACK_SIZE=100 -CONFIG_ISR_STACK_SIZE=256 - # Serial Drivers CONFIG_SERIAL=y CONFIG_UART_INTERRUPT_DRIVEN=y diff --git a/boards/st/nucleo_l031k6/nucleo_l031k6_defconfig b/boards/st/nucleo_l031k6/nucleo_l031k6_defconfig index e91ac02cdda07..e3d8f7bb3d266 100644 --- a/boards/st/nucleo_l031k6/nucleo_l031k6_defconfig +++ b/boards/st/nucleo_l031k6/nucleo_l031k6_defconfig @@ -1,10 +1,5 @@ # SPDX-License-Identifier: Apache-2.0 -# Kernel Options due to Low Memory (8k) -CONFIG_MAIN_STACK_SIZE=640 -CONFIG_IDLE_STACK_SIZE=200 -CONFIG_ISR_STACK_SIZE=512 - # Serial Drivers CONFIG_SERIAL=y CONFIG_UART_INTERRUPT_DRIVEN=y diff --git a/boards/st/nucleo_l053r8/nucleo_l053r8_defconfig b/boards/st/nucleo_l053r8/nucleo_l053r8_defconfig index 634c2f45edfa4..f23dd0a9d8373 100644 --- a/boards/st/nucleo_l053r8/nucleo_l053r8_defconfig +++ b/boards/st/nucleo_l053r8/nucleo_l053r8_defconfig @@ -3,11 +3,6 @@ # Enable MPU CONFIG_ARM_MPU=y -# Kernel Options due to Low Memory (8k) -CONFIG_MAIN_STACK_SIZE=640 -CONFIG_IDLE_STACK_SIZE=200 -CONFIG_ISR_STACK_SIZE=512 - # Serial Drivers CONFIG_SERIAL=y CONFIG_UART_INTERRUPT_DRIVEN=y diff --git a/boards/st/stm32f0_disco/stm32f0_disco_defconfig b/boards/st/stm32f0_disco/stm32f0_disco_defconfig index bc6f05a7777b3..dde4ff07a7177 100644 --- a/boards/st/stm32f0_disco/stm32f0_disco_defconfig +++ b/boards/st/stm32f0_disco/stm32f0_disco_defconfig @@ -1,9 +1,5 @@ # SPDX-License-Identifier: Apache-2.0 -# Kernel Options due to Low Memory (8k) -CONFIG_MAIN_STACK_SIZE=640 -CONFIG_IDLE_STACK_SIZE=200 -CONFIG_ISR_STACK_SIZE=512 # Prevent Interrupt Vector Table in RAM CONFIG_SRAM_VECTOR_TABLE=n diff --git a/boards/st/stm32g0316_disco/stm32g0316_disco_defconfig b/boards/st/stm32g0316_disco/stm32g0316_disco_defconfig index b9dc13649c8fe..adb1ec61c8f31 100644 --- a/boards/st/stm32g0316_disco/stm32g0316_disco_defconfig +++ b/boards/st/stm32g0316_disco/stm32g0316_disco_defconfig @@ -1,8 +1,3 @@ -# Kernel Options due to Low Memory (8k) -CONFIG_MAIN_STACK_SIZE=640 -CONFIG_IDLE_STACK_SIZE=200 -CONFIG_ISR_STACK_SIZE=512 - # Serial Drivers CONFIG_SERIAL=y CONFIG_UART_INTERRUPT_DRIVEN=y diff --git a/soc/st/stm32/Kconfig.defconfig b/soc/st/stm32/Kconfig.defconfig index 572ebe6085437..6f20624235bd9 100644 --- a/soc/st/stm32/Kconfig.defconfig +++ b/soc/st/stm32/Kconfig.defconfig @@ -20,6 +20,21 @@ config CLOCK_CONTROL config CORTEX_M_SYSTICK default n if STM32_LPTIM_TIMER +# Reduce kernel stack sizes to fit MCUs with 8 KiB RAM or less +config MAIN_STACK_SIZE + default 320 if SRAM_SIZE <= 2 + default 512 if SRAM_SIZE <= 4 + default 640 if SRAM_SIZE <= 8 + +config IDLE_STACK_SIZE + default 100 if SRAM_SIZE <= 2 + default 150 if SRAM_SIZE <= 4 + default 200 if SRAM_SIZE <= 8 + +config ISR_STACK_SIZE + default 256 if SRAM_SIZE <= 2 + default 512 if SRAM_SIZE <= 8 + DT_STM32_RCC_PATH := $(dt_nodelabel_path,rcc) DT_STM32_RCC_CLOCK_FREQ := $(dt_node_int_prop_int,$(DT_STM32_RCC_PATH),clock-frequency)