Konstantin Oblaukhov 5 лет назад
Родитель
Сommit
eba0058bb0
4 измененных файлов с 48 добавлено и 6 удалено
  1. 5 2
      cmake/FindCMSIS.cmake
  2. 4 3
      cmake/stm32/common.cmake
  3. 38 0
      cmake/stm32/l4.cmake
  4. 1 1
      tests/cmsis/CMakeLists.txt

+ 5 - 2
cmake/FindCMSIS.cmake

@@ -1,5 +1,8 @@
 if(NOT CMSIS_FIND_COMPONENTS)
 if(NOT CMSIS_FIND_COMPONENTS)
-    set(CMSIS_FIND_COMPONENTS STM32F0 STM32G0 STM32L0 STM32F1 STM32L1 STM32F2 STM32F3 STM32F4 STM32G4)
+    set(CMSIS_FIND_COMPONENTS 
+        STM32F0 STM32G0 STM32L0 STM32F1 STM32L1 STM32F2 STM32F3 STM32F4 STM32G4 
+        STM32L4
+    )
 endif()
 endif()
 
 
 include(stm32/devices)
 include(stm32/devices)
@@ -31,7 +34,7 @@ foreach(COMP ${CMSIS_FIND_COMPONENTS})
     string(TOLOWER ${COMP} COMP_L)
     string(TOLOWER ${COMP} COMP_L)
     string(TOUPPER ${COMP} COMP)
     string(TOUPPER ${COMP} COMP)
     
     
-    string(REGEX MATCH "^STM32([A-Z][0-9])([0-9][0-9][A-Z][0-9A-Z])?.*$" COMP ${COMP})
+    string(REGEX MATCH "^STM32([A-Z][0-9])([0-9A-Z][0-9][A-Z][0-9A-Z])?.*$" COMP ${COMP})
     
     
     if((NOT CMAKE_MATCH_1) AND (NOT CMAKE_MATCH_2))
     if((NOT CMAKE_MATCH_1) AND (NOT CMAKE_MATCH_2))
         message(FATAL_ERROR "Unknown CMSIS component: ${COMP}")
         message(FATAL_ERROR "Unknown CMSIS component: ${COMP}")

+ 4 - 3
cmake/stm32/common.cmake

@@ -1,4 +1,4 @@
-set(STM32_SUPPORTED_FAMILIES L0 L1 L4 F0 F1 F2 F3 F4 G4 F7 H7)
+set(STM32_SUPPORTED_FAMILIES L0 L1 L4 F0 F1 F2 F3 F4 G4 L4 F7 H7)
 
 
 if(NOT STM32_TOOLCHAIN_PATH)
 if(NOT STM32_TOOLCHAIN_PATH)
      set(STM32_TOOLCHAIN_PATH "/usr")
      set(STM32_TOOLCHAIN_PATH "/usr")
@@ -44,7 +44,7 @@ endfunction()
 function(stm32_get_chip_info CHIP FAMILY TYPE DEVICE)
 function(stm32_get_chip_info CHIP FAMILY TYPE DEVICE)
     string(TOUPPER ${CHIP} CHIP)
     string(TOUPPER ${CHIP} CHIP)
         
         
-    string(REGEX MATCH "^STM32([A-Z][0-9])([0-9][0-9][A-Z][0-9A-Z]).*$" CHIP ${CHIP})
+    string(REGEX MATCH "^STM32([A-Z][0-9])([0-9A-Z][0-9][A-Z][0-9A-Z]).*$" CHIP ${CHIP})
     
     
     if((NOT CMAKE_MATCH_1) OR (NOT CMAKE_MATCH_2))
     if((NOT CMAKE_MATCH_1) OR (NOT CMAKE_MATCH_2))
         message(FATAL_ERROR "Unknown chip ${CHIP}")
         message(FATAL_ERROR "Unknown chip ${CHIP}")
@@ -69,7 +69,7 @@ function(stm32_get_memory_info FAMILY DEVICE
     FLASH_SIZE RAM_SIZE CCRAM_SIZE STACK_SIZE HEAP_SIZE 
     FLASH_SIZE RAM_SIZE CCRAM_SIZE STACK_SIZE HEAP_SIZE 
     FLASH_ORIGIN RAM_ORIGIN CCRAM_ORIGIN
     FLASH_ORIGIN RAM_ORIGIN CCRAM_ORIGIN
 )
 )
-    string(REGEX REPLACE "^[FGHL][0-9][0-9][0-9].([3468BCDEFGHIZ])$" "\\1" SIZE_CODE ${DEVICE})
+    string(REGEX REPLACE "^[FGHL][0-9][0-9A-Z][0-9].([3468BCDEFGHIZ])$" "\\1" SIZE_CODE ${DEVICE})
     
     
     if(SIZE_CODE STREQUAL "3")
     if(SIZE_CODE STREQUAL "3")
         set(FLASH "8K")
         set(FLASH "8K")
@@ -154,4 +154,5 @@ include(stm32/f2)
 include(stm32/f3)
 include(stm32/f3)
 include(stm32/f4)
 include(stm32/f4)
 include(stm32/g4)
 include(stm32/g4)
+include(stm32/l4)
 
 

+ 38 - 0
cmake/stm32/l4.cmake

@@ -0,0 +1,38 @@
+set(STM32_L4_TYPES 
+    L412xx L422xx L431xx L432xx L433xx L442xx 
+    L443xx L451xx L452xx L462xx L471xx L475xx 
+    L476xx L485xx L486xx L496xx L4A6xx L4P5xx 
+    L4Q5xx L4R5xx L4R7xx L4R9xx L4S5xx L4S7xx 
+    L4S9xx
+)
+set(STM32_L4_TYPE_MATCH 
+   "L412.." "L422.." "L431.." "L432.." "L433.." "L442.." 
+   "L443.." "L451.." "L452.." "L462.." "L471.." "L475.." 
+   "L476.." "L485.." "L486.." "L496.." "L4A6.." "L4P5.." 
+   "L4Q5.." "L4R5.." "L4R7.." "L4R9.." "L4S5.." "L4S7.." 
+   "L4S9.."
+)
+
+set(STM32_L4_RAM_SIZES 
+     40K  40K  64K  64K  64K  64K
+     64K 160K 160K 160K 128K 128K
+    128K 128K 128K 320K 320K 320K 
+    320K 640K 640K 640K 640K 640K
+    640K
+)
+set(STM32_L4_CCRAM_SIZES 
+      8K   8K  16K  16K  16K  16K
+     16K  32K  32K  32K  32K  32K
+     32K  32K  32K  64K  64K  64K
+     64K  64K  64K  64K  64K  64K
+     64K
+)
+
+stm32_util_create_family_targets(L4)
+
+target_compile_options(STM32::L4 INTERFACE 
+    -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard
+)
+target_link_options(STM32::L4 INTERFACE 
+    -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard
+)

+ 1 - 1
tests/cmsis/CMakeLists.txt

@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.8)
 set(CMAKE_TOOLCHAIN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/../../cmake/stm32_gcc.cmake)
 set(CMAKE_TOOLCHAIN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/../../cmake/stm32_gcc.cmake)
 
 
 if(NOT TEST_FAMILIES)
 if(NOT TEST_FAMILIES)
-    set(TEST_FAMILIES F0 G0 L0 F1 L1 F2 F3 F4 G4)
+    set(TEST_FAMILIES F0 G0 L0 F1 L1 F2 F3 F4 G4 L4)
 endif()
 endif()
 
 
 project(cmsis-test C ASM)
 project(cmsis-test C ASM)