mp15xx.ld 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. ENTRY(Reset_Handler)
  2. _estack = ORIGIN(DataSRAM) + LENGTH(DataSRAM);
  3. _Min_Heap_Size = 0x200 ;
  4. _Min_Stack_Size = 0x400 ;
  5. MEMORY
  6. {
  7. RetentionRAM (xrw) : ORIGIN = 0x00000000, LENGTH = 0x00000600
  8. TextSRAM (xrw) : ORIGIN = 0x10000000, LENGTH = 128K
  9. DataSRAM (xrw) : ORIGIN = 0x10020000, LENGTH = 128K
  10. SharedSRAM (xrw) : ORIGIN = 0x10040000, LENGTH = 64K
  11. DmaSRAM (xrw) : ORIGIN = 0x10050000, LENGTH = 64K
  12. }
  13. __OPENAMP_region_start__ = ORIGIN(SharedSRAM);
  14. __OPENAMP_region_end__ = ORIGIN(SharedSRAM) + LENGTH(SharedSRAM);
  15. SECTIONS
  16. {
  17. .isr_vector :
  18. {
  19. . = ALIGN(4);
  20. KEEP(*(.isr_vector))
  21. . = ALIGN(4);
  22. } >RetentionRAM
  23. .text :
  24. {
  25. . = ALIGN(4);
  26. *(.text)
  27. *(.text*)
  28. *(.glue_7)
  29. *(.glue_7t)
  30. *(.eh_frame)
  31. KEEP (*(.init))
  32. KEEP (*(.fini))
  33. . = ALIGN(4);
  34. _etext = .;
  35. } >TextSRAM
  36. .rodata :
  37. {
  38. . = ALIGN(4);
  39. *(.rodata)
  40. *(.rodata*)
  41. . = ALIGN(4);
  42. } >TextSRAM
  43. .ARM.extab : {
  44. . = ALIGN(4);
  45. *(.ARM.extab* .gnu.linkonce.armextab.*)
  46. . = ALIGN(4);
  47. } >TextSRAM
  48. .ARM : {
  49. . = ALIGN(4);
  50. __exidx_start = .;
  51. *(.ARM.exidx*)
  52. __exidx_end = .;
  53. . = ALIGN(4);
  54. } >TextSRAM
  55. .preinit_array :
  56. {
  57. . = ALIGN(4);
  58. PROVIDE_HIDDEN (__preinit_array_start = .);
  59. KEEP (*(.preinit_array*))
  60. PROVIDE_HIDDEN (__preinit_array_end = .);
  61. . = ALIGN(4);
  62. } >TextSRAM
  63. .init_array :
  64. {
  65. . = ALIGN(4);
  66. PROVIDE_HIDDEN (__init_array_start = .);
  67. KEEP (*(SORT(.init_array.*)))
  68. KEEP (*(.init_array*))
  69. PROVIDE_HIDDEN (__init_array_end = .);
  70. . = ALIGN(4);
  71. } >TextSRAM
  72. .fini_array :
  73. {
  74. . = ALIGN(4);
  75. PROVIDE_HIDDEN (__fini_array_start = .);
  76. KEEP (*(SORT(.fini_array.*)))
  77. KEEP (*(.fini_array*))
  78. PROVIDE_HIDDEN (__fini_array_end = .);
  79. . = ALIGN(4);
  80. } >TextSRAM
  81. __DATA_ROM = .;
  82. _sidata = LOADADDR(.data);
  83. .data : AT(__DATA_ROM)
  84. {
  85. . = ALIGN(4);
  86. _sdata = .;
  87. *(.data)
  88. *(.data*)
  89. . = ALIGN(4);
  90. _edata = .;
  91. } >DataSRAM
  92. __DATA_END = __DATA_ROM + (_edata - _sdata);
  93. text_end = ORIGIN(TextSRAM) + LENGTH(TextSRAM);
  94. ASSERT(__DATA_END <= text_end, "region TextSRAM overflowed with text and data")
  95. .resource_table :
  96. {
  97. . = ALIGN(4);
  98. KEEP (*(.resource_table*))
  99. . = ALIGN(4);
  100. } >DataSRAM
  101. . = ALIGN(4);
  102. .bss :
  103. {
  104. _sbss = .;
  105. __bss_start__ = _sbss;
  106. *(.bss)
  107. *(.bss*)
  108. *(COMMON)
  109. . = ALIGN(4);
  110. _ebss = .;
  111. __bss_end__ = _ebss;
  112. } >DataSRAM
  113. ._user_heap_stack :
  114. {
  115. . = ALIGN(8);
  116. PROVIDE ( end = . );
  117. PROVIDE ( _end = . );
  118. . = . + _Min_Heap_Size;
  119. . = . + _Min_Stack_Size;
  120. . = ALIGN(8);
  121. } >DataSRAM
  122. /DISCARD/ :
  123. {
  124. libc.a ( * )
  125. libm.a ( * )
  126. libgcc.a ( * )
  127. }
  128. .ARM.attributes 0 : { *(.ARM.attributes) }
  129. }