diff --git a/cpu/stm32_common/stm32_mem_lengths.mk b/cpu/stm32_common/stm32_mem_lengths.mk index 8d2298d967..9a7d90038e 100644 --- a/cpu/stm32_common/stm32_mem_lengths.mk +++ b/cpu/stm32_common/stm32_mem_lengths.mk @@ -5,7 +5,7 @@ RAM_START_ADDR ?= 0x20000000 # The next block takes care of setting the rigth lengths of RAM and ROM # for the stm32 family. Most of the CPUs should have been taken into # account here, so no need to assign the lengths per model. -STM32_INFO := $(shell printf '%s' '$(CPU_MODEL)' | tr 'a-z' 'A-Z' | sed -E -e 's/^STM32(F|L)(0|1|2|3|4|7)([A-Z0-9])([0-9])(.)(.)/\1 \2 \2\3\4 \3 \4 \5 \6/') +STM32_INFO := $(shell printf '%s' '$(CPU_MODEL)' | tr 'a-z' 'A-Z' | sed -E -e 's/^STM32(F|L)(0|1|2|3|4|7)([A-Z0-9])([0-9])(.)(.)(_A)?/\1 \2 \2\3\4 \3 \4 \5 \6 \7/') STM32_TYPE := $(word 1, $(STM32_INFO)) STM32_FAMILY := $(word 2, $(STM32_INFO)) STM32_MODEL := $(word 3, $(STM32_INFO)) @@ -13,6 +13,7 @@ STM32_MODEL2 := $(word 4, $(STM32_INFO)) STM32_MODEL3 := $(word 5, $(STM32_INFO)) STM32_PINCOUNT := $(word 6, $(STM32_INFO)) STM32_ROMSIZE := $(word 7, $(STM32_INFO)) +STM32_RAMMOD := $(word 8, $(STM32_INFO)) ifeq ($(STM32_TYPE), F) ifeq ($(STM32_FAMILY), 0) @@ -202,14 +203,18 @@ else ifeq ($(STM32_TYPE), L) RAM_LEN = 4K else ifeq ($(STM32_ROMSIZE), 8) RAM_LEN = 8K - else ifneq (, $(filter $(STM32_ROMSIZE), B C)) + else ifeq ($(STM32_ROMSIZE)$(STM32_RAMMOD), B) + RAM_LEN = 10K + else ifneq (, $(filter $(STM32_ROMSIZE)$(STM32_RAMMOD), B_A C)) RAM_LEN = 16K endif else ifneq (, $(filter $(STM32_MODEL), 151 152)) ifneq (, $(filter $(STM32_PINCOUNT), C Q U V Z)) - ifeq ($(STM32_ROMSIZE), 6) + ifneq (, $(filter $(STM32_ROMSIZE)$(STM32_RAMMOD), 6 8)) + RAM_LEN = 10K + else ifneq (, $(filter $(STM32_ROMSIZE)$(STM32_RAMMOD), 6_A B)) RAM_LEN = 16K - else ifneq (, $(filter $(STM32_ROMSIZE), 8 B C)) + else ifneq (, $(filter $(STM32_ROMSIZE)$(STM32_RAMMOD), 8_A B_A C C_A)) RAM_LEN = 32K else ifeq ($(STM32_ROMSIZE), D) RAM_LEN = 48K @@ -217,15 +222,15 @@ else ifeq ($(STM32_TYPE), L) RAM_LEN = 80K endif else ifeq ($(STM32_PINCOUNT), R) - ifeq ($(STM32_ROMSIZE), 6) - RAM_LEN = 16K - else ifneq (, $(filter $(STM32_ROMSIZE), 8 C)) + ifeq ($(STM32_ROMSIZE)$(STM32_RAMMOD), 6) + RAM_LEN = 10K + else ifneq (, $(filter $(STM32_ROMSIZE)$(STM32_RAMMOD), 8_A B_A C C_A)) RAM_LEN = 32K - else ifeq ($(STM32_ROMSIZE), B) + else ifneq (, $(filter $(STM32_ROMSIZE)$(STM32_RAMMOD), B 6_A)) RAM_LEN = 16K - else ifeq ($(STM32_ROMSIZE), D) + else ifneq (, $(filter $(STM32_ROMSIZE)$(STM32_RAMMOD), D)) RAM_LEN = 48K - else ifeq ($(STM32_ROMSIZE), E) + else ifneq (, $(filter $(STM32_ROMSIZE)$(STM32_RAMMOD), D_X E)) RAM_LEN = 80K endif endif