1
0

stm32l476xg.ld 2.0 KB

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