Преглед изворни кода

Integrated changes from faramax/mp1

Julien JEMINE пре 4 година
родитељ
комит
e9098ab356

+ 1 - 1
.github/workflows/cmake.yml

@@ -11,7 +11,7 @@ jobs:
     runs-on: ubuntu-20.04
     strategy:
       matrix:
-        family: [F0, F1, F2, F3, F4, F7, G0, G4, H7, L0, L1, L4, L5, U5, WB, WL]
+        family: [F0, F1, F2, F3, F4, F7, G0, G4, H7, L0, L1, L4, L5, U5, WB, WL, MP1]
       fail-fast: false
 
     steps:

+ 1 - 1
cmake/FindBSP.cmake

@@ -288,7 +288,7 @@ foreach(COMP ${BSP_FIND_COMPONENTS})
     string(TOLOWER ${COMP} COMP_L)
     string(TOUPPER ${COMP} COMP_U)
     
-    string(REGEX MATCH "^STM32([FGHLUW][0-9BL])([0-9A-Z][0-9M][A-Z][0-9A-Z])?_?(M0PLUS|M4|M7)?.*$" COMP_U ${COMP_U})
+    string(REGEX MATCH "^STM32([FGHLMUW]P?[0-9BL])([0-9A-Z][0-9M][A-Z][0-9A-Z])?_?(M0PLUS|M4|M7)?.*$" COMP_U ${COMP_U})
     if(NOT CMAKE_MATCH_1)
         message(FATAL_ERROR "Unknown BSP component: ${COMP}")
     endif()

+ 2 - 2
cmake/FindCMSIS.cmake

@@ -38,7 +38,7 @@ foreach(COMP ${CMSIS_FIND_COMPONENTS})
     endif()
 
     # Component is not RTOS component, so check whether it is a family component
-    string(REGEX MATCH "^STM32([FGHLUW][0-9BL])([0-9A-Z][0-9M][A-Z][0-9A-Z])?_?(M0PLUS|M4|M7)?.*$" COMP ${COMP})
+    string(REGEX MATCH "^STM32([FGHLMUW]P?[0-9BL])([0-9A-Z][0-9M][A-Z][0-9A-Z])?_?(M0PLUS|M4|M7)?.*$" COMP ${COMP})
     if(CMAKE_MATCH_1)
         list(APPEND CMSIS_FIND_COMPONENTS_FAMILIES ${COMP})
     endif()
@@ -96,7 +96,7 @@ foreach(COMP ${CMSIS_FIND_COMPONENTS_FAMILIES})
     string(TOLOWER ${COMP} COMP_L)
     string(TOUPPER ${COMP} COMP)
     
-    string(REGEX MATCH "^STM32([FGHLUW][0-9BL])([0-9A-Z][0-9M][A-Z][0-9A-Z])?_?(M0PLUS|M4|M7)?.*$" COMP ${COMP})
+    string(REGEX MATCH "^STM32([FGHLMUW]P?[0-9BL])([0-9A-Z][0-9M][A-Z][0-9A-Z])?_?(M0PLUS|M4|M7)?.*$" COMP ${COMP})
     # CMAKE_MATCH_<n> contains n'th subexpression
     # CMAKE_MATCH_0 contains full match
 

+ 16 - 2
cmake/FindHAL.cmake

@@ -173,6 +173,20 @@ set(HAL_LL_DRIVERS_L5
     rng rtc sdmmc spi tim ucpd usart usb utils
 )
 
+set(HAL_DRIVERS_MP1
+    adc cec cortex crc cryp dac dcmi dfsdm dma exti fdcan gpio hash hsem i2c
+    ipcc lptim mdios mdma pwr qspi rcc rng rtc sai sd smartcard smbus spdifrx
+    spi sram tim uart usart wwdg
+)
+set(HAL_EX_DRIVERS_MP1
+    adc crc cryp dac dfsdm dma hash i2c pwr rcc rtc sai sd smartcard spi tim
+    uart usart
+)
+set(HAL_LL_DRIVERS_MP1
+    adc delayblock dma exti fmc gpio i2c lptim pwr rcc rtc sdmmc spi tim usart
+    utils
+)
+
 set(HAL_DRIVERS_U5
     adc comp cordic cortex crc cryp dac dcache dcmi dma dma2d exti fdcan flash fmac gpio 
     gtzc hash hcd i2c icache irda iwdg lptim mdf mmc nand nor opamp ospi otfdec pcd pka pssi pwr ramcfg rcc
@@ -226,7 +240,7 @@ foreach(COMP ${HAL_FIND_COMPONENTS})
     string(TOLOWER ${COMP} COMP_L)
     string(TOUPPER ${COMP} COMP_U)
     
-    string(REGEX MATCH "^STM32([FGHLUW][0-9BL])([0-9A-Z][0-9M][A-Z][0-9A-Z])?_?(M0PLUS|M4|M7)?.*$" COMP_U ${COMP_U})
+    string(REGEX MATCH "^STM32([FGHLMUW]P?[0-9BL])([0-9A-Z][0-9M][A-Z][0-9A-Z])?_?(M0PLUS|M4|M7)?.*$" COMP_U ${COMP_U})
     if(CMAKE_MATCH_1)
         list(APPEND HAL_FIND_COMPONENTS_FAMILIES ${COMP})
         message(TRACE "FindHAL: append COMP ${COMP} to HAL_FIND_COMPONENTS_FAMILIES")
@@ -283,7 +297,7 @@ message(STATUS "Search for HAL LL drivers: ${HAL_FIND_COMPONENTS_DRIVERS_LL}")
 foreach(COMP ${HAL_FIND_COMPONENTS_FAMILIES})
     string(TOUPPER ${COMP} COMP_U)
     
-    string(REGEX MATCH "^STM32([FGHLUW][0-9BL])([0-9A-Z][0-9M][A-Z][0-9A-Z])?_?(M0PLUS|M4|M7)?.*$" COMP_U ${COMP_U})    
+    string(REGEX MATCH "^STM32([FGHLMUW]P?[0-9BL])([0-9A-Z][0-9M][A-Z][0-9A-Z])?_?(M0PLUS|M4|M7)?.*$" COMP_U ${COMP_U})    
     if(CMAKE_MATCH_3)
         set(CORE ${CMAKE_MATCH_3})
         set(CORE_C "::${CORE}")

+ 8 - 4
cmake/stm32/common.cmake

@@ -4,11 +4,12 @@ set(STM32_SUPPORTED_FAMILIES_LONG_NAME
     STM32H7_M4 STM32H7_M7
     STM32L0 STM32L1 STM32L4 STM32L5
     STM32U5
-    STM32WB_M4 STM32WL_M4 STM32WL_M0PLUS )
+    STM32WB_M4 STM32WL_M4 STM32WL_M0PLUS
+    STM32MP1 )
 
 foreach(FAMILY ${STM32_SUPPORTED_FAMILIES_LONG_NAME})
     # append short names (F0, F1, H7_M4, ...) to STM32_SUPPORTED_FAMILIES_SHORT_NAME
