|
@@ -168,7 +168,7 @@ function(stm32_get_cores CORES)
|
|
|
endfunction()
|
|
endfunction()
|
|
|
|
|
|
|
|
function(stm32_get_memory_info)
|
|
function(stm32_get_memory_info)
|
|
|
- set(ARG_OPTIONS FLASH RAM CCRAM STACK HEAP)
|
|
|
|
|
|
|
+ set(ARG_OPTIONS FLASH RAM CCRAM STACK HEAP RAM_SHARE)
|
|
|
set(ARG_SINGLE CHIP FAMILY DEVICE CORE SIZE ORIGIN)
|
|
set(ARG_SINGLE CHIP FAMILY DEVICE CORE SIZE ORIGIN)
|
|
|
set(ARG_MULTIPLE "")
|
|
set(ARG_MULTIPLE "")
|
|
|
cmake_parse_arguments(INFO "${ARG_OPTIONS}" "${ARG_SINGLE}" "${ARG_MULTIPLE}" ${ARGN})
|
|
cmake_parse_arguments(INFO "${ARG_OPTIONS}" "${ARG_SINGLE}" "${ARG_MULTIPLE}" ${ARGN})
|
|
@@ -196,7 +196,6 @@ function(stm32_get_memory_info)
|
|
|
elseif(SIZE_CODE STREQUAL "B")
|
|
elseif(SIZE_CODE STREQUAL "B")
|
|
|
set(FLASH "128K")
|
|
set(FLASH "128K")
|
|
|
elseif(SIZE_CODE STREQUAL "C")
|
|
elseif(SIZE_CODE STREQUAL "C")
|
|
|
- # Note there is a problem with STM32WB15CC (320kB flash)
|
|
|
|
|
set(FLASH "256K")
|
|
set(FLASH "256K")
|
|
|
elseif(SIZE_CODE STREQUAL "D")
|
|
elseif(SIZE_CODE STREQUAL "D")
|
|
|
set(FLASH "384K")
|
|
set(FLASH "384K")
|
|
@@ -222,10 +221,13 @@ function(stm32_get_memory_info)
|
|
|
list(FIND STM32_${INFO_FAMILY}_TYPES ${INFO_TYPE} TYPE_INDEX)
|
|
list(FIND STM32_${INFO_FAMILY}_TYPES ${INFO_TYPE} TYPE_INDEX)
|
|
|
list(GET STM32_${INFO_FAMILY}_RAM_SIZES ${TYPE_INDEX} RAM)
|
|
list(GET STM32_${INFO_FAMILY}_RAM_SIZES ${TYPE_INDEX} RAM)
|
|
|
list(GET STM32_${INFO_FAMILY}_CCRAM_SIZES ${TYPE_INDEX} CCRAM)
|
|
list(GET STM32_${INFO_FAMILY}_CCRAM_SIZES ${TYPE_INDEX} CCRAM)
|
|
|
|
|
+ list(GET STM32_${INFO_FAMILY}_RAM_SHARE_SIZES ${TYPE_INDEX} RAM_SHARE)
|
|
|
set(FLASH_ORIGIN 0x8000000)
|
|
set(FLASH_ORIGIN 0x8000000)
|
|
|
set(RAM_ORIGIN 0x20000000)
|
|
set(RAM_ORIGIN 0x20000000)
|
|
|
set(CCRAM_ORIGIN 0x10000000)
|
|
set(CCRAM_ORIGIN 0x10000000)
|
|
|
-
|
|
|
|
|
|
|
+ set(RAM_SHARE_ORIGIN 0x20030000)
|
|
|
|
|
+
|
|
|
|
|
+ unset(TWO_FLASH_BANKS)
|
|
|
if(FAMILY STREQUAL "F1")
|
|
if(FAMILY STREQUAL "F1")
|
|
|
stm32f1_get_memory_info(${INFO_DEVICE} ${INFO_TYPE} FLASH RAM)
|
|
stm32f1_get_memory_info(${INFO_DEVICE} ${INFO_TYPE} FLASH RAM)
|
|
|
elseif(FAMILY STREQUAL "L1")
|
|
elseif(FAMILY STREQUAL "L1")
|
|
@@ -236,11 +238,16 @@ function(stm32_get_memory_info)
|
|
|
stm32f3_get_memory_info(${INFO_DEVICE} ${INFO_TYPE} FLASH RAM)
|
|
stm32f3_get_memory_info(${INFO_DEVICE} ${INFO_TYPE} FLASH RAM)
|
|
|
elseif(FAMILY STREQUAL "H7")
|
|
elseif(FAMILY STREQUAL "H7")
|
|
|
stm32h7_get_memory_info(${INFO_DEVICE} ${INFO_TYPE} "${INFO_CORE}" RAM FLASH_ORIGIN RAM_ORIGIN TWO_FLASH_BANKS)
|
|
stm32h7_get_memory_info(${INFO_DEVICE} ${INFO_TYPE} "${INFO_CORE}" RAM FLASH_ORIGIN RAM_ORIGIN TWO_FLASH_BANKS)
|
|
|
- if(TWO_FLASH_BANKS)
|
|
|
|
|
- string(REGEX MATCH "([0-9]+)K" FLASH_KB ${FLASH})
|
|
|
|
|
- math(EXPR FLASH_KB "${CMAKE_MATCH_1} / 2")
|
|
|
|
|
- set(FLASH "${FLASH_KB}K")
|
|
|
|
|
- endif()
|
|
|
|
|
|
|
+ elseif(FAMILY STREQUAL "WL")
|
|
|
|
|
+ stm32wl_get_memory_info(${INFO_DEVICE} ${INFO_TYPE} "${INFO_CORE}" RAM FLASH_ORIGIN RAM_ORIGIN TWO_FLASH_BANKS)
|
|
|
|
|
+ elseif(FAMILY STREQUAL "WB")
|
|
|
|
|
+ stm32wb_get_memory_info(${INFO_DEVICE} ${INFO_TYPE} "${INFO_CORE}" RAM RAM_ORIGIN TWO_FLASH_BANKS)
|
|
|
|
|
+ endif()
|
|
|
|
|
+ # when a device is dual core, each core uses half of total flash
|
|
|
|
|
+ if(TWO_FLASH_BANKS)
|
|
|
|
|
+ string(REGEX MATCH "([0-9]+)K" FLASH_KB ${FLASH})
|
|
|
|
|
+ math(EXPR FLASH_KB "${CMAKE_MATCH_1} / 2")
|
|
|
|
|
+ set(FLASH "${FLASH_KB}K")
|
|
|
endif()
|
|
endif()
|
|
|
|
|
|
|
|
if(INFO_FLASH)
|
|
if(INFO_FLASH)
|
|
@@ -252,6 +259,9 @@ function(stm32_get_memory_info)
|
|
|
elseif(INFO_CCRAM)
|
|
elseif(INFO_CCRAM)
|
|
|
set(SIZE ${CCRAM})
|
|
set(SIZE ${CCRAM})
|
|
|
set(ORIGIN ${CCRAM_ORIGIN})
|
|
set(ORIGIN ${CCRAM_ORIGIN})
|
|
|
|
|
+ elseif(INFO_RAM_SHARE)
|
|
|
|
|
+ set(SIZE ${RAM_SHARE})
|
|
|
|
|
+ set(ORIGIN ${RAM_SHARE_ORIGIN})
|
|
|
elseif(INFO_STACK)
|
|
elseif(INFO_STACK)
|
|
|
if (RAM STREQUAL "2K")
|
|
if (RAM STREQUAL "2K")
|
|
|
set(SIZE 0x200)
|
|
set(SIZE 0x200)
|