1
0

stm32f303xe.ld 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. ENTRY(Reset_Handler)
  2. MEMORY
  3. {
  4. ROM (rx): ORIGIN = 0x08000000, LENGTH = 512K
  5. RAM (rwx): ORIGIN = 0x20000000, LENGTH = 64K
  6. CCMRAM (rwx): ORIGIN = 0x10000000, LENGTH = 16K
  7. }
  8. SECTIONS
  9. {
  10. .text :
  11. {
  12. KEEP(*(.isr_vector))
  13. *(.text*)
  14. KEEP(*(.init)) KEEP(*(.fini))
  15. *crtbegin.o(.ctors)
  16. *crtbegin?.o(.ctors)
  17. *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
  18. *(SORT(.ctors.*))
  19. *(.ctors)
  20. *crtbegin.o(.dtors)
  21. *crtbegin?.o(.dtors)
  22. *(EXCLUDE_FILE(*crtend?.o *crtend.o).dtors)
  23. *(SORT(.dtors.*))
  24. *(.dtors)
  25. *(.rodata*)
  26. KEEP(*(.eh_frame*))
  27. } > ROM
  28. .ARM.extab :
  29. {
  30. *(.ARM.extab* .gnu.linkonce.armextab.*)
  31. } > ROM
  32. __exidx_start = .;
  33. .ARM.exidx :
  34. {
  35. *(.ARM.exidx* .gnu.linkonce.armexidx.*)
  36. } > ROM
  37. __exidx_end = .;
  38. __etext = .;
  39. .data : AT (__etext)
  40. {
  41. __data_start__ = .;
  42. *(vtable)
  43. *(.data*)
  44. . = ALIGN(4);
  45. PROVIDE_HIDDEN (__preinit_array_start = .);
  46. KEEP(*(.preinit_array))
  47. PROVIDE_HIDDEN (__preinit_array_end = .);
  48. . = ALIGN(4);
  49. PROVIDE_HIDDEN (__init_array_start = .);
  50. KEEP(*(SORT(.init_array.*)))
  51. KEEP(*(.init_array))
  52. PROVIDE_HIDDEN (__init_array_end = .);
  53. . = ALIGN(4);
  54. PROVIDE_HIDDEN (__fini_array_start = .);
  55. KEEP(*(SORT(.fini_array.*)))
  56. KEEP(*(.fini_array))
  57. PROVIDE_HIDDEN (__fini_array_end = .);
  58. . = ALIGN(4);
  59. __data_end__ = .;
  60. } > RAM
  61. .bss (NOLOAD) :
  62. {
  63. __bss_start__ = .;
  64. *(.bss*)
  65. *(COMMON)
  66. __bss_end__ = .;
  67. } > RAM
  68. .heap (NOLOAD) :
  69. {
  70. __end__ = .;
  71. *(.heap*)
  72. __HeapLimit = .;
  73. } > RAM
  74. .stack_dummy (NOLOAD) :
  75. {
  76. *(.stack)
  77. } > RAM
  78. __StackTop = ORIGIN(RAM) + LENGTH(RAM);
  79. __StackLimit = __StackTop - SIZEOF(.stack_dummy);
  80. PROVIDE(__stack = __StackTop);
  81. ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
  82. PROVIDE(_estack = __stack);
  83. PROVIDE(_sidata = __etext);
  84. PROVIDE(_sdata = __data_start__);
  85. PROVIDE(_edata = __data_end__);
  86. PROVIDE(_sbss = __bss_start__);
  87. PROVIDE(_ebss = __bss_end__);
  88. }