FindCMSIS.cmake 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. IF(NOT STM32_CHIP_TYPE)
  2. MESSAGE(FATAL_ERROR "Select your stm32 chip using STM32_CHIP_TYPE variable. (HD, HD_VL, MD, MD_VL, LD, LD_VL, XD, CL)")
  3. ENDIF()
  4. IF(STM32_CHIP_TYPE STREQUAL "HD")
  5. SET(CMSIS_LIB_NAME cmsis_hd)
  6. SET(CMSIS_STARTUP_NAME startup_stm32f10x_hd.s)
  7. SET(STM32_CHIP_DEF "-DSTM32F10X_HD")
  8. ELSEIF(STM32_CHIP_TYPE STREQUAL "HD_VL")
  9. SET(CMSIS_LIB_NAME cmsis_hd_vl)
  10. SET(CMSIS_STARTUP_NAME startup_stm32f10x_hd_vl.s)
  11. SET(STM32_CHIP_DEF "-DSTM32F10X_HD_VL")
  12. ELSEIF(STM32_CHIP_TYPE STREQUAL "MD")
  13. SET(CMSIS_LIB_NAME cmsis_md)
  14. SET(CMSIS_STARTUP_NAME startup_stm32f10x_md.s)
  15. SET(STM32_CHIP_DEF "-DSTM32F10X_MD")
  16. ELSEIF(STM32_CHIP_TYPE STREQUAL "MD_VL")
  17. SET(CMSIS_LIB_NAME cmsis_md_vl)
  18. SET(CMSIS_STARTUP_NAME startup_stm32f10x_md_vl.s)
  19. SET(STM32_CHIP_DEF "-DSTM32F10X_MD_VL")
  20. ELSEIF(STM32_CHIP_TYPE STREQUAL "LD")
  21. SET(CMSIS_LIB_NAME cmsis_ld)
  22. SET(CMSIS_STARTUP_NAME startup_stm32f10x_ld.s)
  23. SET(STM32_CHIP_DEF "-DSTM32F10X_LD")
  24. ELSEIF(STM32_CHIP_TYPE STREQUAL "LD_VL")
  25. SET(CMSIS_LIB_NAME cmsis_ld_vl)
  26. SET(CMSIS_STARTUP_NAME startup_stm32f10x_ld_vl.s)
  27. SET(STM32_CHIP_DEF "-DSTM32F10X_LD_VL")
  28. ELSEIF(STM32_CHIP_TYPE STREQUAL "XD")
  29. SET(CMSIS_LIB_NAME cmsis_xd)
  30. SET(CMSIS_STARTUP_NAME startup_stm32f10x_xd.s)
  31. SET(STM32_CHIP_DEF "-DSTM32F10X_XD")
  32. ELSEIF(STM32_CHIP_TYPE STREQUAL "CL")
  33. SET(CMSIS_LIB_NAME cmsis_cl)
  34. SET(CMSIS_STARTUP_NAME startup_stm32f10x_cl.s)
  35. SET(STM32_CHIP_DEF "-DSTM32F10X_CL")
  36. ELSE()
  37. MESSAGE(FATAL_ERROR "Invalid stm32 chip type.")
  38. ENDIF()
  39. FIND_PATH(CMSIS_INCLUDE_DIR system_stm32f10x.h core_cm3.h stm32f10x.h
  40. PATH_SUFFIXES include stm32
  41. )
  42. FIND_LIBRARY(CMSIS_LIBRARIES
  43. NAMES ${CMSIS_LIB_NAME}
  44. PATH_SUFFIXES lib
  45. )
  46. FIND_FILE(CMSIS_STARTUP_SOURCE
  47. ${CMSIS_STARTUP_NAME}
  48. PATHS ${CMAKE_FIND_ROOT_PATH}/share/cmsis/
  49. )
  50. FIND_FILE(CMSIS_LINKER_SCRIPT
  51. stm32_flash.ld.in
  52. PATHS ${CMAKE_FIND_ROOT_PATH}/share/cmsis/
  53. )
  54. INCLUDE(FindPackageHandleStandardArgs)
  55. FIND_PACKAGE_HANDLE_STANDARD_ARGS(CMSIS DEFAULT_MSG CMSIS_LIBRARIES CMSIS_INCLUDE_DIR CMSIS_STARTUP_SOURCE CMSIS_LINKER_SCRIPT)
  56. SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${STM32_CHIP_DEF}")
  57. SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${STM32_CHIP_DEF}")
  58. FUNCTION(STM32_SET_PARAMS FLASH_SIZE RAM_SIZE STACK_ADDRESS MIN_STACK_SIZE MIN_HEAP_SIZE EXT_RAM_SIZE FLASH_ORIGIN RAM_ORIGIN EXT_RAM_ORIGIN)
  59. CONFIGURE_FILE(${CMSIS_LINKER_SCRIPT} ${CMAKE_CURRENT_BINARY_DIR}/stm32_flash.ld)
  60. ENDFUNCTION(STM32_SET_PARAMS)
  61. FUNCTION(STM32_SET_PARAMS FLASH_SIZE RAM_SIZE STACK_ADDRESS)
  62. SET(STACK_ADDRESS ${STACK_ADDRESS})
  63. SET(FLASH_SIZE ${FLASH_SIZE})
  64. SET(RAM_SIZE ${RAM_SIZE})
  65. SET(MIN_STACK_SIZE "0x200")
  66. SET(MIN_HEAP_SIZE "0")
  67. SET(EXT_RAM_SIZE "0K")
  68. SET(FLASH_ORIGIN "0x08000000")
  69. SET(RAM_ORIGIN "0x20000000")
  70. SET(EXT_RAM_ORIGIN "0x60000000")
  71. CONFIGURE_FILE(${CMSIS_LINKER_SCRIPT} ${CMAKE_CURRENT_BINARY_DIR}/stm32_flash.ld)
  72. ENDFUNCTION(STM32_SET_PARAMS)