h7.cmake 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. set(STM32_H7_TYPES
  2. H743xx H753xx H750xx H742xx H745xx H755xx H747xx H757xx
  3. H7A3xx H7A3xxQ H7B3xx H7B3xxQ H7B0xx H7B0xxQ
  4. )
  5. set(STM32_H7_TYPE_MATCH
  6. "H743.." "H753.." "H750.." "H742.." "H745.." "H755.." "H747.." "H757.."
  7. "H7A3.." "H7A3..Q" "H7B3.." "H7B3..Q" "H7B0.." "H7B0..Q"
  8. )
  9. set(STM32_H7_RAM_SIZES
  10. 128K 128K 128K 128K 128K 128K 128K 128K
  11. 128K 128K 128K 128K 128K 128K
  12. )
  13. set(STM32_H7_M4_RAM_SIZES
  14. 288K 288K 288K 288K 288K 288K 288K 288K
  15. 288K 288K 288K 288K 288K 288K
  16. )
  17. set(STM32_H7_CCRAM_SIZES
  18. 0K 0K 0K 0K 0K 0K 0K 0K
  19. 0K 0K 0K 0K 0K 0K
  20. )
  21. set(STM32_H7_NO_FLASH_SPLIT
  22. H750xx H7B0xx
  23. )
  24. set(STM32_H7_DUAL_CORE
  25. H745xx H755xx H747xx H757xx
  26. )
  27. stm32_util_create_family_targets(H7 M7)
  28. target_compile_options(STM32::H7::M7 INTERFACE
  29. -mcpu=cortex-m7 -mfpu=fpv5-sp-d16 -mfloat-abi=hard
  30. )
  31. target_link_options(STM32::H7::M7 INTERFACE
  32. -mcpu=cortex-m7 -mfpu=fpv5-sp-d16 -mfloat-abi=hard
  33. )
  34. target_compile_definitions(STM32::H7::M7 INTERFACE
  35. -DCORE_CM7
  36. )
  37. stm32_util_create_family_targets(H7 M4)
  38. target_compile_options(STM32::H7::M4 INTERFACE
  39. -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard
  40. )
  41. target_link_options(STM32::H7::M4 INTERFACE
  42. -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard
  43. )
  44. target_compile_definitions(STM32::H7::M4 INTERFACE
  45. -DCORE_CM4
  46. )
  47. function(stm32h7_get_memory_info DEVICE TYPE CORE RAM FLASH_ORIGIN RAM_ORIGIN TWO_FLASH_BANKS)
  48. if(${TYPE} IN_LIST STM32_H7_NO_FLASH_SPLIT)
  49. set(${TWO_FLASH_BANKS} FALSE PARENT_SCOPE)
  50. else()
  51. set(${TWO_FLASH_BANKS} TRUE PARENT_SCOPE)
  52. endif()
  53. if(NOT CORE)
  54. set(CORE "M7")
  55. endif()
  56. list(FIND STM32_H7_TYPES ${TYPE} TYPE_INDEX)
  57. if(CORE STREQUAL "M7")
  58. list(GET STM32_H7_RAM_SIZES ${TYPE_INDEX} RAM_VALUE)
  59. set(${RAM} ${RAM_VALUE} PARENT_SCOPE)
  60. set(${FLASH_ORIGIN} 0x8000000 PARENT_SCOPE)
  61. set(${RAM_ORIGIN} 0x20000000 PARENT_SCOPE)
  62. elseif((${TYPE} IN_LIST STM32_H7_DUAL_CORE) AND (CORE STREQUAL "M4"))
  63. list(GET STM32_H7_M4_RAM_SIZES ${TYPE_INDEX} RAM_VALUE)
  64. set(${RAM} ${RAM_VALUE} PARENT_SCOPE)
  65. set(${FLASH_ORIGIN} 0x8100000 PARENT_SCOPE)
  66. set(${RAM_ORIGIN} 0x10000000 PARENT_SCOPE)
  67. else()
  68. message(FATAL_ERROR "Unknown core ${CORE}")
  69. endif()
  70. endfunction()
  71. function(stm32h7_get_device_cores DEVICE TYPE CORES)
  72. if(${TYPE} IN_LIST STM32_H7_DUAL_CORE)
  73. set(${CORES} M7 M4 PARENT_SCOPE)
  74. else()
  75. set(${CORES} M7 PARENT_SCOPE)
  76. endif()
  77. endfunction()