lpc4088.ld 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. /*
  2. * GENERATED FILE - DO NOT EDIT
  3. * (c) Code Red Technologies Ltd, 2008-2013
  4. * (c) NXP Semiconductors 2013-2019
  5. * Generated linker script file for LPC4088
  6. * Created from linkscript.ldt by FMCreateLinkLibraries
  7. * Using Freemarker v2.3.23
  8. * MCUXpresso IDE v10.2.1 [Build 795] [2018-07-25] on May 15, 2019 5:16:07 PM
  9. */
  10. MEMORY
  11. {
  12. /* Define each memory region */
  13. MFlash512 (rx) : ORIGIN = 0x0, LENGTH = 0x80000 /* 512K bytes (alias Flash) */
  14. RamLoc64 (rwx) : ORIGIN = 0x10000000, LENGTH = 0x10000 /* 64K bytes (alias RAM) */
  15. RamPeriph32 (rwx) : ORIGIN = 0x20000000, LENGTH = 0x8000 /* 32K bytes (alias RAM2) */
  16. }
  17. /* Define a symbol for the top of each memory region */
  18. __base_MFlash512 = 0x0 ; /* MFlash512 */
  19. __base_Flash = 0x0 ; /* Flash */
  20. __top_MFlash512 = 0x0 + 0x80000 ; /* 512K bytes */
  21. __top_Flash = 0x0 + 0x80000 ; /* 512K bytes */
  22. __base_RamLoc64 = 0x10000000 ; /* RamLoc64 */
  23. __base_RAM = 0x10000000 ; /* RAM */
  24. __top_RamLoc64 = 0x10000000 + 0x10000 ; /* 64K bytes */
  25. __top_RAM = 0x10000000 + 0x10000 ; /* 64K bytes */
  26. __base_RamPeriph32 = 0x20000000 ; /* RamPeriph32 */
  27. __base_RAM2 = 0x20000000 ; /* RAM2 */
  28. __top_RamPeriph32 = 0x20000000 + 0x8000 ; /* 32K bytes */
  29. __top_RAM2 = 0x20000000 + 0x8000 ; /* 32K bytes */
  30. ENTRY(ResetISR)
  31. SECTIONS
  32. {
  33. /* MAIN TEXT SECTION */
  34. .text : ALIGN(4)
  35. {
  36. FILL(0xff)
  37. __vectors_start__ = ABSOLUTE(.) ;
  38. KEEP(*(.isr_vector))
  39. /* Global Section Table */
  40. . = ALIGN(4) ;
  41. __section_table_start = .;
  42. __data_section_table = .;
  43. LONG(LOADADDR(.data));
  44. LONG( ADDR(.data));
  45. LONG( SIZEOF(.data));
  46. LONG(LOADADDR(.data_RAM2));
  47. LONG( ADDR(.data_RAM2));
  48. LONG( SIZEOF(.data_RAM2));
  49. __data_section_table_end = .;
  50. __bss_section_table = .;
  51. LONG( ADDR(.bss));
  52. LONG( SIZEOF(.bss));
  53. LONG( ADDR(.bss_RAM2));
  54. LONG( SIZEOF(.bss_RAM2));
  55. __bss_section_table_end = .;
  56. __section_table_end = . ;
  57. /* End of Global Section Table */
  58. *(.after_vectors*)
  59. } > MFlash512
  60. .text : ALIGN(4)
  61. {
  62. *(.text*)
  63. *(.rodata .rodata.* .constdata .constdata.*)
  64. . = ALIGN(4);
  65. } > MFlash512
  66. /*
  67. * for exception handling/unwind - some Newlib functions (in common
  68. * with C++ and STDC++) use this.
  69. */
  70. .ARM.extab : ALIGN(4)
  71. {
  72. *(.ARM.extab* .gnu.linkonce.armextab.*)
  73. } > MFlash512
  74. __exidx_start = .;
  75. .ARM.exidx : ALIGN(4)
  76. {
  77. *(.ARM.exidx* .gnu.linkonce.armexidx.*)
  78. } > MFlash512
  79. __exidx_end = .;
  80. _etext = .;
  81. /* DATA section for RamPeriph32 */
  82. .data_RAM2 : ALIGN(4)
  83. {
  84. FILL(0xff)
  85. PROVIDE(__start_data_RAM2 = .) ;
  86. *(.ramfunc.$RAM2)
  87. *(.ramfunc.$RamPeriph32)
  88. *(.data.$RAM2*)
  89. *(.data.$RamPeriph32*)
  90. . = ALIGN(4) ;
  91. PROVIDE(__end_data_RAM2 = .) ;
  92. } > RamPeriph32 AT>MFlash512
  93. /* MAIN DATA SECTION */
  94. .uninit_RESERVED : ALIGN(4)
  95. {
  96. KEEP(*(.bss.$RESERVED*))
  97. . = ALIGN(4) ;
  98. _end_uninit_RESERVED = .;
  99. } > RamLoc64
  100. /* Main DATA section (RamLoc64) */
  101. .data : ALIGN(4)
  102. {
  103. FILL(0xff)
  104. _data = . ;
  105. *(vtable)
  106. *(.ramfunc*)
  107. *(.data*)
  108. . = ALIGN(4) ;
  109. _edata = . ;
  110. } > RamLoc64 AT>MFlash512
  111. /* BSS section for RamPeriph32 */
  112. .bss_RAM2 : ALIGN(4)
  113. {
  114. PROVIDE(__start_bss_RAM2 = .) ;
  115. *(.bss.$RAM2*)
  116. *(.bss.$RamPeriph32*)
  117. . = ALIGN (. != 0 ? 4 : 1) ; /* avoid empty segment */
  118. PROVIDE(__end_bss_RAM2 = .) ;
  119. } > RamPeriph32
  120. /* MAIN BSS SECTION */
  121. .bss : ALIGN(4)
  122. {
  123. _bss = .;
  124. *(.bss*)
  125. *(COMMON)
  126. . = ALIGN(4) ;
  127. _ebss = .;
  128. PROVIDE(end = .);
  129. } > RamLoc64
  130. /* NOINIT section for RamPeriph32 */
  131. .noinit_RAM2 (NOLOAD) : ALIGN(4)
  132. {
  133. *(.noinit.$RAM2*)
  134. *(.noinit.$RamPeriph32*)
  135. . = ALIGN(4) ;
  136. } > RamPeriph32
  137. /* DEFAULT NOINIT SECTION */
  138. .noinit (NOLOAD): ALIGN(4)
  139. {
  140. _noinit = .;
  141. *(.noinit*)
  142. . = ALIGN(4) ;
  143. _end_noinit = .;
  144. } > RamLoc64
  145. PROVIDE(_pvHeapStart = DEFINED(__user_heap_base) ? __user_heap_base : .);
  146. PROVIDE(_vStackTop = DEFINED(__user_stack_top) ? __user_stack_top : __top_RamLoc64 - 0);
  147. /* ## Create checksum value (used in startup) ## */
  148. PROVIDE(__valid_user_code_checksum = 0 -
  149. (_vStackTop
  150. + (ResetISR + 1)
  151. + (NMI_Handler + 1)
  152. + (HardFault_Handler + 1)
  153. + (( DEFINED(MemManage_Handler) ? MemManage_Handler : 0 ) + 1) /* MemManage_Handler may not be defined */
  154. + (( DEFINED(BusFault_Handler) ? BusFault_Handler : 0 ) + 1) /* BusFault_Handler may not be defined */
  155. + (( DEFINED(UsageFault_Handler) ? UsageFault_Handler : 0 ) + 1) /* UsageFault_Handler may not be defined */
  156. ) );
  157. /* Provide basic symbols giving location and size of main text
  158. * block, including initial values of RW data sections. Note that
  159. * these will need extending to give a complete picture with
  160. * complex images (e.g multiple Flash banks).
  161. */
  162. _image_start = LOADADDR(.text);
  163. _image_end = LOADADDR(.data) + SIZEOF(.data);
  164. _image_size = _image_end - _image_start;
  165. }