ChibiOS17_LD.cmake 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. IF(NOT CHIBIOS_PROCESS_STACK_SIZE)
  2. SET(CHIBIOS_PROCESS_STACK_SIZE 0x200)
  3. MESSAGE(STATUS "No CHIBIOS_PROCESS_STACK_SIZE specified, using default: ${CHIBIOS_PROCESS_STACK_SIZE}")
  4. ENDIF()
  5. IF(NOT CHIBIOS_MAIN_STACK_SIZE)
  6. SET(CHIBIOS_MAIN_STACK_SIZE 0x200)
  7. MESSAGE(STATUS "No CHIBIOS_MAIN_STACK_SIZE specified, using default: ${CHIBIOS_MAIN_STACK_SIZE}")
  8. ENDIF()
  9. SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L\"${CHIBIOS_ROOT}/os/common/startup/ARMCMx/compilers/GCC/ld\"")
  10. SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--defsym=__process_stack_size__=${CHIBIOS_PROCESS_STACK_SIZE}")
  11. SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--defsym=__main_stack_size__=${CHIBIOS_MAIN_STACK_SIZE}")
  12. # Auto-generate linker script
  13. IF(NOT ChibiOS_LINKER_SCRIPT)
  14. FILE(WRITE ${CMAKE_BINARY_DIR}/chibios_link.ld.in
  15. "MEMORY\n"
  16. "{\n"
  17. "flash0 : org = 0x08000000, len = \${STM32_FLASH_SIZE}\n"
  18. "flash1 : org = 0x00000000, len = 0\n"
  19. "flash2 : org = 0x00000000, len = 0\n"
  20. "flash3 : org = 0x00000000, len = 0\n"
  21. "flash4 : org = 0x00000000, len = 0\n"
  22. "flash5 : org = 0x00000000, len = 0\n"
  23. "flash6 : org = 0x00000000, len = 0\n"
  24. "flash7 : org = 0x00000000, len = 0\n"
  25. "ram0 : org = 0x20000000, len = \${STM32_RAM_SIZE}\n"
  26. "ram1 : org = 0x00000000, len = 0\n"
  27. "ram2 : org = 0x00000000, len = 0\n"
  28. "ram3 : org = 0x00000000, len = 0\n"
  29. "ram4 : org = \${STM32_CCRAM_ORIGIN}, len = \${STM32_CCRAM_SIZE}\n"
  30. "ram5 : org = 0x00000000, len = 0\n"
  31. "ram6 : org = 0x00000000, len = 0\n"
  32. "ram7 : org = 0x00000000, len = 0\n"
  33. "}\n"
  34. "REGION_ALIAS(\"VECTORS_FLASH\", flash0);\n"
  35. "REGION_ALIAS(\"VECTORS_FLASH_LMA\", flash0);\n"
  36. "REGION_ALIAS(\"XTORS_FLASH\", flash0);\n"
  37. "REGION_ALIAS(\"XTORS_FLASH_LMA\", flash0);\n"
  38. "REGION_ALIAS(\"TEXT_FLASH\", flash0);\n"
  39. "REGION_ALIAS(\"TEXT_FLASH_LMA\", flash0);\n"
  40. "REGION_ALIAS(\"RODATA_FLASH\", flash0);\n"
  41. "REGION_ALIAS(\"RODATA_FLASH_LMA\", flash0);\n"
  42. "REGION_ALIAS(\"VARIOUS_FLASH\", flash0);\n"
  43. "REGION_ALIAS(\"VARIOUS_FLASH_LMA\", flash0);\n"
  44. "REGION_ALIAS(\"RAM_INIT_FLASH_LMA\", flash0);\n"
  45. "REGION_ALIAS(\"MAIN_STACK_RAM\", ram0);\n"
  46. "REGION_ALIAS(\"PROCESS_STACK_RAM\", ram0);\n"
  47. "REGION_ALIAS(\"DATA_RAM\", ram0);\n"
  48. "REGION_ALIAS(\"DATA_RAM_LMA\", flash0);\n"
  49. "REGION_ALIAS(\"BSS_RAM\", ram0);\n"
  50. "REGION_ALIAS(\"HEAP_RAM\", ram0);\n"
  51. "INCLUDE rules.ld\n"
  52. )
  53. SET(ChibiOS_LINKER_SCRIPT ${CMAKE_BINARY_DIR}/chibios_link.ld.in)
  54. ENDIF()