fsp_xspi0_boot.icf 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684
  1. include "memory_regions.icf";
  2. /* The memory information for each device is done in memory regions file.
  3. * The starting address and length of memory not defined in memory regions file are defined as 0. */
  4. if (isdefinedsymbol(ATCM_START))
  5. {
  6. define symbol ATCM_PRV_START = ATCM_START;
  7. }
  8. else
  9. {
  10. define symbol ATCM_PRV_START = 0;
  11. }
  12. if (isdefinedsymbol(ATCM_LENGTH))
  13. {
  14. define symbol ATCM_PRV_LENGTH = ATCM_LENGTH;
  15. }
  16. else
  17. {
  18. define symbol ATCM_PRV_LENGTH = 0;
  19. }
  20. if (isdefinedsymbol(BTCM_START))
  21. {
  22. define symbol BTCM_PRV_START = BTCM_START;
  23. }
  24. else
  25. {
  26. define symbol BTCM_PRV_START = 0;
  27. }
  28. if (isdefinedsymbol(BTCM_LENGTH))
  29. {
  30. define symbol BTCM_PRV_LENGTH = BTCM_LENGTH;
  31. }
  32. else
  33. {
  34. define symbol BTCM_PRV_LENGTH = 0;
  35. }
  36. if (isdefinedsymbol(SYSTEM_RAM_START))
  37. {
  38. define symbol SYSTEM_RAM_PRV_START = SYSTEM_RAM_START;
  39. }
  40. else
  41. {
  42. define symbol SYSTEM_RAM_PRV_START = 0;
  43. }
  44. if (isdefinedsymbol(SYSTEM_RAM_LENGTH))
  45. {
  46. define symbol SYSTEM_RAM_PRV_LENGTH = SYSTEM_RAM_LENGTH;
  47. }
  48. else
  49. {
  50. define symbol SYSTEM_RAM_PRV_LENGTH = 0;
  51. }
  52. if (isdefinedsymbol(SYSTEM_RAM_MIRROR_START))
  53. {
  54. define symbol SYSTEM_RAM_MIRROR_PRV_START = SYSTEM_RAM_MIRROR_START;
  55. }
  56. else
  57. {
  58. define symbol SYSTEM_RAM_MIRROR_PRV_START = 0;
  59. }
  60. if (isdefinedsymbol(SYSTEM_RAM_MIRROR_LENGTH))
  61. {
  62. define symbol SYSTEM_RAM_MIRROR_PRV_LENGTH = SYSTEM_RAM_MIRROR_LENGTH;
  63. }
  64. else
  65. {
  66. define symbol SYSTEM_RAM_MIRROR_PRV_LENGTH = 0;
  67. }
  68. if (isdefinedsymbol(xSPI0_CS0_SPACE_MIRROR_START))
  69. {
  70. define symbol xSPI0_CS0_SPACE_MIRROR_PRV_START = xSPI0_CS0_SPACE_MIRROR_START;
  71. }
  72. else
  73. {
  74. define symbol xSPI0_CS0_SPACE_MIRROR_PRV_START = 0;
  75. }
  76. if (isdefinedsymbol(xSPI0_CS0_SPACE_MIRROR_LENGTH))
  77. {
  78. define symbol xSPI0_CS0_SPACE_MIRROR_PRV_LENGTH = xSPI0_CS0_SPACE_MIRROR_LENGTH;
  79. }
  80. else
  81. {
  82. define symbol xSPI0_CS0_SPACE_MIRROR_PRV_LENGTH = 0;
  83. }
  84. if (isdefinedsymbol(xSPI0_CS1_SPACE_MIRROR_START))
  85. {
  86. define symbol xSPI0_CS1_SPACE_MIRROR_PRV_START = xSPI0_CS1_SPACE_MIRROR_START;
  87. }
  88. else
  89. {
  90. define symbol xSPI0_CS1_SPACE_MIRROR_PRV_START = 0;
  91. }
  92. if (isdefinedsymbol(xSPI0_CS1_SPACE_MIRROR_LENGTH))
  93. {
  94. define symbol xSPI0_CS1_SPACE_MIRROR_PRV_LENGTH = xSPI0_CS1_SPACE_MIRROR_LENGTH;
  95. }
  96. else
  97. {
  98. define symbol xSPI0_CS1_SPACE_MIRROR_PRV_LENGTH = 0;
  99. }
  100. if (isdefinedsymbol(xSPI1_CS0_SPACE_MIRROR_START))
  101. {
  102. define symbol xSPI1_CS0_SPACE_MIRROR_PRV_START = xSPI1_CS0_SPACE_MIRROR_START;
  103. }
  104. else
  105. {
  106. define symbol xSPI1_CS0_SPACE_MIRROR_PRV_START = 0;
  107. }
  108. if (isdefinedsymbol(xSPI1_CS0_SPACE_MIRROR_LENGTH))
  109. {
  110. define symbol xSPI1_CS0_SPACE_MIRROR_PRV_LENGTH = xSPI1_CS0_SPACE_MIRROR_LENGTH;
  111. }
  112. else
  113. {
  114. define symbol xSPI1_CS0_SPACE_MIRROR_PRV_LENGTH = 0;
  115. }
  116. if (isdefinedsymbol(xSPI1_CS1_SPACE_MIRROR_START))
  117. {
  118. define symbol xSPI1_CS1_SPACE_MIRROR_PRV_START = xSPI1_CS1_SPACE_MIRROR_START;
  119. }
  120. else
  121. {
  122. define symbol xSPI1_CS1_SPACE_MIRROR_PRV_START = 0;
  123. }
  124. if (isdefinedsymbol(xSPI1_CS1_SPACE_MIRROR_LENGTH))
  125. {
  126. define symbol xSPI1_CS1_SPACE_MIRROR_PRV_LENGTH = xSPI1_CS1_SPACE_MIRROR_LENGTH;
  127. }
  128. else
  129. {
  130. define symbol xSPI1_CS1_SPACE_MIRROR_PRV_LENGTH = 0;
  131. }
  132. if (isdefinedsymbol(CS0_SPACE_MIRROR_START))
  133. {
  134. define symbol CS0_SPACE_MIRROR_PRV_START = CS0_SPACE_MIRROR_START;
  135. }
  136. else
  137. {
  138. define symbol CS0_SPACE_MIRROR_PRV_START = 0;
  139. }
  140. if (isdefinedsymbol(CS0_SPACE_MIRROR_LENGTH))
  141. {
  142. define symbol CS0_SPACE_MIRROR_PRV_LENGTH = CS0_SPACE_MIRROR_LENGTH;
  143. }
  144. else
  145. {
  146. define symbol CS0_SPACE_MIRROR_PRV_LENGTH = 0;
  147. }
  148. if (isdefinedsymbol(CS2_SPACE_MIRROR_START))
  149. {
  150. define symbol CS2_SPACE_MIRROR_PRV_START = CS2_SPACE_MIRROR_START;
  151. }
  152. else
  153. {
  154. define symbol CS2_SPACE_MIRROR_PRV_START = 0;
  155. }
  156. if (isdefinedsymbol(CS2_SPACE_MIRROR_LENGTH))
  157. {
  158. define symbol CS2_SPACE_MIRROR_PRV_LENGTH = CS2_SPACE_MIRROR_LENGTH;
  159. }
  160. else
  161. {
  162. define symbol CS2_SPACE_MIRROR_PRV_LENGTH = 0;
  163. }
  164. if (isdefinedsymbol(CS3_SPACE_MIRROR_START))
  165. {
  166. define symbol CS3_SPACE_MIRROR_PRV_START = CS3_SPACE_MIRROR_START;
  167. }
  168. else
  169. {
  170. define symbol CS3_SPACE_MIRROR_PRV_START = 0;
  171. }
  172. if (isdefinedsymbol(CS3_SPACE_MIRROR_LENGTH))
  173. {
  174. define symbol CS3_SPACE_MIRROR_PRV_LENGTH = CS3_SPACE_MIRROR_LENGTH;
  175. }
  176. else
  177. {
  178. define symbol CS3_SPACE_MIRROR_PRV_LENGTH = 0;
  179. }
  180. if (isdefinedsymbol(CS5_SPACE_MIRROR_START))
  181. {
  182. define symbol CS5_SPACE_MIRROR_PRV_START = CS5_SPACE_MIRROR_START;
  183. }
  184. else
  185. {
  186. define symbol CS5_SPACE_MIRROR_PRV_START = 0;
  187. }
  188. if (isdefinedsymbol(CS5_SPACE_MIRROR_LENGTH))
  189. {
  190. define symbol CS5_SPACE_MIRROR_PRV_LENGTH = CS5_SPACE_MIRROR_LENGTH;
  191. }
  192. else
  193. {
  194. define symbol CS5_SPACE_MIRROR_PRV_LENGTH = 0;
  195. }
  196. if (isdefinedsymbol(xSPI0_CS0_SPACE_START))
  197. {
  198. define symbol xSPI0_CS0_SPACE_PRV_START = xSPI0_CS0_SPACE_START;
  199. }
  200. else
  201. {
  202. define symbol xSPI0_CS0_SPACE_PRV_START = 0;
  203. }
  204. if (isdefinedsymbol(xSPI0_CS0_SPACE_LENGTH))
  205. {
  206. define symbol xSPI0_CS0_SPACE_PRV_LENGTH = xSPI0_CS0_SPACE_LENGTH;
  207. }
  208. else
  209. {
  210. define symbol xSPI0_CS0_SPACE_PRV_LENGTH = 0;
  211. }
  212. if (isdefinedsymbol(xSPI0_CS1_SPACE_START))
  213. {
  214. define symbol xSPI0_CS1_SPACE_PRV_START = xSPI0_CS1_SPACE_START;
  215. }
  216. else
  217. {
  218. define symbol xSPI0_CS1_SPACE_PRV_START = 0;
  219. }
  220. if (isdefinedsymbol(xSPI0_CS1_SPACE_LENGTH))
  221. {
  222. define symbol xSPI0_CS1_SPACE_PRV_LENGTH = xSPI0_CS1_SPACE_LENGTH;
  223. }
  224. else
  225. {
  226. define symbol xSPI0_CS1_SPACE_PRV_LENGTH = 0;
  227. }
  228. if (isdefinedsymbol(xSPI1_CS0_SPACE_START))
  229. {
  230. define symbol xSPI1_CS0_SPACE_PRV_START = xSPI1_CS0_SPACE_START;
  231. }
  232. else
  233. {
  234. define symbol xSPI1_CS0_SPACE_PRV_START = 0;
  235. }
  236. if (isdefinedsymbol(xSPI1_CS0_SPACE_LENGTH))
  237. {
  238. define symbol xSPI1_CS0_SPACE_PRV_LENGTH = xSPI1_CS0_SPACE_LENGTH;
  239. }
  240. else
  241. {
  242. define symbol xSPI1_CS0_SPACE_PRV_LENGTH = 0;
  243. }
  244. if (isdefinedsymbol(xSPI1_CS1_SPACE_START))
  245. {
  246. define symbol xSPI1_CS1_SPACE_PRV_START = xSPI1_CS1_SPACE_START;
  247. }
  248. else
  249. {
  250. define symbol xSPI1_CS1_SPACE_PRV_START = 0;
  251. }
  252. if (isdefinedsymbol(xSPI1_CS1_SPACE_LENGTH))
  253. {
  254. define symbol xSPI1_CS1_SPACE_PRV_LENGTH = xSPI1_CS1_SPACE_LENGTH;
  255. }
  256. else
  257. {
  258. define symbol xSPI1_CS1_SPACE_PRV_LENGTH = 0;
  259. }
  260. if (isdefinedsymbol(CS0_SPACE_START))
  261. {
  262. define symbol CS0_SPACE_PRV_START = CS0_SPACE_START;
  263. }
  264. else
  265. {
  266. define symbol CS0_SPACE_PRV_START = 0;
  267. }
  268. if (isdefinedsymbol(CS0_SPACE_LENGTH))
  269. {
  270. define symbol CS0_SPACE_PRV_LENGTH = CS0_SPACE_LENGTH;
  271. }
  272. else
  273. {
  274. define symbol CS0_SPACE_PRV_LENGTH = 0;
  275. }
  276. if (isdefinedsymbol(CS2_SPACE_START))
  277. {
  278. define symbol CS2_SPACE_PRV_START = CS2_SPACE_START;
  279. }
  280. else
  281. {
  282. define symbol CS2_SPACE_PRV_START = 0;
  283. }
  284. if (isdefinedsymbol(CS2_SPACE_LENGTH))
  285. {
  286. define symbol CS2_SPACE_PRV_LENGTH = CS2_SPACE_LENGTH;
  287. }
  288. else
  289. {
  290. define symbol CS2_SPACE_PRV_LENGTH = 0;
  291. }
  292. if (isdefinedsymbol(CS3_SPACE_START))
  293. {
  294. define symbol CS3_SPACE_PRV_START = CS3_SPACE_START;
  295. }
  296. else
  297. {
  298. define symbol CS3_SPACE_PRV_START = 0;
  299. }
  300. if (isdefinedsymbol(CS3_SPACE_LENGTH))
  301. {
  302. define symbol CS3_SPACE_PRV_LENGTH = CS3_SPACE_LENGTH;
  303. }
  304. else
  305. {
  306. define symbol CS3_SPACE_PRV_LENGTH = 0;
  307. }
  308. if (isdefinedsymbol(CS5_SPACE_START))
  309. {
  310. define symbol CS5_SPACE_PRV_START = CS5_SPACE_START;
  311. }
  312. else
  313. {
  314. define symbol CS5_SPACE_PRV_START = 0;
  315. }
  316. if (isdefinedsymbol(CS5_SPACE_LENGTH))
  317. {
  318. define symbol CS5_SPACE_PRV_LENGTH = CS5_SPACE_LENGTH;
  319. }
  320. else
  321. {
  322. define symbol CS5_SPACE_PRV_LENGTH = 0;
  323. }
  324. define symbol SYSTEM_RAM_END_OFFSET = 0x00048000;
  325. define symbol FLASH_ADDRESS = xSPI0_CS0_SPACE_PRV_START;
  326. define symbol INTVEC_ADDRESS = ATCM_PRV_START;
  327. define symbol RAM_ADDRESS = (ATCM_PRV_START + 0x100);
  328. define symbol RAM_END_ADDRESS = (ATCM_PRV_START + ATCM_PRV_LENGTH - 1);
  329. define symbol LOADER_STACK_ADDRESS = (BTCM_PRV_START + 0x2000);
  330. define symbol LOADER_STACK_END_ADDRESS = (BTCM_PRV_START + BTCM_PRV_LENGTH - 1);
  331. define symbol DATA_NONCACHE_OFFSET = 0x00048000;
  332. define symbol DATA_NONCACHE_END_OFFSET = 0x00044000;
  333. define symbol DMAC_LINK_MODE_OFFSET = 0x00044000;
  334. define symbol DMAC_LINK_MODE_END_OFFSET = 0x00040000;
  335. define symbol NONCACHE_BUFFER_OFFSET = 0x00020000;
  336. define symbol NONCACHE_BUFFER_END_OFFSET = 0;
  337. /*###ICF### Section handled by ICF editor, don't touch! ****/
  338. /*-Editor annotation file-*/
  339. /* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\a_v1_0.xml" */
  340. /*-Specials-*/
  341. define symbol __ICFEDIT_intvec_start__ = INTVEC_ADDRESS;
  342. /*-Memory Regions-*/
  343. define symbol __ICFEDIT_region_ROM_start__ = FLASH_ADDRESS + 0x20100;
  344. define symbol __ICFEDIT_region_ROM_end__ = FLASH_ADDRESS + 0x6FFFF;
  345. define symbol __ICFEDIT_region_RAM_start__ = RAM_ADDRESS;
  346. define symbol __ICFEDIT_region_RAM_end__ = RAM_END_ADDRESS;
  347. /**** End of ICF editor section. ###ICF###*/
  348. /*-Sizes-*/
  349. define symbol __ICFEDIT_size_cstack__ = 0x200;
  350. /**** End of ICF editor section. ###ICF###*/
  351. define memory mem with size = 4G;
  352. define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__];
  353. define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__];
  354. define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { };
  355. define symbol __region_D_LOADER_STACK_start__ = LOADER_STACK_ADDRESS;
  356. define symbol __region_D_LOADER_STACK_end__ = LOADER_STACK_END_ADDRESS;
  357. define symbol __region_DATA_NONCACHE_start__ = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - DATA_NONCACHE_OFFSET;
  358. define symbol __region_DATA_NONCACHE_end__ = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - DATA_NONCACHE_END_OFFSET - 1;
  359. define symbol __region_DMAC_LINK_MODE_start__ = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - DMAC_LINK_MODE_OFFSET;
  360. define symbol __region_DMAC_LINK_MODE_end__ = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - DMAC_LINK_MODE_END_OFFSET - 1;
  361. define symbol __region_SHARED_NONCACHE_BUFFER_start__ = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - 0x00040000;
  362. define symbol __region_SHARED_NONCACHE_BUFFER_end__ = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - 0x00020000 - 1;
  363. define symbol __region_NONCACHE_BUFFER_start__ = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - NONCACHE_BUFFER_OFFSET;
  364. define symbol __region_NONCACHE_BUFFER_end__ = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - NONCACHE_BUFFER_END_OFFSET - 1;
  365. define symbol __region_ATCM_start__ = ATCM_PRV_START;
  366. define symbol __region_ATCM_end__ = ATCM_PRV_START + ATCM_PRV_LENGTH - 1;
  367. define symbol __region_BTCM_start__ = BTCM_PRV_START;
  368. define symbol __region_BTCM_end__ = BTCM_PRV_START + BTCM_PRV_LENGTH - 1;
  369. define symbol __region_SYSTEM_RAM_start__ = SYSTEM_RAM_PRV_START;
  370. define symbol __region_SYSTEM_RAM_end__ = SYSTEM_RAM_PRV_START + SYSTEM_RAM_PRV_LENGTH - SYSTEM_RAM_END_OFFSET - 1;
  371. define symbol __region_SYSTEM_RAM_MIRROR_start__ = SYSTEM_RAM_MIRROR_PRV_START;
  372. define symbol __region_SYSTEM_RAM_MIRROR_end__ = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - SYSTEM_RAM_END_OFFSET - 1;
  373. define symbol __region_XSPI0_CS0_MIRROR_start__ = xSPI0_CS0_SPACE_MIRROR_PRV_START;
  374. define symbol __region_XSPI0_CS0_MIRROR_end__ = xSPI0_CS0_SPACE_MIRROR_PRV_START + xSPI0_CS0_SPACE_MIRROR_PRV_LENGTH - 1;
  375. define symbol __region_XSPI0_CS1_MIRROR_start__ = xSPI0_CS1_SPACE_MIRROR_PRV_START;
  376. define symbol __region_XSPI0_CS1_MIRROR_end__ = xSPI0_CS1_SPACE_MIRROR_PRV_START + xSPI0_CS1_SPACE_MIRROR_PRV_LENGTH - 1;
  377. define symbol __region_XSPI1_CS0_MIRROR_start__ = xSPI1_CS0_SPACE_MIRROR_PRV_START;
  378. define symbol __region_XSPI1_CS0_MIRROR_end__ = xSPI1_CS0_SPACE_MIRROR_PRV_START + xSPI1_CS0_SPACE_MIRROR_PRV_LENGTH - 1;
  379. define symbol __region_XSPI1_CS1_MIRROR_start__ = xSPI1_CS1_SPACE_MIRROR_PRV_START;
  380. define symbol __region_XSPI1_CS1_MIRROR_end__ = xSPI1_CS1_SPACE_MIRROR_PRV_START + xSPI1_CS1_SPACE_MIRROR_PRV_LENGTH - 1;
  381. define symbol __region_CS0_MIRROR_start__ = CS0_SPACE_MIRROR_PRV_START;
  382. define symbol __region_CS0_MIRROR_end__ = CS0_SPACE_MIRROR_PRV_START + CS0_SPACE_MIRROR_PRV_LENGTH - 1;
  383. define symbol __region_CS2_MIRROR_start__ = CS2_SPACE_MIRROR_PRV_START;
  384. define symbol __region_CS2_MIRROR_end__ = CS2_SPACE_MIRROR_PRV_START + CS2_SPACE_MIRROR_PRV_LENGTH - 1;
  385. define symbol __region_CS3_MIRROR_start__ = CS3_SPACE_MIRROR_PRV_START;
  386. define symbol __region_CS3_MIRROR_end__ = CS3_SPACE_MIRROR_PRV_START + CS3_SPACE_MIRROR_PRV_LENGTH - 1;
  387. define symbol __region_CS5_MIRROR_start__ = CS5_SPACE_MIRROR_PRV_START;
  388. define symbol __region_CS5_MIRROR_end__ = CS5_SPACE_MIRROR_PRV_START + CS5_SPACE_MIRROR_PRV_LENGTH - 1;
  389. define symbol __region_XSPI0_CS0_start__ = xSPI0_CS0_SPACE_PRV_START;
  390. define symbol __region_XSPI0_CS0_end__ = xSPI0_CS0_SPACE_PRV_START + xSPI0_CS0_SPACE_PRV_LENGTH - 1;
  391. define symbol __region_XSPI0_CS1_start__ = xSPI0_CS1_SPACE_PRV_START;
  392. define symbol __region_XSPI0_CS1_end__ = xSPI0_CS1_SPACE_PRV_START + xSPI0_CS1_SPACE_PRV_LENGTH - 1;
  393. define symbol __region_XSPI1_CS0_start__ = xSPI1_CS0_SPACE_PRV_START;
  394. define symbol __region_XSPI1_CS0_end__ = xSPI1_CS0_SPACE_PRV_START + xSPI1_CS0_SPACE_PRV_LENGTH - 1;
  395. define symbol __region_XSPI1_CS1_start__ = xSPI1_CS1_SPACE_PRV_START;
  396. define symbol __region_XSPI1_CS1_end__ = xSPI1_CS1_SPACE_PRV_START + xSPI1_CS1_SPACE_PRV_LENGTH - 1;
  397. define symbol __region_CS0_start__ = CS0_SPACE_PRV_START;
  398. define symbol __region_CS0_end__ = CS0_SPACE_PRV_START + CS0_SPACE_PRV_LENGTH - 1;
  399. define symbol __region_CS2_start__ = CS2_SPACE_PRV_START;
  400. define symbol __region_CS2_end__ = CS2_SPACE_PRV_START + CS2_SPACE_PRV_LENGTH - 1;
  401. define symbol __region_CS3_start__ = CS3_SPACE_PRV_START;
  402. define symbol __region_CS3_end__ = CS3_SPACE_PRV_START + CS3_SPACE_PRV_LENGTH - 1;
  403. define symbol __region_CS5_start__ = CS5_SPACE_PRV_START;
  404. define symbol __region_CS5_end__ = CS5_SPACE_PRV_START + CS5_SPACE_PRV_LENGTH - 1;
  405. /************** SPI boot mode setting **************/
  406. define symbol __region_LDR_PARAM_start__ = FLASH_ADDRESS;
  407. define symbol __region_LDR_PARAM_end__ = FLASH_ADDRESS + 0x0000004B;
  408. define symbol __region_S_LOADER_STACK_start__ = FLASH_ADDRESS + 0x0000004C;
  409. define symbol __region_S_LOADER_STACK_end__ = FLASH_ADDRESS + 0x0000804B;
  410. define symbol __region_S_intvec_start__ = FLASH_ADDRESS + 0x20000;
  411. define symbol __region_S_intvec_end__ = FLASH_ADDRESS + 0x200FF;
  412. define symbol __region_S_RAM_start__ = FLASH_ADDRESS + 0x70000;
  413. define symbol __region_S_RAM_end__ = FLASH_ADDRESS + 0x7FFFF;
  414. /****************************************************/
  415. define region D_LOADER_STACK_region = mem:[from __region_D_LOADER_STACK_start__ to __region_D_LOADER_STACK_end__];
  416. define region LDR_PARAM_region = mem:[from __region_LDR_PARAM_start__ to __region_LDR_PARAM_end__];
  417. define region S_LOADER_STACK_region = mem:[from __region_S_LOADER_STACK_start__ to __region_S_LOADER_STACK_end__];
  418. define region S_intvec_region = mem:[from __region_S_intvec_start__ to __region_S_intvec_end__];
  419. define region S_RAM_region = mem:[from __region_S_RAM_start__ to __region_S_RAM_end__];
  420. define region DATA_NONCACHE_region = mem:[from __region_DATA_NONCACHE_start__ to __region_DATA_NONCACHE_end__];
  421. define region DMAC_LINK_MODE_region = mem:[from __region_DMAC_LINK_MODE_start__ to __region_DMAC_LINK_MODE_end__];
  422. define region SHARED_NONCACHE_BUFFER_region = mem:[from __region_SHARED_NONCACHE_BUFFER_start__ to __region_SHARED_NONCACHE_BUFFER_end__];
  423. define region NONCACHE_BUFFER_region = mem:[from __region_NONCACHE_BUFFER_start__ to __region_NONCACHE_BUFFER_end__];
  424. define region ATCM_region = mem:[from __region_ATCM_start__ to __region_ATCM_end__ ];
  425. define region BTCM_region = mem:[from __region_BTCM_start__ to __region_BTCM_end__ ];
  426. define region SYSTEM_RAM_region = mem:[from __region_SYSTEM_RAM_start__ to __region_SYSTEM_RAM_end__ ];
  427. define region SYSTEM_RAM_MIRROR_region = mem:[from __region_SYSTEM_RAM_MIRROR_start__ to __region_SYSTEM_RAM_MIRROR_end__ ];
  428. define region XSPI0_CS0_MIRROR_region = mem:[from __region_XSPI0_CS0_MIRROR_start__ to __region_XSPI0_CS0_MIRROR_end__ ];
  429. define region XSPI0_CS1_MIRROR_region = mem:[from __region_XSPI0_CS1_MIRROR_start__ to __region_XSPI0_CS1_MIRROR_end__ ];
  430. define region XSPI1_CS0_MIRROR_region = mem:[from __region_XSPI1_CS0_MIRROR_start__ to __region_XSPI1_CS0_MIRROR_end__ ];
  431. define region XSPI1_CS1_MIRROR_region = mem:[from __region_XSPI1_CS1_MIRROR_start__ to __region_XSPI1_CS1_MIRROR_end__ ];
  432. define region CS0_MIRROR_region = mem:[from __region_CS0_MIRROR_start__ to __region_CS0_MIRROR_end__ ];
  433. define region CS2_MIRROR_region = mem:[from __region_CS2_MIRROR_start__ to __region_CS2_MIRROR_end__ ];
  434. define region CS3_MIRROR_region = mem:[from __region_CS3_MIRROR_start__ to __region_CS3_MIRROR_end__ ];
  435. define region CS5_MIRROR_region = mem:[from __region_CS5_MIRROR_start__ to __region_CS5_MIRROR_end__ ];
  436. define region XSPI0_CS0_region = mem:[from __region_XSPI0_CS0_start__ to __region_XSPI0_CS0_end__ ];
  437. define region XSPI0_CS1_region = mem:[from __region_XSPI0_CS1_start__ to __region_XSPI0_CS1_end__ ];
  438. define region XSPI1_CS0_region = mem:[from __region_XSPI1_CS0_start__ to __region_XSPI1_CS0_end__ ];
  439. define region XSPI1_CS1_region = mem:[from __region_XSPI1_CS1_start__ to __region_XSPI1_CS1_end__ ];
  440. define region CS0_region = mem:[from __region_CS0_start__ to __region_CS0_end__ ];
  441. define region CS2_region = mem:[from __region_CS2_start__ to __region_CS2_end__ ];
  442. define region CS3_region = mem:[from __region_CS3_start__ to __region_CS3_end__ ];
  443. define region CS5_region = mem:[from __region_CS5_start__ to __region_CS5_end__ ];
  444. define block LDR_PRG_RBLOCK with fixed order
  445. { ro code section .loader_text_init object startup_core.o,
  446. ro code object startup_core.o,
  447. ro code object system_core.o,
  448. ro code object startup.o,
  449. ro code object system.o,
  450. ro code object bsp_clocks.o,
  451. ro code object bsp_irq_core.o,
  452. ro code object bsp_irq.o,
  453. ro code object bsp_register_protection.o,
  454. ro code object r_ioport.o,
  455. ro code object bsp_cache.o,
  456. ro code section .warm_start_init }
  457. except { ro code section .intvec_init,
  458. ro code section .reset_handler_init };
  459. define block LDR_PRG_WBLOCK with fixed order
  460. { rw code section .loader_text object startup_core.o,
  461. rw code object startup_core.o,
  462. rw code object system_core.o,
  463. rw code object startup.o,
  464. rw code object system.o,
  465. rw code object bsp_clocks.o,
  466. rw code object bsp_irq_core.o,
  467. rw code object bsp_irq.o,
  468. rw code object bsp_register_protection.o,
  469. rw code object r_ioport.o,
  470. rw code object bsp_cache.o,
  471. rw code section .warm_start }
  472. except { rw code section .intvec,
  473. rw code section .reset_handler };
  474. define block LDR_DATA_ZBLOCK with alignment = 4
  475. { section .bss object startup_core.o,
  476. section .bss object system_core.o,
  477. section .bss object startup.o,
  478. section .bss object system.o,
  479. section .bss object bsp_clocks.o,
  480. section .bss object bsp_irq_core.o,
  481. section .bss object bsp_irq.o,
  482. section .bss object bsp_register_protection.o,
  483. section .bss object r_ioport.o,
  484. section .bss object bsp_cache.o,
  485. section .bss object bsp_io.o };
  486. define block LDR_DATA_RBLOCK with fixed order, alignment = 4
  487. { section .data_init object startup_core.o,
  488. section .data_init object system_core.o,
  489. section .data_init object startup.o,
  490. section .data_init object system.o,
  491. section .data_init object bsp_clocks.o,
  492. section .data_init object bsp_irq_core.o,
  493. section .data_init object bsp_irq.o,
  494. section .data_init object bsp_register_protection.o,
  495. section .data_init object r_ioport.o,
  496. section .data_init object bsp_cache.o,
  497. section .rodata_init object system_core.o };
  498. define block LDR_DATA_WBLOCK with fixed order, alignment = 4
  499. { section .data object startup_core.o,
  500. section .data object system_core.o,
  501. section .data object startup.o,
  502. section .data object system.o,
  503. section .data object bsp_clocks.o,
  504. section .data object bsp_irq_core.o,
  505. section .data object bsp_irq.o,
  506. section .data object bsp_register_protection.o,
  507. section .data object r_ioport.o,
  508. section .data object bsp_cache.o,
  509. section .rodata object system_core.o };
  510. define block HEAP_BLOCK with alignment = 8 { rw section HEAP };
  511. define block THREAD_STACK with alignment = 8 { rw section .stack* };
  512. define block SYS_STACK with alignment = 8 { rw section .sys_stack };
  513. define block SVC_STACK with alignment = 8 { rw section .svc_stack };
  514. define block IRQ_STACK with alignment = 8 { rw section .irq_stack };
  515. define block FIQ_STACK with alignment = 8 { rw section .fiq_stack };
  516. define block UND_STACK with alignment = 8 { rw section .und_stack };
  517. define block ABT_STACK with alignment = 8 { rw section .abt_stack };
  518. define block VECTOR_RBLOCK with alignment = 32 { ro code section .intvec_init};
  519. define block VECTOR_WBLOCK with alignment = 32 { rw code section .intvec};
  520. define block USER_PRG_RBLOCK with alignment = 4 { ro code };
  521. define block USER_PRG_WBLOCK with alignment = 4 { rw code };
  522. define block USER_DATA_ZBLOCK with alignment = 4 { section .bss };
  523. define block USER_DATA_RBLOCK with fixed order, alignment = 4
  524. { section .data_init,
  525. section __DLIB_PERTHREAD_init,
  526. section .rodata_init,
  527. section .version_init };
  528. define block USER_DATA_WBLOCK with fixed order, alignment = 4
  529. { section .data,
  530. section __DLIB_PERTHREAD,
  531. section .rodata,
  532. section .version };
  533. define block USER_DATA_NONCACHE_RBLOCK with alignment = 4 { section .data_noncache_init };
  534. define block USER_DATA_NONCACHE_WBLOCK with alignment = 4 { section .data_noncache };
  535. define block DMAC_LINK_MODE_ZBLOCK with alignment = 4 { section .dmac_link_mode* };
  536. define block SHARED_NONCACHE_BUFFER_ZBLOCK with alignment = 32 { section .shared_noncache_buffer* };
  537. define block NONCACHE_BUFFER_ZBLOCK with alignment = 32 { section .noncache_buffer* };
  538. initialize manually { ro code object startup_core.o,
  539. ro code object system_core.o,
  540. ro code object startup.o,
  541. ro code object system.o,
  542. ro code object bsp_clocks.o,
  543. ro code object bsp_irq_core.o,
  544. ro code object bsp_irq.o,
  545. ro code object bsp_register_protection.o,
  546. ro code object r_ioport.o,
  547. ro code object bsp_cache.o,
  548. ro code section .intvec,
  549. ro code section .reset_handler,
  550. ro code section .warm_start,
  551. ro code,
  552. section .data,
  553. section __DLIB_PERTHREAD,
  554. section .rodata,
  555. section .version,
  556. section .data_noncache };
  557. do not initialize { section .noinit,
  558. section .bss,
  559. section .dmac_link_mode*,
  560. section .shared_noncache_buffer*,
  561. section .noncache_buffer*,
  562. rw section HEAP,
  563. rw section .stack*,
  564. rw section .sys_stack,
  565. rw section .svc_stack,
  566. rw section .irq_stack,
  567. rw section .fiq_stack,
  568. rw section .und_stack,
  569. rw section .abt_stack };
  570. place at address mem: __ICFEDIT_intvec_start__ { block VECTOR_WBLOCK };
  571. place in LDR_PARAM_region { readonly section .loader_param };
  572. place at start of S_LOADER_STACK_region { block LDR_PRG_RBLOCK };
  573. place in S_LOADER_STACK_region { section LDR_DATA_RBLOCK, block LDR_DATA_RBLOCK };
  574. place in S_intvec_region { block VECTOR_RBLOCK };
  575. place in ROM_region { block USER_PRG_RBLOCK, readonly };
  576. place in S_RAM_region { block USER_DATA_RBLOCK, block USER_DATA_NONCACHE_RBLOCK };
  577. place at start of D_LOADER_STACK_region { block LDR_PRG_WBLOCK };
  578. place in D_LOADER_STACK_region { section LDR_DATA_WBLOCK, block LDR_DATA_WBLOCK,
  579. section LDR_DATA_ZBLOCK, block LDR_DATA_ZBLOCK };
  580. place in D_LOADER_STACK_region { section SYS_STACK, block SYS_STACK,
  581. section SVC_STACK, block SVC_STACK,
  582. section IRQ_STACK, block IRQ_STACK,
  583. section FIQ_STACK, block FIQ_STACK,
  584. section UND_STACK, block UND_STACK,
  585. section ABT_STACK, block ABT_STACK };
  586. place in RAM_region { block USER_PRG_WBLOCK };
  587. place in RAM_region { readwrite, last block CSTACK };
  588. place in RAM_region { block USER_DATA_WBLOCK,
  589. block USER_DATA_ZBLOCK };
  590. place in RAM_region { section HEAP_BLOCK, block HEAP_BLOCK,
  591. section THREAD_STACK, block THREAD_STACK };
  592. place in DATA_NONCACHE_region { block USER_DATA_NONCACHE_WBLOCK };
  593. place in DMAC_LINK_MODE_region { block DMAC_LINK_MODE_ZBLOCK };
  594. place in SHARED_NONCACHE_BUFFER_region { block SHARED_NONCACHE_BUFFER_ZBLOCK };
  595. place in NONCACHE_BUFFER_region { block NONCACHE_BUFFER_ZBLOCK };
  596. place in ATCM_region { };
  597. place in BTCM_region { };
  598. place in SYSTEM_RAM_region { };
  599. place in SYSTEM_RAM_MIRROR_region { };
  600. place in XSPI0_CS0_MIRROR_region { };
  601. place in XSPI0_CS1_MIRROR_region { };
  602. place in XSPI1_CS0_MIRROR_region { };
  603. place in XSPI1_CS1_MIRROR_region { };
  604. place in CS0_MIRROR_region { };
  605. place in CS2_MIRROR_region { };
  606. place in CS3_MIRROR_region { };
  607. place in CS5_MIRROR_region { };
  608. place in XSPI0_CS0_region { };
  609. place in XSPI0_CS1_region { };
  610. place in XSPI1_CS0_region { };
  611. place in XSPI1_CS1_region { };
  612. place in CS0_region { };
  613. place in CS2_region { };
  614. place in CS3_region { };
  615. place in CS5_region { };