fsp_gen.scat 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319
  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. *(.flash_gap_code)
  72. }
  73. __FLASH_GAP_end +0 EMPTY 0 {}
  74. SCatterAssert( (LoadBase(__FLASH_GAP_end) - LoadBase(__FLASH_GAP_start)) <= FLASH_GAP_LENGTH )
  75. }
  76. LOAD_REGION_FLASH FLASH_START NOCOMPRESS FLASH_LENGTH
  77. {
  78. __FLASH_start +0 EMPTY 0 {}
  79. __FLASH_init +0 EMPTY 0 {}
  80. __flash_noinit +0 FIXED UNINIT
  81. {
  82. ; section.flash.noinit
  83. *(.bss.flash_noinit)
  84. }
  85. __ram_from_data_flash_jump ImageLimit(__ram_from_data_flash) EMPTY 0 {}
  86. ; ram initialized from flash
  87. __ram_from_flash +0
  88. {
  89. ; section.ram.from_flash
  90. *(.ram_from_flash)
  91. ; section.ram.code_from_flash
  92. *(.ram_code_from_flash)
  93. .ANY(+RW )
  94. *(vtable)
  95. }
  96. ; Non-initialized ram
  97. __ram_noinit +0 UNINIT
  98. {
  99. ; section.ram.noinit
  100. ; *(.bss.g_heap)
  101. ; In case this execution region becomes empty due to heap placement place dummy selector
  102. $$.$$(.$$)
  103. }
  104. ARM_LIB_STACK +0 UNINIT EMPTY 0
  105. {
  106. }
  107. ARM_LIB_HEAP +0 UNINIT
  108. {
  109. *(.bss.g_heap)
  110. }
  111. __post_heap +0 UNINIT
  112. {
  113. ; *(.bss.g_main_stack)
  114. *(.bss.g_main_stack)
  115. *(.bss.ram_noinit)
  116. *(.bss.noinit)
  117. }
  118. ; Zeroed ram
  119. __ram_zero +0
  120. {
  121. ; section.ram.zero
  122. *(.bss.ram)
  123. .ANY(+ZI )
  124. }
  125. ; Thread Stacks
  126. __ram_thread_stack AlignExpr(+0, 8) UNINIT
  127. {
  128. *(.bss.stack?*)
  129. }
  130. __ddsc_RAM_END AlignExpr(+0, 512) EMPTY 0 {}
  131. .ram.endof AlignExpr(+0, 512) EMPTY 0
  132. {
  133. }
  134. __RAM_end +0 EMPTY 0 {}
  135. SCatterAssert( (LoadBase(__RAM_end) - LoadBase(__RAM_start)) <= RAM_LENGTH )
  136. } ; create a root region after the RAM init ERs for remainder of ROM ERs
  137. LOAD_REGION_FLASH_JUMP +0 NOCOMPRESS
  138. {
  139. __flash_readonly +0 FIXED
  140. {
  141. ; section.flash.readonly
  142. *(.flash)
  143. ; section.flash.code
  144. *(.flash_code)
  145. .ANY(+RO-CODE )
  146. .ANY(+RO-DATA )
  147. *(.mcuboot_sce9_key)
  148. *(.version)
  149. }
  150. __init_array_start +0 EMPTY 0 {}
  151. __flash_init_array +0 FIXED
  152. {
  153. *(.init_array.*)
  154. *(.init_array)
  155. }
  156. __init_array_end +0 EMPTY 0 {}
  157. __ddsc_FLASH_END AlignExpr(+0, 512) EMPTY 0 {}
  158. .flash.endof AlignExpr(+0, 512) EMPTY 0
  159. {
  160. }
  161. __FLASH_end +0 EMPTY 0 {}
  162. SCatterAssert( (LoadBase(__FLASH_end) - LoadBase(__FLASH_start)) <= FLASH_LENGTH )
  163. }
  164. LOAD_REGION_OPTION_SETTING_OFS0 OPTION_SETTING_OFS0_START NOCOMPRESS OPTION_SETTING_OFS0_LENGTH
  165. {
  166. __OPTION_SETTING_OFS0_start +0 EMPTY 0 {}
  167. __OPTION_SETTING_OFS0_init +0 EMPTY 0 {}
  168. __ddsc_OPTION_SETTING_OFS0_START +0 EMPTY 0 {}
  169. .option_setting_ofs0.startof +0 EMPTY 0
  170. {
  171. }
  172. ; Option Function Select Register 0
  173. __option_setting_ofs0_reg +0 FIXED
  174. {
  175. *(.option_setting_ofs0)
  176. }
  177. __ddsc_OPTION_SETTING_OFS0_END +0 EMPTY 0 {}
  178. .option_setting_ofs0.endof +0 EMPTY 0
  179. {
  180. }
  181. __OPTION_SETTING_OFS0_end +0 EMPTY 0 {}
  182. SCatterAssert( (LoadBase(__OPTION_SETTING_OFS0_end) - LoadBase(__OPTION_SETTING_OFS0_start)) <= OPTION_SETTING_OFS0_LENGTH )
  183. }
  184. LOAD_REGION_OPTION_SETTING_OFS1 OPTION_SETTING_OFS1_START NOCOMPRESS OPTION_SETTING_OFS1_LENGTH
  185. {
  186. __OPTION_SETTING_OFS1_start +0 EMPTY 0 {}
  187. __OPTION_SETTING_OFS1_init +0 EMPTY 0 {}
  188. __ddsc_OPTION_SETTING_OFS1_START +0 EMPTY 0 {}
  189. .option_setting_ofs1.startof +0 EMPTY 0
  190. {
  191. }
  192. ; Option Function Select Register 1
  193. __option_setting_ofs1_reg +0 FIXED
  194. {
  195. *(.option_setting_ofs1)
  196. }
  197. __ddsc_OPTION_SETTING_OFS1_END +0 EMPTY 0 {}
  198. .option_setting_ofs1.endof +0 EMPTY 0
  199. {
  200. }
  201. __OPTION_SETTING_OFS1_end +0 EMPTY 0 {}
  202. SCatterAssert( (LoadBase(__OPTION_SETTING_OFS1_end) - LoadBase(__OPTION_SETTING_OFS1_start)) <= OPTION_SETTING_OFS1_LENGTH )
  203. }
  204. LOAD_REGION_OPTION_SETTING_SECMPU OPTION_SETTING_SECMPU_START NOCOMPRESS OPTION_SETTING_SECMPU_LENGTH
  205. {
  206. __OPTION_SETTING_SECMPU_start +0 EMPTY 0 {}
  207. __OPTION_SETTING_SECMPU_init +0 EMPTY 0 {}
  208. __ddsc_OPTION_SETTING_SECMPU_START +0 EMPTY 0 {}
  209. .option_setting_secmpu.startof +0 EMPTY 0
  210. {
  211. }
  212. ; Security MPU Registers
  213. __option_setting_secmpu_reg +0 FIXED
  214. {
  215. *(.option_setting_secmpu)
  216. }
  217. __ddsc_OPTION_SETTING_SECMPU_END +0 EMPTY 0 {}
  218. .option_setting_secmpu.endof +0 EMPTY 0
  219. {
  220. }
  221. __OPTION_SETTING_SECMPU_end +0 EMPTY 0 {}
  222. SCatterAssert( (LoadBase(__OPTION_SETTING_SECMPU_end) - LoadBase(__OPTION_SETTING_SECMPU_start)) <= OPTION_SETTING_SECMPU_LENGTH )
  223. }
  224. LOAD_REGION_OPTION_SETTING_OSIS OPTION_SETTING_OSIS_START NOCOMPRESS OPTION_SETTING_OSIS_LENGTH
  225. {
  226. __OPTION_SETTING_OSIS_start +0 EMPTY 0 {}
  227. __OPTION_SETTING_OSIS_init +0 EMPTY 0 {}
  228. __ddsc_OPTION_SETTING_OSIS_START +0 EMPTY 0 {}
  229. .option_setting_osis.startof +0 EMPTY 0
  230. {
  231. }
  232. ; OCD/Serial Programmer ID setting register
  233. __option_setting_osis_reg +0 FIXED
  234. {
  235. *(.option_setting_osis)
  236. }
  237. __ddsc_OPTION_SETTING_OSIS_END +0 EMPTY 0 {}
  238. .option_setting_osis.endof +0 EMPTY 0
  239. {
  240. }
  241. __OPTION_SETTING_OSIS_end +0 EMPTY 0 {}
  242. SCatterAssert( (LoadBase(__OPTION_SETTING_OSIS_end) - LoadBase(__OPTION_SETTING_OSIS_start)) <= OPTION_SETTING_OSIS_LENGTH )
  243. }