fsp_gen.ld 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332
  1. MEMORY
  2. {
  3. RAM (rwx) : ORIGIN = RAM_START, LENGTH = RAM_LENGTH
  4. FLASH (rx) : ORIGIN = FLASH_START, LENGTH = FLASH_LENGTH
  5. DATA_FLASH (rx) : ORIGIN = DATA_FLASH_START, LENGTH = DATA_FLASH_LENGTH
  6. OPTION_SETTING_OFS0 (r) : ORIGIN = OPTION_SETTING_OFS0_START, LENGTH = OPTION_SETTING_OFS0_LENGTH
  7. OPTION_SETTING_OFS1 (r) : ORIGIN = OPTION_SETTING_OFS1_START, LENGTH = OPTION_SETTING_OFS1_LENGTH
  8. OPTION_SETTING_SECMPU (r) : ORIGIN = OPTION_SETTING_SECMPU_START, LENGTH = OPTION_SETTING_SECMPU_LENGTH
  9. OPTION_SETTING_OSIS (r) : ORIGIN = OPTION_SETTING_OSIS_START, LENGTH = OPTION_SETTING_OSIS_LENGTH
  10. FLASH_GAP (rx) : ORIGIN = FLASH_GAP_START, LENGTH = FLASH_GAP_LENGTH
  11. }
  12. /* code entry point...need to define to keep crt0 _start out */
  13. ENTRY(Reset_Handler)
  14. /* Library configurations */
  15. GROUP(libgcc.a libc.a libm.a)
  16. SECTIONS
  17. {
  18. .text :
  19. {
  20. /* section information for finsh shell */
  21. . = ALIGN(4);
  22. __fsymtab_start = .;
  23. KEEP(*(FSymTab))
  24. __fsymtab_end = .;
  25. . = ALIGN(4);
  26. __vsymtab_start = .;
  27. KEEP(*(VSymTab))
  28. __vsymtab_end = .;
  29. /* section information for initial. */
  30. . = ALIGN(4);
  31. __rt_init_start = .;
  32. KEEP(*(SORT(.rti_fn*)))
  33. __rt_init_end = .;
  34. . = ALIGN(4);
  35. KEEP(*(FalPartTable))
  36. } > FLASH
  37. /***** DATA_FLASH memory section allocations ******/
  38. .data_flash.startof (READONLY) :
  39. {
  40. __ddsc_DATA_FLASH_START = . ;
  41. } > DATA_FLASH
  42. /***** RAM memory section allocations ******/
  43. .ram.startof :
  44. {
  45. __ddsc_RAM_START = . ;
  46. } > RAM
  47. __ram_dtc_vector$$ (NOLOAD) :
  48. {
  49. __ram_dtc_vector$$Base = . ;
  50. *(.fsp_dtc_vector_table)
  51. __ram_dtc_vector$$Limit = . ;
  52. } > RAM
  53. /* ram initialized from data_flash */
  54. __ram_from_data_flash$$ :
  55. {
  56. __ram_from_data_flash$$Base = . ;__ram_from_data_flash$$Load = LOADADDR(__ram_from_data_flash$$) ;
  57. /* section.ram.from_data_flash */
  58. *(.ram_from_data_flash)
  59. /* section.ram.code_from_data_flash */
  60. *(.ram_code_from_data_flash)
  61. __ram_from_data_flash$$Limit = . ;
  62. } > RAM AT > DATA_FLASH
  63. __data_flash_readonly$$ (READONLY) :
  64. {
  65. __data_flash_readonly$$Base = . ;
  66. /* section.data_flash.readonly */
  67. *(.data_flash)
  68. /* section.data_flash.code */
  69. *(.data_flash_code)
  70. __data_flash_readonly$$Limit = . ;
  71. } > DATA_FLASH
  72. __data_flash_noinit$$ (NOLOAD) :
  73. {
  74. __data_flash_noinit$$Base = . ;
  75. /* section.data_flash.noinit */
  76. *(.data_flash_noinit)
  77. __data_flash_noinit$$Limit = . ;
  78. } > DATA_FLASH
  79. .data_flash.endof ALIGN(.,512) (READONLY) :
  80. {
  81. __ddsc_DATA_FLASH_END = . ;
  82. } > DATA_FLASH
  83. /***** FLASH memory section allocations ******/
  84. .flash.startof (READONLY) :
  85. {
  86. __ddsc_FLASH_START = . ;
  87. } > FLASH_GAP
  88. /* MCU vector table */
  89. __flash_vectors$$ (READONLY) :
  90. {
  91. __flash_vectors$$Base = . ; _VECTORS = . ;
  92. KEEP(*(.fixed_vectors))
  93. KEEP(*(.application_vectors))
  94. __flash_vectors$$Limit = . ;
  95. } > FLASH_GAP
  96. /* Sections that can be used to fill flash gap */
  97. __flash_readonly_gap$$ (READONLY) :
  98. {
  99. __flash_readonly_gap$$Base = . ;
  100. /* section.flash.readonly_gap */
  101. *bsp_linker.?*(.rodata.*)
  102. *(.flash_gap)
  103. /* section.flash.code_gap */
  104. *startup.?*(.text.Reset_Handler)
  105. *system.?*(.text.*)
  106. *(.flash_gap_code)
  107. __flash_readonly_gap$$Limit = . ;
  108. } > FLASH_GAP
  109. /***** FLASH memory section allocations ******/
  110. __flash_noinit$$ (NOLOAD) :
  111. {
  112. __flash_noinit$$Base = . ;
  113. /* section.flash.noinit */
  114. *(.flash_noinit)
  115. __flash_noinit$$Limit = . ;
  116. } > FLASH
  117. /***** RAM memory section allocations ******/
  118. /* ram initialized from flash */
  119. __ram_from_flash$$ :
  120. {
  121. __ram_from_flash$$Base = . ;__ram_from_flash$$Load = LOADADDR(__ram_from_flash$$) ;
  122. /* section.ram.from_flash */
  123. *(.ram_from_flash)
  124. /* section.ram.code_from_flash */
  125. *(.ram_code_from_flash)
  126. *(.data*)
  127. *(vtable)
  128. __ram_from_flash$$Limit = . ;
  129. } > RAM AT > FLASH
  130. /* Non-initialized ram */
  131. __ram_noinit$$ (NOLOAD) :
  132. {
  133. __ram_noinit$$Base = . ;
  134. /* section.ram.noinit */
  135. *(.bss.g_heap)
  136. *(.bss.g_main_stack)
  137. *(.ram_noinit)
  138. *(.noinit)
  139. __ram_noinit$$Limit = . ;
  140. } > RAM
  141. /* Zeroed ram */
  142. __ram_zero$$ (NOLOAD) :
  143. {
  144. __ram_zero$$Base = . ;
  145. /* section.ram.zero */
  146. *(.ram)
  147. *(.bss*)
  148. __ram_zero$$Limit = . ;
  149. } > RAM
  150. /* Thread Stacks */
  151. __ram_thread_stack$$ (NOLOAD) : ALIGN(8)
  152. {
  153. __ram_thread_stack$$Base = . ;
  154. KEEP(*(.stack?*))
  155. __ram_thread_stack$$Limit = . ;
  156. } > RAM
  157. .ram.endof ALIGN(.,512) :
  158. {
  159. __ddsc_RAM_END = . ;
  160. } > RAM
  161. __flash_readonly$$ (READONLY) :
  162. {
  163. __flash_readonly$$Base = . ;
  164. /* section.flash.readonly */
  165. *(.flash)
  166. /* section.flash.code */
  167. *(.flash_code)
  168. *(.text*)
  169. *(.rodata*)
  170. KEEP(*(.mcuboot_sce9_key))
  171. KEEP(*(.version))
  172. __flash_readonly$$Limit = . ;
  173. } > FLASH
  174. __flash_ctor$$ (READONLY) :
  175. {
  176. *crtbegin.o(.ctors)
  177. *crtbegin?.o(.ctors)
  178. EXCLUDE_FILE (*crtend?.o *crtend.o) *(.ctors)
  179. *(SORT(.ctors.*))
  180. *(.ctors)
  181. *crtbegin.o(.dtors)
  182. *crtbegin?.o(.dtors)
  183. EXCLUDE_FILE (*crtend?.o *crtend.o) *(.dtors)
  184. *(SORT(.dtors.*))
  185. *(.dtors)
  186. } > FLASH
  187. __flash_preinit_array$$ (READONLY) :
  188. {
  189. __preinit_array_start = . ;
  190. KEEP(*(.preinit_array))
  191. __preinit_array_end = . ;
  192. } > FLASH
  193. __flash_.got$$ (READONLY) :
  194. {
  195. *(.got.plt)
  196. *(.got)
  197. } > FLASH
  198. __flash_init_array$$ (READONLY) :
  199. {
  200. __init_array_start = . ;
  201. KEEP(*(SORT(.init_array.*)))
  202. KEEP(*(.init_array))
  203. __init_array_end = . ;
  204. } > FLASH
  205. __flash_fini_array$$ (READONLY) :
  206. {
  207. __fini_array_start = . ;
  208. KEEP(*(SORT(.fini_array.*)))
  209. KEEP(*(.fini_array))
  210. __fini_array_end = . ;
  211. } > FLASH
  212. /* Discard exception tables */
  213. /DISCARD/ (READONLY) :
  214. {
  215. *(.ARM.extab*)
  216. *(.gnu.linkonce.armextab.*)
  217. *(.ARM.exidx*)
  218. *(.gnu.linkonce.armexidx.*)
  219. } > FLASH
  220. /* Dummy section to hold required exidx labels */
  221. __flash_arm.exidx$$ (READONLY) :
  222. {
  223. __exidx_start = . ;
  224. __exidx_end = . ;
  225. } > FLASH
  226. .flash.endof ALIGN(.,512) (READONLY) :
  227. {
  228. __ddsc_FLASH_END = . ;
  229. } > FLASH
  230. /***** OPTION_SETTING_OFS0 memory section allocations ******/
  231. .option_setting_ofs0.startof (READONLY) :
  232. {
  233. __ddsc_OPTION_SETTING_OFS0_START = . ;
  234. } > OPTION_SETTING_OFS0
  235. /* Option Function Select Register 0 */
  236. __option_setting_ofs0_reg$$ (READONLY) :
  237. {
  238. __option_setting_ofs0_reg$$Base = . ;
  239. KEEP(*(.option_setting_ofs0))
  240. __option_setting_ofs0_reg$$Limit = . ;
  241. } > OPTION_SETTING_OFS0
  242. .option_setting_ofs0.endof (READONLY) :
  243. {
  244. __ddsc_OPTION_SETTING_OFS0_END = . ;
  245. } > OPTION_SETTING_OFS0
  246. /***** OPTION_SETTING_OFS1 memory section allocations ******/
  247. .option_setting_ofs1.startof (READONLY) :
  248. {
  249. __ddsc_OPTION_SETTING_OFS1_START = . ;
  250. } > OPTION_SETTING_OFS1
  251. /* Option Function Select Register 1 */
  252. __option_setting_ofs1_reg$$ (READONLY) :
  253. {
  254. __option_setting_ofs1_reg$$Base = . ;
  255. KEEP(*(.option_setting_ofs1))
  256. __option_setting_ofs1_reg$$Limit = . ;
  257. } > OPTION_SETTING_OFS1
  258. .option_setting_ofs1.endof (READONLY) :
  259. {
  260. __ddsc_OPTION_SETTING_OFS1_END = . ;
  261. } > OPTION_SETTING_OFS1
  262. /***** OPTION_SETTING_SECMPU memory section allocations ******/
  263. .option_setting_secmpu.startof (READONLY) :
  264. {
  265. __ddsc_OPTION_SETTING_SECMPU_START = . ;
  266. } > OPTION_SETTING_SECMPU
  267. /* Security MPU Registers */
  268. __option_setting_secmpu_reg$$ (READONLY) :
  269. {
  270. __option_setting_secmpu_reg$$Base = . ;
  271. KEEP(*(.option_setting_secmpu))
  272. __option_setting_secmpu_reg$$Limit = . ;
  273. } > OPTION_SETTING_SECMPU
  274. .option_setting_secmpu.endof (READONLY) :
  275. {
  276. __ddsc_OPTION_SETTING_SECMPU_END = . ;
  277. } > OPTION_SETTING_SECMPU
  278. /***** OPTION_SETTING_OSIS memory section allocations ******/
  279. .option_setting_osis.startof (READONLY) :
  280. {
  281. __ddsc_OPTION_SETTING_OSIS_START = . ;
  282. } > OPTION_SETTING_OSIS
  283. /* OCD/Serial Programmer ID setting register */
  284. __option_setting_osis_reg$$ (READONLY) :
  285. {
  286. __option_setting_osis_reg$$Base = . ;
  287. KEEP(*(.option_setting_osis))
  288. __option_setting_osis_reg$$Limit = . ;
  289. } > OPTION_SETTING_OSIS
  290. .option_setting_osis.endof (READONLY) :
  291. {
  292. __ddsc_OPTION_SETTING_OSIS_END = . ;
  293. } > OPTION_SETTING_OSIS
  294. }