fsp_gen.scat 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360
  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, 1024) EMPTY 0 {}
  42. .data_flash.endof AlignExpr(+0, 1024) 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 FLASH_START NOCOMPRESS FLASH_LENGTH
  49. {
  50. __FLASH_start +0 EMPTY 0 {}
  51. __FLASH_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_vectors +0 FIXED
  59. {
  60. *(.fixed_vectors, +FIRST)
  61. *(.application_vectors)
  62. }
  63. __flash_noinit +0 FIXED UNINIT
  64. {
  65. ; section.flash.noinit
  66. *(.bss.flash_noinit)
  67. }
  68. __ram_from_data_flash_jump ImageLimit(__ram_from_data_flash) EMPTY 0 {}
  69. ; ram initialized from flash
  70. __ram_from_flash +0
  71. {
  72. ; section.ram.from_flash
  73. *(.ram_from_flash)
  74. ; section.ram.code_from_flash
  75. *(.ram_code_from_flash)
  76. .ANY(+RW )
  77. *(vtable)
  78. }
  79. ; Non-initialized, non-cached ram
  80. __ram_noinit_nocache AlignExpr(+0, 32) UNINIT
  81. {
  82. ; section.ram.noinit_nocache
  83. *(.bss.ram_noinit_nocache)
  84. }
  85. ; Zeroed, non-cached ram
  86. __ram_zero_nocache +0
  87. {
  88. ; section.ram.zero_nocache
  89. *(.bss.ram_nocache)
  90. }
  91. ; Execution region required to end align __ram_zero_nocache on ac6
  92. __ram_zero_nocache_pad (ImageLimit(__ram_zero_nocache)) EMPTY (AlignExpr(ImageLimit(__ram_zero_nocache),32) - ImageLimit(__ram_zero_nocache)) {}
  93. ; Non-initialized ram
  94. __ram_noinit +0 UNINIT
  95. {
  96. ; section.ram.noinit
  97. ; *(.bss.g_heap)
  98. ; In case this execution region becomes empty due to heap placement place dummy selector
  99. $$.$$(.$$)
  100. }
  101. ARM_LIB_STACK +0 UNINIT EMPTY 0
  102. {
  103. }
  104. ARM_LIB_HEAP +0 UNINIT
  105. {
  106. *(.bss.g_heap)
  107. }
  108. __post_heap +0 UNINIT
  109. {
  110. ; *(.bss.g_main_stack)
  111. *(.bss.g_main_stack)
  112. *(.bss.ram_noinit)
  113. *(.bss.noinit)
  114. }
  115. ; Zeroed ram
  116. __ram_zero +0
  117. {
  118. ; section.ram.zero
  119. *(.bss.ram)
  120. .ANY(+ZI )
  121. }
  122. ; Thread Stacks
  123. __ram_thread_stack AlignExpr(+0, 8) UNINIT
  124. {
  125. *(.bss.stack?*)
  126. }
  127. __ddsc_RAM_END AlignExpr(+0, 8192) EMPTY 0 {}
  128. .ram.endof AlignExpr(+0, 8192) EMPTY 0
  129. {
  130. }
  131. __ddsc_RAM_NSC AlignExpr(+0, 8192) EMPTY 0 {}
  132. .ram.flat_nsc AlignExpr(+0, 8192) EMPTY 0
  133. {
  134. }
  135. RAM_END +0 EMPTY 0 {}
  136. SCatterAssert( (LoadBase(RAM_END) - LoadBase(__RAM_start)) <= RAM_LENGTH )
  137. } ; create a root region after the RAM init ERs for remainder of ROM ERs
  138. LOAD_REGION_FLASH_JUMP +0 NOCOMPRESS
  139. {
  140. __flash_readonly +0 FIXED
  141. {
  142. ; section.flash.readonly
  143. *(.flash)
  144. ; section.flash.code
  145. *(.flash_code)
  146. .ANY(+RO-CODE )
  147. .ANY(+RO-DATA )
  148. *(.mcuboot_sce9_key)
  149. *(.version)
  150. }
  151. __init_array_start +0 EMPTY 0 {}
  152. __flash_init_array +0 FIXED
  153. {
  154. *(.init_array.*)
  155. *(.init_array)
  156. }
  157. __init_array_end +0 EMPTY 0 {}
  158. __ddsc_FLASH_END AlignExpr(+0, 32768) EMPTY 0 {}
  159. .flash.endof AlignExpr(+0, 32768) EMPTY 0
  160. {
  161. }
  162. __ddsc_FLASH_NSC AlignExpr(+0, 32768) EMPTY 0 {}
  163. .flash.flat_nsc AlignExpr(+0, 32768) EMPTY 0
  164. {
  165. }
  166. __FLASH_end +0 EMPTY 0 {}
  167. SCatterAssert( (LoadBase(__FLASH_end) - LoadBase(__FLASH_start)) <= FLASH_LENGTH )
  168. }
  169. LOAD_REGION_OPTION_SETTING_OFS0 OPTION_SETTING_OFS0_START NOCOMPRESS OPTION_SETTING_OFS0_LENGTH
  170. {
  171. __OPTION_SETTING_OFS0_start +0 EMPTY 0 {}
  172. __OPTION_SETTING_OFS0_init +0 EMPTY 0 {}
  173. __ddsc_OPTION_SETTING_OFS0_START +0 EMPTY 0 {}
  174. .option_setting_ofs0.startof +0 EMPTY 0
  175. {
  176. }
  177. ; Option Function Select Register 0 Secure
  178. __option_setting_ofs0_reg +0 FIXED
  179. {
  180. *(.option_setting_ofs0)
  181. }
  182. __ddsc_OPTION_SETTING_OFS0_END +0 EMPTY 0 {}
  183. .option_setting_ofs0.endof +0 EMPTY 0
  184. {
  185. }
  186. __OPTION_SETTING_OFS0_end +0 EMPTY 0 {}
  187. SCatterAssert( (LoadBase(__OPTION_SETTING_OFS0_end) - LoadBase(__OPTION_SETTING_OFS0_start)) <= OPTION_SETTING_OFS0_LENGTH )
  188. }
  189. LOAD_REGION_OPTION_SETTING_OSIS OPTION_SETTING_OSIS_START NOCOMPRESS OPTION_SETTING_OSIS_LENGTH
  190. {
  191. __OPTION_SETTING_OSIS_start +0 EMPTY 0 {}
  192. __OPTION_SETTING_OSIS_init +0 EMPTY 0 {}
  193. __ddsc_OPTION_SETTING_OSIS_START +0 EMPTY 0 {}
  194. .option_setting_osis.startof +0 EMPTY 0
  195. {
  196. }
  197. ; OCD/Serial Programmer ID setting register Secure
  198. __option_setting_osis_reg +0 FIXED
  199. {
  200. *(.option_setting_osis)
  201. }
  202. __ddsc_OPTION_SETTING_OSIS_END +0 EMPTY 0 {}
  203. .option_setting_osis.endof +0 EMPTY 0
  204. {
  205. }
  206. __OPTION_SETTING_OSIS_end +0 EMPTY 0 {}
  207. SCatterAssert( (LoadBase(__OPTION_SETTING_OSIS_end) - LoadBase(__OPTION_SETTING_OSIS_start)) <= OPTION_SETTING_OSIS_LENGTH )
  208. }
  209. LOAD_REGION_OPTION_SETTING_OFS1_SEC OPTION_SETTING_OFS1_SEC_START NOCOMPRESS OPTION_SETTING_OFS1_SEC_LENGTH
  210. {
  211. __OPTION_SETTING_OFS1_SEC_start +0 EMPTY 0 {}
  212. __OPTION_SETTING_OFS1_SEC_init +0 EMPTY 0 {}
  213. __ddsc_OPTION_SETTING_OFS1_SEC_START +0 EMPTY 0 {}
  214. .option_setting_ofs1_sec.startof +0 EMPTY 0
  215. {
  216. }
  217. ; Option Function Select Register 1 Secure
  218. __option_setting_ofs1_sec_reg +0 FIXED
  219. {
  220. *(.option_setting_ofs1_sec)
  221. }
  222. __ddsc_OPTION_SETTING_OFS1_SEC_END +0 EMPTY 0 {}
  223. .option_setting_ofs1_sec.endof +0 EMPTY 0
  224. {
  225. }
  226. __OPTION_SETTING_OFS1_SEC_end +0 EMPTY 0 {}
  227. SCatterAssert( (LoadBase(__OPTION_SETTING_OFS1_SEC_end) - LoadBase(__OPTION_SETTING_OFS1_SEC_start)) <= OPTION_SETTING_OFS1_SEC_LENGTH )
  228. }
  229. LOAD_REGION_OPTION_SETTING_BPS_SEC OPTION_SETTING_BPS_SEC_START NOCOMPRESS OPTION_SETTING_BPS_SEC_LENGTH
  230. {
  231. __OPTION_SETTING_BPS_SEC_start +0 EMPTY 0 {}
  232. __OPTION_SETTING_BPS_SEC_init +0 EMPTY 0 {}
  233. __ddsc_OPTION_SETTING_BPS_SEC_START +0 EMPTY 0 {}
  234. .option_setting_bps_sec.startof +0 EMPTY 0
  235. {
  236. }
  237. ; Block Protect Setting Register Secure
  238. __option_setting_bps_sec_reg +0 FIXED
  239. {
  240. *(.option_setting_bps_sec)
  241. }
  242. __ddsc_OPTION_SETTING_BPS_SEC_END +0 EMPTY 0 {}
  243. .option_setting_bps_sec.endof +0 EMPTY 0
  244. {
  245. }
  246. __OPTION_SETTING_BPS_SEC_end +0 EMPTY 0 {}
  247. SCatterAssert( (LoadBase(__OPTION_SETTING_BPS_SEC_end) - LoadBase(__OPTION_SETTING_BPS_SEC_start)) <= OPTION_SETTING_BPS_SEC_LENGTH )
  248. }
  249. LOAD_REGION_OPTION_SETTING_PBPS_SEC OPTION_SETTING_PBPS_SEC_START NOCOMPRESS OPTION_SETTING_PBPS_SEC_LENGTH
  250. {
  251. __OPTION_SETTING_PBPS_SEC_start +0 EMPTY 0 {}
  252. __OPTION_SETTING_PBPS_SEC_init +0 EMPTY 0 {}
  253. __ddsc_OPTION_SETTING_PBPS_SEC_START +0 EMPTY 0 {}
  254. .option_setting_pbps_sec.startof +0 EMPTY 0
  255. {
  256. }
  257. ; Permanent Block Protect Setting Register Secure
  258. __option_setting_pbps_sec_reg +0 FIXED
  259. {
  260. *(.option_setting_pbps_sec)
  261. }
  262. __ddsc_OPTION_SETTING_PBPS_SEC_END +0 EMPTY 0 {}
  263. .option_setting_pbps_sec.endof +0 EMPTY 0
  264. {
  265. }
  266. __OPTION_SETTING_PBPS_SEC_end +0 EMPTY 0 {}
  267. SCatterAssert( (LoadBase(__OPTION_SETTING_PBPS_SEC_end) - LoadBase(__OPTION_SETTING_PBPS_SEC_start)) <= OPTION_SETTING_PBPS_SEC_LENGTH )
  268. }