| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- # TODO: Add support for external RAM
- IF(STM32_FAMILY STREQUAL "F4")
- SET(STM32_CCRAM_DEF " CCMRAM (rw) : ORIGIN = ${STM32_CCRAM_ORIGIN}, LENGTH = ${STM32_CCRAM_SIZE}\n")
- SET(STM32_CCRAM_SECTION
- " _siccmram = LOADADDR(.ccmram)\;\n"
- " .ccmram :\n"
- " {"
- " . = ALIGN(4)\;\n"
- " _sccmram = .\;\n"
- " *(.ccmram)\n"
- " *(.ccmram*)\n"
- " . = ALIGN(4)\;\n"
- " _eccmram = .\;\n"
- " } >CCMRAM AT> FLASH\n"
- )
- ELSE()
- SET(STM32_CCRAM_DEF "")
- SET(STM32_CCRAM_SECTION "")
- ENDIF()
- SET(STM32_LINKER_SCRIPT_TEXT
- "ENTRY(Reset_Handler)\n"
- "_estack = ${STM32_RAM_ORIGIN} + ${STM32_RAM_SIZE} - 1\;\n"
- "_Min_Heap_Size = ${STM32_MIN_HEAP_SIZE}\;\n"
- "_Min_Stack_Size = ${STM32_MIN_STACK_SIZE}\;\n"
- "MEMORY\n"
- "{\n"
- " FLASH (rx) : ORIGIN = ${STM32_FLASH_ORIGIN}, LENGTH = ${STM32_FLASH_SIZE}\n"
- " RAM (xrw) : ORIGIN = ${STM32_RAM_ORIGIN}, LENGTH = ${STM32_RAM_SIZE}\n"
- "${STM32_CCRAM_DEF}"
- "}\n"
- "SECTIONS\n"
- "{\n"
- " .isr_vector :\n"
- " {\n"
- " . = ALIGN(4)\;\n"
- " KEEP(*(.isr_vector))\n"
- " . = ALIGN(4)\;\n"
- " } >FLASH\n"
- " .text :\n"
- " {\n"
- " . = ALIGN(4)\;\n"
- " *(.text)\n"
- " *(.text*)\n"
- " *(.glue_7)\n"
- " *(.glue_7t)\n"
- " *(.eh_frame)\n"
- " KEEP (*(.init))\n"
- " KEEP (*(.fini))\n"
- " . = ALIGN(4)\;\n"
- " _etext = .\;\n"
- " } >FLASH\n"
- " .rodata :\n"
- " {\n"
- " . = ALIGN(4)\;\n"
- " *(.rodata)\n"
- " *(.rodata*)\n"
- " . = ALIGN(4)\;\n"
- " } >FLASH\n"
- " .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH\n"
- " .ARM : {\n"
- " __exidx_start = .\;\n"
- " *(.ARM.exidx*)\n"
- " __exidx_end = .\;\n"
- " } >FLASH\n"
- " .preinit_array :\n"
- " {\n"
- " PROVIDE_HIDDEN (__preinit_array_start = .)\;\n"
- " KEEP (*(.preinit_array*))\n"
- " PROVIDE_HIDDEN (__preinit_array_end = .)\;\n"
- " } >FLASH\n"
- " .init_array :\n"
- " {\n"
- " PROVIDE_HIDDEN (__init_array_start = .)\;\n"
- " KEEP (*(SORT(.init_array.*)))\n"
- " KEEP (*(.init_array*))\n"
- " PROVIDE_HIDDEN (__init_array_end = .)\;\n"
- " } >FLASH\n"
- " .fini_array :\n"
- " {\n"
- " PROVIDE_HIDDEN (__fini_array_start = .)\;\n"
- " KEEP (*(SORT(.fini_array.*)))\n"
- " KEEP (*(.fini_array*))\n"
- " PROVIDE_HIDDEN (__fini_array_end = .)\;\n"
- " } >FLASH\n"
- " _sidata = LOADADDR(.data)\;\n"
- " .data : \n"
- " {\n"
- " . = ALIGN(4)\;\n"
- " _sdata = .\;\n"
- " *(.data)\n"
- " *(.data*)\n"
- " . = ALIGN(4)\;\n"
- " _edata = .\;\n"
- " } >RAM AT> FLASH\n"
- "${STM32_CCRAM_SECTION}"
- " . = ALIGN(4)\;\n"
- " .bss :\n"
- " {\n"
- " _sbss = .\;\n"
- " __bss_start__ = _sbss\;\n"
- " *(.bss)\n"
- " *(.bss*)\n"
- " *(COMMON)\n"
- " . = ALIGN(4)\;\n"
- " _ebss = .\;\n"
- " __bss_end__ = _ebss\;\n"
- " } >RAM\n"
- " ._user_heap_stack :\n"
- " {\n"
- " . = ALIGN(4)\;\n"
- " PROVIDE ( end = . )\;\n"
- " PROVIDE ( _end = . )\;\n"
- " . = . + _Min_Heap_Size\;\n"
- " . = . + _Min_Stack_Size\;\n"
- " . = ALIGN(4)\;\n"
- " } >RAM\n"
- " /DISCARD/ :\n"
- " {\n"
- " libc.a ( * )\n"
- " libm.a ( * )\n"
- " libgcc.a ( * )\n"
- " }\n"
- " .ARM.attributes 0 : { *(.ARM.attributes) }\n"
- "}\n"
- )
|