-    string(REGEX MATCH "^STM32([FGHLUW][0-9BL])_?(M0PLUS|M4|M7)?" FAMILY ${FAMILY})
+    string(REGEX MATCH "^STM32([FGHLMUW]P?[0-9BL])_?(M0PLUS|M4|M7)?" FAMILY ${FAMILY})
     list(APPEND STM32_SUPPORTED_FAMILIES_SHORT_NAME ${CMAKE_MATCH_1})
 endforeach()
 list(REMOVE_DUPLICATES STM32_SUPPORTED_FAMILIES_SHORT_NAME)
@@ -113,7 +114,7 @@ function(stm32_get_chip_info CHIP)
 
     string(TOUPPER ${CHIP} CHIP)
 
-    string(REGEX MATCH "^STM32([FGHLUW][0-9BL])([0-9A-Z][0-9M][A-Z][0-9A-Z]).*$" CHIP ${CHIP})
+    string(REGEX MATCH "^STM32([FGHLMUW]P?[0-9BL])([0-9A-Z][0-9M][A-Z][0-9A-Z]).*$" CHIP ${CHIP})
 
     if((NOT CMAKE_MATCH_1) OR (NOT CMAKE_MATCH_2))
         message(FATAL_ERROR "Unknown chip ${CHIP}")
@@ -195,7 +196,7 @@ function(stm32_get_memory_info)
         stm32_get_chip_type(${INFO_FAMILY} ${INFO_DEVICE} INFO_TYPE)
     endif()
 
-    string(REGEX REPLACE "^[FGHLUW][0-9BL][0-9A-Z][0-9M].([3468BCDEFGHIYZ])$" "\\1" SIZE_CODE ${INFO_DEVICE})
+    string(REGEX REPLACE "^[FGHLMUW]P?[0-9BL][0-9A-Z][0-9M].([3468ABCDEFGHIYZ])$" "\\1" SIZE_CODE ${INFO_DEVICE})
 
     if(SIZE_CODE STREQUAL "3")
         set(FLASH "8K")
@@ -205,6 +206,8 @@ function(stm32_get_memory_info)
         set(FLASH "32K")
     elseif(SIZE_CODE STREQUAL "8")
         set(FLASH "64K")
+    elseif(SIZE_CODE STREQUAL "A")
+        set(FLASH "0K")
     elseif(SIZE_CODE STREQUAL "B")
         set(FLASH "128K")
     elseif(SIZE_CODE STREQUAL "C")
@@ -361,3 +364,4 @@ include(stm32/l5)
 include(stm32/u5)
 include(stm32/wb)
 include(stm32/wl)
+include(stm32/mp1)

+ 6 - 0
cmake/stm32/devices.cmake

@@ -1097,10 +1097,16 @@ set(STM32_ALL_DEVICES
     L562ZE
     MP151A
     MP151C
+    MP151D
+    MP151F
     MP153A
     MP153C
+    MP153D
+    MP153F
     MP157A
     MP157C
+    MP157D
+    MP157F
     U575CG
     U575CI
     U585CI

+ 26 - 0
cmake/stm32/mp1.cmake

@@ -0,0 +1,26 @@
+set(STM32_MP1_TYPES 
+    MP151Axx MP151Cxx MP151Dxx MP151Fxx
+    MP153Axx MP153Cxx MP153Dxx MP153Fxx 
+    MP157Axx MP157Cxx MP157Dxx MP157Fxx)
+
+set(STM32_MP1_TYPE_MATCH
+    "MP151AA." "MP151CA." "MP151DA." "MP151FA."  
+    "MP153AA." "MP153CA." "MP153DA." "MP153FA."
+    "MP157AA." "MP157CA." "MP157DA." "MP157FA.")
+
+set(STM32_MP1_RAM_SIZES
+    384K 384K 384K 384K
+    384K 384K 384K 384K
+    384K 384K 384K 384K)
+
+set(STM32_MP1_CCRAM_SIZES
+    0K 0K 0K 0K
+    0K 0K 0K 0K
+    0K 0K 0K 0K)
+
+stm32_util_create_family_targets(MP1 M4)
+
+target_compile_options(STM32::MP1 INTERFACE -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard)
+target_link_options(STM32::MP1 INTERFACE -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard)
+target_compile_definitions(STM32::MP1 INTERFACE -DCORE_CM4)
+