stm32f429xi.ld 2.1 KB

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