ARMCA7.ld 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. #include "mem_ARMCA7.h"
  2. MEMORY
  3. {
  4. ROM (rx) : ORIGIN = __ROM_BASE, LENGTH = __ROM_SIZE
  5. L_TTB (rw) : ORIGIN = __TTB_BASE, LENGTH = __TTB_SIZE
  6. RAM (rwx) : ORIGIN = __RAM_BASE, LENGTH = __RAM_SIZE
  7. }
  8. ENTRY(Reset_Handler)
  9. SECTIONS
  10. {
  11. .text :
  12. {
  13. Image$$VECTORS$$Base = .;
  14. * (RESET)
  15. KEEP(*(.isr_vector))
  16. Image$$VECTORS$$Limit = .;
  17. *(SVC_TABLE)
  18. *(.text*)
  19. KEEP(*(.init))
  20. KEEP(*(.fini))
  21. /* .ctors */
  22. *crtbegin.o(.ctors)
  23. *crtbegin?.o(.ctors)
  24. *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
  25. *(SORT(.ctors.*))
  26. *(.ctors)
  27. /* .dtors */
  28. *crtbegin.o(.dtors)
  29. *crtbegin?.o(.dtors)
  30. *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
  31. *(SORT(.dtors.*))
  32. *(.dtors)
  33. Image$$RO_DATA$$Base = .;
  34. *(.rodata*)
  35. Image$$RO_DATA$$Limit = .;
  36. KEEP(*(.eh_frame*))
  37. } > ROM
  38. .ARM.extab :
  39. {
  40. *(.ARM.extab* .gnu.linkonce.armextab.*)
  41. } > ROM
  42. __exidx_start = .;
  43. .ARM.exidx :
  44. {
  45. *(.ARM.exidx* .gnu.linkonce.armexidx.*)
  46. } > ROM
  47. __exidx_end = .;
  48. .copy.table :
  49. {
  50. . = ALIGN(4);
  51. __copy_table_start__ = .;
  52. LONG (__etext)
  53. LONG (__data_start__)
  54. LONG (__data_end__ - __data_start__)
  55. __copy_table_end__ = .;
  56. } > ROM
  57. .zero.table :
  58. {
  59. . = ALIGN(4);
  60. __zero_table_start__ = .;
  61. LONG (__bss_start__)
  62. LONG (__bss_end__ - __bss_start__)
  63. __zero_table_end__ = .;
  64. } > ROM
  65. __etext = .;
  66. .ttb :
  67. {
  68. Image$$TTB$$ZI$$Base = .;
  69. . += __TTB_SIZE;
  70. Image$$TTB$$ZI$$Limit = .;
  71. } > L_TTB
  72. .data : AT (__etext)
  73. {
  74. Image$$RW_DATA$$Base = .;
  75. __data_start__ = .;
  76. *(vtable)
  77. *(.data*)
  78. Image$$RW_DATA$$Limit = .;
  79. . = ALIGN(4);
  80. /* preinit data */
  81. PROVIDE (__preinit_array_start = .);
  82. KEEP(*(.preinit_array))
  83. PROVIDE (__preinit_array_end = .);
  84. . = ALIGN(4);
  85. /* init data */
  86. PROVIDE (__init_array_start = .);
  87. KEEP(*(SORT(.init_array.*)))
  88. KEEP(*(.init_array))
  89. PROVIDE (__init_array_end = .);
  90. . = ALIGN(4);
  91. /* finit data */
  92. PROVIDE (__fini_array_start = .);
  93. KEEP(*(SORT(.fini_array.*)))
  94. KEEP(*(.fini_array))
  95. PROVIDE (__fini_array_end = .);
  96. . = ALIGN(4);
  97. /* All data end */
  98. __data_end__ = .;
  99. } > RAM
  100. .bss ALIGN(0x400):
  101. {
  102. Image$$ZI_DATA$$Base = .;
  103. __bss_start__ = .;
  104. *(.bss*)
  105. *(COMMON)
  106. __bss_end__ = .;
  107. Image$$ZI_DATA$$Limit = .;
  108. __end__ = .;
  109. end = __end__;
  110. } > RAM
  111. #if defined(__HEAP_SIZE) && (__HEAP_SIZE > 0)
  112. .heap (NOLOAD):
  113. {
  114. . = ALIGN(8);
  115. Image$$HEAP$$ZI$$Base = .;
  116. . += __HEAP_SIZE;
  117. Image$$HEAP$$ZI$$Limit = .;
  118. __HeapLimit = .;
  119. } > RAM
  120. #endif
  121. .stack (NOLOAD):
  122. {
  123. . = ORIGIN(RAM) + LENGTH(RAM) - __STACK_SIZE - __FIQ_STACK_SIZE - __IRQ_STACK_SIZE - __SVC_STACK_SIZE - __ABT_STACK_SIZE - __UND_STACK_SIZE;
  124. . = ALIGN(8);
  125. __StackTop = .;
  126. Image$$SYS_STACK$$ZI$$Base = .;
  127. . += __STACK_SIZE;
  128. Image$$SYS_STACK$$ZI$$Limit = .;
  129. __stack = .;
  130. Image$$FIQ_STACK$$ZI$$Base = .;
  131. . += __FIQ_STACK_SIZE;
  132. Image$$FIQ_STACK$$ZI$$Limit = .;
  133. Image$$IRQ_STACK$$ZI$$Base = .;
  134. . += __IRQ_STACK_SIZE;
  135. Image$$IRQ_STACK$$ZI$$Limit = .;
  136. Image$$SVC_STACK$$ZI$$Base = .;
  137. . += __SVC_STACK_SIZE;
  138. Image$$SVC_STACK$$ZI$$Limit = .;
  139. Image$$ABT_STACK$$ZI$$Base = .;
  140. . += __ABT_STACK_SIZE;
  141. Image$$ABT_STACK$$ZI$$Limit = .;
  142. Image$$UND_STACK$$ZI$$Base = .;
  143. . += __UND_STACK_SIZE;
  144. Image$$UND_STACK$$ZI$$Limit = .;
  145. } > RAM
  146. }