fsp_gen.scat 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323
  1. LOAD_REGION_DATA_FLASH DATA_FLASH_START NOCOMPRESS DATA_FLASH_LENGTH
  2. {
  3. __DATA_FLASH_start +0 EMPTY 0 {}
  4. __DATA_FLASH_init +0 EMPTY 0 {}
  5. __ddsc_DATA_FLASH_START +0 EMPTY 0 {}
  6. .data_flash.startof +0 EMPTY 0
  7. {
  8. }
  9. __RAM_start RAM_START +0 EMPTY 0 {}
  10. __ddsc_RAM_START +0 EMPTY 0 {}
  11. .ram.startof +0 EMPTY 0
  12. {
  13. }
  14. __ram_dtc_vector +0 UNINIT
  15. {
  16. *(.bss.fsp_dtc_vector_table)
  17. }
  18. ; ram initialized from data_flash
  19. __ram_from_data_flash +0
  20. {
  21. ; section.ram.from_data_flash
  22. *(.ram_from_data_flash)
  23. ; section.ram.code_from_data_flash
  24. *(.ram_code_from_data_flash)
  25. }
  26. } ; create a root region after the RAM init ERs for remainder of ROM ERs
  27. LOAD_REGION_DATA_FLASH_JUMP +0 NOCOMPRESS
  28. {
  29. __data_flash_readonly +0 FIXED
  30. {
  31. ; section.data_flash.readonly
  32. *(.data_flash)
  33. ; section.data_flash.code
  34. *(.data_flash_code)
  35. }
  36. __data_flash_noinit +0 FIXED UNINIT
  37. {
  38. ; section.data_flash.noinit
  39. *(.bss.data_flash_noinit)
  40. }
  41. __ddsc_DATA_FLASH_END AlignExpr(+0, 512) EMPTY 0 {}
  42. .data_flash.endof AlignExpr(+0, 512) EMPTY 0
  43. {
  44. }
  45. __DATA_FLASH_end +0 EMPTY 0 {}
  46. SCatterAssert( (LoadBase(__DATA_FLASH_end) - LoadBase(__DATA_FLASH_start)) <= DATA_FLASH_LENGTH )
  47. }
  48. LOAD_REGION_FLASH_GAP FLASH_GAP_START NOCOMPRESS FLASH_GAP_LENGTH
  49. {
  50. __FLASH_GAP_start +0 EMPTY 0 {}
  51. __FLASH_GAP_init +0 EMPTY 0 {}
  52. __ddsc_FLASH_START +0 EMPTY 0 {}
  53. .flash.startof +0 EMPTY 0
  54. {
  55. }
  56. ; MCU vector table
  57. _VECTORS +0 EMPTY 0 {}
  58. __flash_gap_vectors +0 FIXED
  59. {
  60. *(.fixed_vectors, +FIRST)
  61. *(.application_vectors)
  62. }
  63. ; Sections that can be used to fill flash gap
  64. __flash_gap_readonly_gap +0 FIXED
  65. {
  66. ; section.flash.readonly_gap
  67. ; *bsp_linker.?*(.rodata.*)
  68. *bsp_linker.?*(.rodata.*)
  69. *(.flash_gap)
  70. ; section.flash.code_gap
  71. ; *startup.?*(.text.Reset_Handler)
  72. *startup.?*(.text.Reset_Handler)
  73. ; *system.?*(.text.*)
  74. *system.?*(.text.*)
  75. *(.flash_gap_code)
  76. }
  77. __FLASH_GAP_end +0 EMPTY 0 {}
  78. SCatterAssert( (LoadBase(__FLASH_GAP_end) - LoadBase(__FLASH_GAP_start)) <= FLASH_GAP_LENGTH )
  79. }
  80. LOAD_REGION_FLASH FLASH_START NOCOMPRESS FLASH_LENGTH
  81. {
  82. __FLASH_start +0 EMPTY 0 {}
  83. __FLASH_init +0 EMPTY 0 {}
  84. __flash_noinit +0 FIXED UNINIT
  85. {
  86. ; section.flash.noinit
  87. *(.bss.flash_noinit)
  88. }
  89. __ram_from_data_flash_jump ImageLimit(__ram_from_data_flash) EMPTY 0 {}
  90. ; ram initialized from flash
  91. __ram_from_flash +0
  92. {
  93. ; section.ram.from_flash
  94. *(.ram_from_flash)
  95. ; section.ram.code_from_flash
  96. *(.ram_code_from_flash)
  97. .ANY(+RW )
  98. *(vtable)
  99. }
  100. ; Non-initialized ram
  101. __ram_noinit +0 UNINIT
  102. {
  103. ; section.ram.noinit
  104. ; *(.bss.g_heap)
  105. ; In case this execution region becomes empty due to heap placement place dummy selector
  106. $$.$$(.$$)
  107. }
  108. ARM_LIB_STACK +0 UNINIT EMPTY 0
  109. {
  110. }
  111. ARM_LIB_HEAP +0 UNINIT
  112. {
  113. *(.bss.g_heap)
  114. }
  115. __post_heap +0 UNINIT
  116. {
  117. ; *(.bss.g_main_stack)
  118. *(.bss.g_main_stack)
  119. *(.bss.ram_noinit)
  120. *(.bss.noinit)
  121. }
  122. ; Zeroed ram
  123. __ram_zero +0
  124. {
  125. ; section.ram.zero
  126. *(.bss.ram)
  127. .ANY(+ZI )
  128. }
  129. ; Thread Stacks
  130. __ram_thread_stack AlignExpr(+0, 8) UNINIT
  131. {
  132. *(.bss.stack?*)
  133. }
  134. __ddsc_RAM_END AlignExpr(+0, 512) EMPTY 0 {}
  135. .ram.endof AlignExpr(+0, 512) EMPTY 0
  136. {
  137. }
  138. __RAM_end +0 EMPTY 0 {}
  139. SCatterAssert( (LoadBase(__RAM_end) - LoadBase(__RAM_start)) <= RAM_LENGTH )
  140. } ; create a root region after the RAM init ERs for remainder of ROM ERs
  141. LOAD_REGION_FLASH_JUMP +0 NOCOMPRESS
  142. {
  143. __flash_readonly +0 FIXED
  144. {
  145. ; section.flash.readonly
  146. *(.flash)
  147. ; section.flash.code
  148. *(.flash_code)
  149. .ANY(+RO-CODE )
  150. .ANY(+RO-DATA )
  151. *(.mcuboot_sce9_key)
  152. *(.version)
  153. }
  154. __init_array_start +0 EMPTY 0 {}
  155. __flash_init_array +0 FIXED
  156. {
  157. *(.init_array.*)
  158. *(.init_array)
  159. }
  160. __init_array_end +0 EMPTY 0 {}
  161. __ddsc_FLASH_END AlignExpr(+0, 512) EMPTY 0 {}
  162. .flash.endof AlignExpr(+0, 512) EMPTY 0
  163. {
  164. }
  165. __FLASH_end +0 EMPTY 0 {}
  166. SCatterAssert( (LoadBase(__FLASH_end) - LoadBase(__FLASH_start)) <= FLASH_LENGTH )
  167. }
  168. LOAD_REGION_OPTION_SETTING_OFS0 OPTION_SETTING_OFS0_START NOCOMPRESS OPTION_SETTING_OFS0_LENGTH
  169. {
  170. __OPTION_SETTING_OFS0_start +0 EMPTY 0 {}
  171. __OPTION_SETTING_OFS0_init +0 EMPTY 0 {}
  172. __ddsc_OPTION_SETTING_OFS0_START +0 EMPTY 0 {}
  173. .option_setting_ofs0.startof +0 EMPTY 0
  174. {
  175. }
  176. ; Option Function Select Register 0
  177. __option_setting_ofs0_reg +0 FIXED
  178. {
  179. *(.option_setting_ofs0)
  180. }
  181. __ddsc_OPTION_SETTING_OFS0_END +0 EMPTY 0 {}
  182. .option_setting_ofs0.endof +0 EMPTY 0
  183. {
  184. }
  185. __OPTION_SETTING_OFS0_end +0 EMPTY 0 {}
  186. SCatterAssert( (LoadBase(__OPTION_SETTING_OFS0_end) - LoadBase(__OPTION_SETTING_OFS0_start)) <= OPTION_SETTING_OFS0_LENGTH )
  187. }
  188. LOAD_REGION_OPTION_SETTING_OFS1 OPTION_SETTING_OFS1_START NOCOMPRESS OPTION_SETTING_OFS1_LENGTH
  189. {
  190. __OPTION_SETTING_OFS1_start +0 EMPTY 0 {}
  191. __OPTION_SETTING_OFS1_init +0 EMPTY 0 {}
  192. __ddsc_OPTION_SETTING_OFS1_START +0 EMPTY 0 {}
  193. .option_setting_ofs1.startof +0 EMPTY 0
  194. {
  195. }
  196. ; Option Function Select Register 1
  197. __option_setting_ofs1_reg +0 FIXED
  198. {
  199. *(.option_setting_ofs1)
  200. }
  201. __ddsc_OPTION_SETTING_OFS1_END +0 EMPTY 0 {}
  202. .option_setting_ofs1.endof +0 EMPTY 0
  203. {
  204. }
  205. __OPTION_SETTING_OFS1_end +0 EMPTY 0 {}
  206. SCatterAssert( (LoadBase(__OPTION_SETTING_OFS1_end) - LoadBase(__OPTION_SETTING_OFS1_start)) <= OPTION_SETTING_OFS1_LENGTH )
  207. }
  208. LOAD_REGION_OPTION_SETTING_SECMPU OPTION_SETTING_SECMPU_START NOCOMPRESS OPTION_SETTING_SECMPU_LENGTH
  209. {
  210. __OPTION_SETTING_SECMPU_start +0 EMPTY 0 {}
  211. __OPTION_SETTING_SECMPU_init +0 EMPTY 0 {}
  212. __ddsc_OPTION_SETTING_SECMPU_START +0 EMPTY 0 {}
  213. .option_setting_secmpu.startof +0 EMPTY 0
  214. {
  215. }
  216. ; Security MPU Registers
  217. __option_setting_secmpu_reg +0 FIXED
  218. {
  219. *(.option_setting_secmpu)
  220. }
  221. __ddsc_OPTION_SETTING_SECMPU_END +0 EMPTY 0 {}
  222. .option_setting_secmpu.endof +0 EMPTY 0
  223. {
  224. }
  225. __OPTION_SETTING_SECMPU_end +0 EMPTY 0 {}
  226. SCatterAssert( (LoadBase(__OPTION_SETTING_SECMPU_end) - LoadBase(__OPTION_SETTING_SECMPU_start)) <= OPTION_SETTING_SECMPU_LENGTH )
  227. }
  228. LOAD_REGION_OPTION_SETTING_OSIS OPTION_SETTING_OSIS_START NOCOMPRESS OPTION_SETTING_OSIS_LENGTH
  229. {
  230. __OPTION_SETTING_OSIS_start +0 EMPTY 0 {}
  231. __OPTION_SETTING_OSIS_init +0 EMPTY 0 {}
  232. __ddsc_OPTION_SETTING_OSIS_START +0 EMPTY 0 {}
  233. .option_setting_osis.startof +0 EMPTY 0
  234. {
  235. }
  236. ; OCD/Serial Programmer ID setting register
  237. __option_setting_osis_reg +0 FIXED
  238. {
  239. *(.option_setting_osis)
  240. }
  241. __ddsc_OPTION_SETTING_OSIS_END +0 EMPTY 0 {}
  242. .option_setting_osis.endof +0 EMPTY 0
  243. {
  244. }
  245. __OPTION_SETTING_OSIS_end +0 EMPTY 0 {}
  246. SCatterAssert( (LoadBase(__OPTION_SETTING_OSIS_end) - LoadBase(__OPTION_SETTING_OSIS_start)) <= OPTION_SETTING_OSIS_LENGTH )
  247. }