F407VG.ld 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. ENTRY(Reset_Handler)
  2. _estack = 0x20000000 + 128K;
  3. _Min_Heap_Size = 0x200;
  4. _Min_Stack_Size = 0x400;
  5. MEMORY
  6. {
  7. FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 1024K
  8. RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K
  9. CCMRAM (rw) : ORIGIN = 0x10000000, LENGTH = 64K
  10. }
  11. SECTIONS
  12. {
  13. .isr_vector :
  14. {
  15. . = ALIGN(4);
  16. KEEP(*(.isr_vector))
  17. . = ALIGN(4);
  18. } >FLASH
  19. .text :
  20. {
  21. . = ALIGN(4);
  22. *(.text)
  23. *(.text*)
  24. *(.glue_7)
  25. *(.glue_7t)
  26. *(.eh_frame)
  27. KEEP (*(.init))
  28. KEEP (*(.fini))
  29. . = ALIGN(4);
  30. _etext = .;
  31. } >FLASH
  32. .rodata :
  33. {
  34. . = ALIGN(4);
  35. *(.rodata)
  36. *(.rodata*)
  37. . = ALIGN(4);
  38. } >FLASH
  39. .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
  40. .ARM : {
  41. __exidx_start = .;
  42. *(.ARM.exidx*)
  43. __exidx_end = .;
  44. } >FLASH
  45. .preinit_array :
  46. {
  47. PROVIDE_HIDDEN (__preinit_array_start = .);
  48. KEEP (*(.preinit_array*))
  49. PROVIDE_HIDDEN (__preinit_array_end = .);
  50. } >FLASH
  51. .init_array :
  52. {
  53. PROVIDE_HIDDEN (__init_array_start = .);
  54. KEEP (*(SORT(.init_array.*)))
  55. KEEP (*(.init_array*))
  56. PROVIDE_HIDDEN (__init_array_end = .);
  57. } >FLASH
  58. .fini_array :
  59. {
  60. PROVIDE_HIDDEN (__fini_array_start = .);
  61. KEEP (*(SORT(.fini_array.*)))
  62. KEEP (*(.fini_array*))
  63. PROVIDE_HIDDEN (__fini_array_end = .);
  64. } >FLASH
  65. _sidata = LOADADDR(.data);
  66. .data :
  67. {
  68. . = ALIGN(4);
  69. _sdata = .;
  70. *(.data)
  71. *(.data*)
  72. . = ALIGN(4);
  73. _edata = .;
  74. } >RAM AT> FLASH
  75. _siccmram = LOADADDR(.ccmram);
  76. .ccmram :
  77. {
  78. . = ALIGN(4);
  79. _sccmram = .;
  80. *(.ccmram)
  81. *(.ccmram*)
  82. . = ALIGN(4);
  83. _eccmram = .;
  84. } >CCMRAM AT> FLASH
  85. . = ALIGN(4);
  86. .bss :
  87. {
  88. _sbss = .;
  89. __bss_start__ = _sbss;
  90. *(.bss)
  91. *(.bss*)
  92. *(COMMON)
  93. . = ALIGN(4);
  94. _ebss = .;
  95. __bss_end__ = _ebss;
  96. } >RAM
  97. ._user_heap_stack :
  98. {
  99. . = ALIGN(8);
  100. PROVIDE ( end = . );
  101. PROVIDE ( _end = . );
  102. . = . + _Min_Heap_Size;
  103. . = . + _Min_Stack_Size;
  104. . = ALIGN(8);
  105. } >RAM
  106. /DISCARD/ :
  107. {
  108. libc.a ( * )
  109. libm.a ( * )
  110. libgcc.a ( * )
  111. }
  112. .ARM.attributes 0 : { *(.ARM.attributes) }
  113. }