fsp_xspi0_boot_systemRAM.icf 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699
  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. /*
  327. define symbol INTVEC_ADDRESS = ATCM_PRV_START;
  328. define symbol RAM_ADDRESS = (ATCM_PRV_START + 0x100);
  329. define symbol RAM_END_ADDRESS = (ATCM_PRV_START + ATCM_PRV_LENGTH - 1);
  330. define symbol LOADER_STACK_ADDRESS = (BTCM_PRV_START + 0x2000);
  331. define symbol LOADER_STACK_END_ADDRESS = (BTCM_PRV_START + BTCM_PRV_LENGTH - 1);
  332. define symbol DATA_NONCACHE_OFFSET = 0x00048000;
  333. define symbol DATA_NONCACHE_END_OFFSET = 0x00044000;
  334. define symbol DMAC_LINK_MODE_OFFSET = 0x00044000;
  335. define symbol DMAC_LINK_MODE_END_OFFSET = 0x00040000;
  336. define symbol NONCACHE_BUFFER_OFFSET = 0x00020000;
  337. define symbol NONCACHE_BUFFER_END_OFFSET = 0;
  338. */
  339. /************* Override define symbol to place EtherCAT protocol into SystemRAM ************/
  340. define symbol INTVEC_ADDRESS = SYSTEM_RAM_PRV_START;
  341. define symbol RAM_ADDRESS = (SYSTEM_RAM_PRV_START + 0x100);
  342. define symbol RAM_END_ADDRESS = (SYSTEM_RAM_PRV_START + SYSTEM_RAM_PRV_LENGTH - 1);
  343. define symbol LOADER_STACK_ADDRESS = (BTCM_PRV_START + 0x2000);
  344. define symbol LOADER_STACK_END_ADDRESS = (BTCM_PRV_START + BTCM_PRV_LENGTH - 1);
  345. define symbol DATA_NONCACHE_OFFSET = 0x00048000;
  346. define symbol DATA_NONCACHE_END_OFFSET = 0x00044000;
  347. define symbol DMAC_LINK_MODE_OFFSET = 0x00044000;
  348. define symbol DMAC_LINK_MODE_END_OFFSET = 0x00040000;
  349. define symbol NONCACHE_BUFFER_OFFSET = 0x00020000;
  350. define symbol NONCACHE_BUFFER_END_OFFSET = 0;
  351. /*********************************************************************************************/
  352. /*###ICF### Section handled by ICF editor, don't touch! ****/
  353. /*-Editor annotation file-*/
  354. /* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\a_v1_0.xml" */
  355. /*-Specials-*/
  356. define symbol __ICFEDIT_intvec_start__ = INTVEC_ADDRESS;
  357. /*-Memory Regions-*/
  358. define symbol __ICFEDIT_region_ROM_start__ = FLASH_ADDRESS + 0x20100;
  359. define symbol __ICFEDIT_region_ROM_end__ = FLASH_ADDRESS + 0x6FFFF;
  360. define symbol __ICFEDIT_region_RAM_start__ = RAM_ADDRESS;
  361. define symbol __ICFEDIT_region_RAM_end__ = RAM_END_ADDRESS;
  362. /**** End of ICF editor section. ###ICF###*/
  363. /*-Sizes-*/
  364. define symbol __ICFEDIT_size_cstack__ = 0x200;
  365. /**** End of ICF editor section. ###ICF###*/
  366. define memory mem with size = 4G;
  367. define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__];
  368. define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__];
  369. define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { };
  370. define symbol __region_D_LOADER_STACK_start__ = LOADER_STACK_ADDRESS;
  371. define symbol __region_D_LOADER_STACK_end__ = LOADER_STACK_END_ADDRESS;
  372. define symbol __region_DATA_NONCACHE_start__ = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - DATA_NONCACHE_OFFSET;
  373. define symbol __region_DATA_NONCACHE_end__ = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - DATA_NONCACHE_END_OFFSET - 1;
  374. define symbol __region_DMAC_LINK_MODE_start__ = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - DMAC_LINK_MODE_OFFSET;
  375. define symbol __region_DMAC_LINK_MODE_end__ = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - DMAC_LINK_MODE_END_OFFSET - 1;
  376. define symbol __region_SHARED_NONCACHE_BUFFER_start__ = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - 0x00040000;
  377. define symbol __region_SHARED_NONCACHE_BUFFER_end__ = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - 0x00020000 - 1;
  378. define symbol __region_NONCACHE_BUFFER_start__ = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - NONCACHE_BUFFER_OFFSET;
  379. define symbol __region_NONCACHE_BUFFER_end__ = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - NONCACHE_BUFFER_END_OFFSET - 1;
  380. define symbol __region_ATCM_start__ = ATCM_PRV_START;
  381. define symbol __region_ATCM_end__ = ATCM_PRV_START + ATCM_PRV_LENGTH - 1;
  382. define symbol __region_BTCM_start__ = BTCM_PRV_START;
  383. define symbol __region_BTCM_end__ = BTCM_PRV_START + BTCM_PRV_LENGTH - 1;
  384. define symbol __region_SYSTEM_RAM_start__ = SYSTEM_RAM_PRV_START;
  385. define symbol __region_SYSTEM_RAM_end__ = SYSTEM_RAM_PRV_START + SYSTEM_RAM_PRV_LENGTH - SYSTEM_RAM_END_OFFSET - 1;
  386. define symbol __region_SYSTEM_RAM_MIRROR_start__ = SYSTEM_RAM_MIRROR_PRV_START;
  387. define symbol __region_SYSTEM_RAM_MIRROR_end__ = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - SYSTEM_RAM_END_OFFSET - 1;
  388. define symbol __region_XSPI0_CS0_MIRROR_start__ = xSPI0_CS0_SPACE_MIRROR_PRV_START;
  389. define symbol __region_XSPI0_CS0_MIRROR_end__ = xSPI0_CS0_SPACE_MIRROR_PRV_START + xSPI0_CS0_SPACE_MIRROR_PRV_LENGTH - 1;
  390. define symbol __region_XSPI0_CS1_MIRROR_start__ = xSPI0_CS1_SPACE_MIRROR_PRV_START;
  391. define symbol __region_XSPI0_CS1_MIRROR_end__ = xSPI0_CS1_SPACE_MIRROR_PRV_START + xSPI0_CS1_SPACE_MIRROR_PRV_LENGTH - 1;
  392. define symbol __region_XSPI1_CS0_MIRROR_start__ = xSPI1_CS0_SPACE_MIRROR_PRV_START;
  393. define symbol __region_XSPI1_CS0_MIRROR_end__ = xSPI1_CS0_SPACE_MIRROR_PRV_START + xSPI1_CS0_SPACE_MIRROR_PRV_LENGTH - 1;
  394. define symbol __region_XSPI1_CS1_MIRROR_start__ = xSPI1_CS1_SPACE_MIRROR_PRV_START;
  395. define symbol __region_XSPI1_CS1_MIRROR_end__ = xSPI1_CS1_SPACE_MIRROR_PRV_START + xSPI1_CS1_SPACE_MIRROR_PRV_LENGTH - 1;
  396. define symbol __region_CS0_MIRROR_start__ = CS0_SPACE_MIRROR_PRV_START;
  397. define symbol __region_CS0_MIRROR_end__ = CS0_SPACE_MIRROR_PRV_START + CS0_SPACE_MIRROR_PRV_LENGTH - 1;
  398. define symbol __region_CS2_MIRROR_start__ = CS2_SPACE_MIRROR_PRV_START;
  399. define symbol __region_CS2_MIRROR_end__ = CS2_SPACE_MIRROR_PRV_START + CS2_SPACE_MIRROR_PRV_LENGTH - 1;
  400. define symbol __region_CS3_MIRROR_start__ = CS3_SPACE_MIRROR_PRV_START;
  401. define symbol __region_CS3_MIRROR_end__ = CS3_SPACE_MIRROR_PRV_START + CS3_SPACE_MIRROR_PRV_LENGTH - 1;
  402. define symbol __region_CS5_MIRROR_start__ = CS5_SPACE_MIRROR_PRV_START;
  403. define symbol __region_CS5_MIRROR_end__ = CS5_SPACE_MIRROR_PRV_START + CS5_SPACE_MIRROR_PRV_LENGTH - 1;
  404. define symbol __region_XSPI0_CS0_start__ = xSPI0_CS0_SPACE_PRV_START;
  405. define symbol __region_XSPI0_CS0_end__ = xSPI0_CS0_SPACE_PRV_START + xSPI0_CS0_SPACE_PRV_LENGTH - 1;
  406. define symbol __region_XSPI0_CS1_start__ = xSPI0_CS1_SPACE_PRV_START;
  407. define symbol __region_XSPI0_CS1_end__ = xSPI0_CS1_SPACE_PRV_START + xSPI0_CS1_SPACE_PRV_LENGTH - 1;
  408. define symbol __region_XSPI1_CS0_start__ = xSPI1_CS0_SPACE_PRV_START;
  409. define symbol __region_XSPI1_CS0_end__ = xSPI1_CS0_SPACE_PRV_START + xSPI1_CS0_SPACE_PRV_LENGTH - 1;
  410. define symbol __region_XSPI1_CS1_start__ = xSPI1_CS1_SPACE_PRV_START;
  411. define symbol __region_XSPI1_CS1_end__ = xSPI1_CS1_SPACE_PRV_START + xSPI1_CS1_SPACE_PRV_LENGTH - 1;
  412. define symbol __region_CS0_start__ = CS0_SPACE_PRV_START;
  413. define symbol __region_CS0_end__ = CS0_SPACE_PRV_START + CS0_SPACE_PRV_LENGTH - 1;
  414. define symbol __region_CS2_start__ = CS2_SPACE_PRV_START;
  415. define symbol __region_CS2_end__ = CS2_SPACE_PRV_START + CS2_SPACE_PRV_LENGTH - 1;
  416. define symbol __region_CS3_start__ = CS3_SPACE_PRV_START;
  417. define symbol __region_CS3_end__ = CS3_SPACE_PRV_START + CS3_SPACE_PRV_LENGTH - 1;
  418. define symbol __region_CS5_start__ = CS5_SPACE_PRV_START;
  419. define symbol __region_CS5_end__ = CS5_SPACE_PRV_START + CS5_SPACE_PRV_LENGTH - 1;
  420. /************** SPI boot mode setting **************/
  421. define symbol __region_LDR_PARAM_start__ = FLASH_ADDRESS;
  422. define symbol __region_LDR_PARAM_end__ = FLASH_ADDRESS + 0x0000004B;
  423. define symbol __region_S_LOADER_STACK_start__ = FLASH_ADDRESS + 0x0000004C;
  424. define symbol __region_S_LOADER_STACK_end__ = FLASH_ADDRESS + 0x0000804B;
  425. define symbol __region_S_intvec_start__ = FLASH_ADDRESS + 0x20000;
  426. define symbol __region_S_intvec_end__ = FLASH_ADDRESS + 0x200FF;
  427. define symbol __region_S_RAM_start__ = FLASH_ADDRESS + 0x70000;
  428. define symbol __region_S_RAM_end__ = FLASH_ADDRESS + 0x7FFFF;
  429. /****************************************************/
  430. define region D_LOADER_STACK_region = mem:[from __region_D_LOADER_STACK_start__ to __region_D_LOADER_STACK_end__];
  431. define region LDR_PARAM_region = mem:[from __region_LDR_PARAM_start__ to __region_LDR_PARAM_end__];
  432. define region S_LOADER_STACK_region = mem:[from __region_S_LOADER_STACK_start__ to __region_S_LOADER_STACK_end__];
  433. define region S_intvec_region = mem:[from __region_S_intvec_start__ to __region_S_intvec_end__];
  434. define region S_RAM_region = mem:[from __region_S_RAM_start__ to __region_S_RAM_end__];
  435. define region DATA_NONCACHE_region = mem:[from __region_DATA_NONCACHE_start__ to __region_DATA_NONCACHE_end__];
  436. define region DMAC_LINK_MODE_region = mem:[from __region_DMAC_LINK_MODE_start__ to __region_DMAC_LINK_MODE_end__];
  437. define region SHARED_NONCACHE_BUFFER_region = mem:[from __region_SHARED_NONCACHE_BUFFER_start__ to __region_SHARED_NONCACHE_BUFFER_end__];
  438. define region NONCACHE_BUFFER_region = mem:[from __region_NONCACHE_BUFFER_start__ to __region_NONCACHE_BUFFER_end__];
  439. define region ATCM_region = mem:[from __region_ATCM_start__ to __region_ATCM_end__ ];
  440. define region BTCM_region = mem:[from __region_BTCM_start__ to __region_BTCM_end__ ];
  441. define region SYSTEM_RAM_region = mem:[from __region_SYSTEM_RAM_start__ to __region_SYSTEM_RAM_end__ ];
  442. define region SYSTEM_RAM_MIRROR_region = mem:[from __region_SYSTEM_RAM_MIRROR_start__ to __region_SYSTEM_RAM_MIRROR_end__ ];
  443. define region XSPI0_CS0_MIRROR_region = mem:[from __region_XSPI0_CS0_MIRROR_start__ to __region_XSPI0_CS0_MIRROR_end__ ];
  444. define region XSPI0_CS1_MIRROR_region = mem:[from __region_XSPI0_CS1_MIRROR_start__ to __region_XSPI0_CS1_MIRROR_end__ ];
  445. define region XSPI1_CS0_MIRROR_region = mem:[from __region_XSPI1_CS0_MIRROR_start__ to __region_XSPI1_CS0_MIRROR_end__ ];
  446. define region XSPI1_CS1_MIRROR_region = mem:[from __region_XSPI1_CS1_MIRROR_start__ to __region_XSPI1_CS1_MIRROR_end__ ];
  447. define region CS0_MIRROR_region = mem:[from __region_CS0_MIRROR_start__ to __region_CS0_MIRROR_end__ ];
  448. define region CS2_MIRROR_region = mem:[from __region_CS2_MIRROR_start__ to __region_CS2_MIRROR_end__ ];
  449. define region CS3_MIRROR_region = mem:[from __region_CS3_MIRROR_start__ to __region_CS3_MIRROR_end__ ];
  450. define region CS5_MIRROR_region = mem:[from __region_CS5_MIRROR_start__ to __region_CS5_MIRROR_end__ ];
  451. define region XSPI0_CS0_region = mem:[from __region_XSPI0_CS0_start__ to __region_XSPI0_CS0_end__ ];
  452. define region XSPI0_CS1_region = mem:[from __region_XSPI0_CS1_start__ to __region_XSPI0_CS1_end__ ];
  453. define region XSPI1_CS0_region = mem:[from __region_XSPI1_CS0_start__ to __region_XSPI1_CS0_end__ ];
  454. define region XSPI1_CS1_region = mem:[from __region_XSPI1_CS1_start__ to __region_XSPI1_CS1_end__ ];
  455. define region CS0_region = mem:[from __region_CS0_start__ to __region_CS0_end__ ];
  456. define region CS2_region = mem:[from __region_CS2_start__ to __region_CS2_end__ ];
  457. define region CS3_region = mem:[from __region_CS3_start__ to __region_CS3_end__ ];
  458. define region CS5_region = mem:[from __region_CS5_start__ to __region_CS5_end__ ];
  459. define block LDR_PRG_RBLOCK with fixed order
  460. { ro code section .loader_text_init object startup_core.o,
  461. ro code object startup_core.o,
  462. ro code object system_core.o,
  463. ro code object startup.o,
  464. ro code object system.o,
  465. ro code object bsp_clocks.o,
  466. ro code object bsp_irq_core.o,
  467. ro code object bsp_irq.o,
  468. ro code object bsp_register_protection.o,
  469. ro code object r_ioport.o,
  470. ro code object bsp_cache.o,
  471. ro code section .warm_start_init }
  472. except { ro code section .intvec_init,
  473. ro code section .reset_handler_init };
  474. define block LDR_PRG_WBLOCK with fixed order
  475. { rw code section .loader_text object startup_core.o,
  476. rw code object startup_core.o,
  477. rw code object system_core.o,
  478. rw code object startup.o,
  479. rw code object system.o,
  480. rw code object bsp_clocks.o,
  481. rw code object bsp_irq_core.o,
  482. rw code object bsp_irq.o,
  483. rw code object bsp_register_protection.o,
  484. rw code object r_ioport.o,
  485. rw code object bsp_cache.o,
  486. rw code section .warm_start }
  487. except { rw code section .intvec,
  488. rw code section .reset_handler };
  489. define block LDR_DATA_ZBLOCK with alignment = 4
  490. { section .bss object startup_core.o,
  491. section .bss object system_core.o,
  492. section .bss object startup.o,
  493. section .bss object system.o,
  494. section .bss object bsp_clocks.o,
  495. section .bss object bsp_irq_core.o,
  496. section .bss object bsp_irq.o,
  497. section .bss object bsp_register_protection.o,
  498. section .bss object r_ioport.o,
  499. section .bss object bsp_cache.o,
  500. section .bss object bsp_io.o };
  501. define block LDR_DATA_RBLOCK with fixed order, alignment = 4
  502. { section .data_init object startup_core.o,
  503. section .data_init object system_core.o,
  504. section .data_init object startup.o,
  505. section .data_init object system.o,
  506. section .data_init object bsp_clocks.o,
  507. section .data_init object bsp_irq_core.o,
  508. section .data_init object bsp_irq.o,
  509. section .data_init object bsp_register_protection.o,
  510. section .data_init object r_ioport.o,
  511. section .data_init object bsp_cache.o,
  512. section .rodata_init object system_core.o };
  513. define block LDR_DATA_WBLOCK with fixed order, alignment = 4
  514. { section .data object startup_core.o,
  515. section .data object system_core.o,
  516. section .data object startup.o,
  517. section .data object system.o,
  518. section .data object bsp_clocks.o,
  519. section .data object bsp_irq_core.o,
  520. section .data object bsp_irq.o,
  521. section .data object bsp_register_protection.o,
  522. section .data object r_ioport.o,
  523. section .data object bsp_cache.o,
  524. section .rodata object system_core.o };
  525. define block HEAP_BLOCK with alignment = 8 { rw section HEAP };
  526. define block THREAD_STACK with alignment = 8 { rw section .stack* };
  527. define block SYS_STACK with alignment = 8 { rw section .sys_stack };
  528. define block SVC_STACK with alignment = 8 { rw section .svc_stack };
  529. define block IRQ_STACK with alignment = 8 { rw section .irq_stack };
  530. define block FIQ_STACK with alignment = 8 { rw section .fiq_stack };
  531. define block UND_STACK with alignment = 8 { rw section .und_stack };
  532. define block ABT_STACK with alignment = 8 { rw section .abt_stack };
  533. define block VECTOR_RBLOCK with alignment = 32 { ro code section .intvec_init};
  534. define block VECTOR_WBLOCK with alignment = 32 { rw code section .intvec};
  535. define block USER_PRG_RBLOCK with alignment = 4 { ro code };
  536. define block USER_PRG_WBLOCK with alignment = 4 { rw code };
  537. define block USER_DATA_ZBLOCK with alignment = 4 { section .bss };
  538. define block USER_DATA_RBLOCK with fixed order, alignment = 4
  539. { section .data_init,
  540. section __DLIB_PERTHREAD_init,
  541. section .rodata_init,
  542. section .version_init };
  543. define block USER_DATA_WBLOCK with fixed order, alignment = 4
  544. { section .data,
  545. section __DLIB_PERTHREAD,
  546. section .rodata,
  547. section .version };
  548. define block USER_DATA_NONCACHE_RBLOCK with alignment = 4 { section .data_noncache_init };
  549. define block USER_DATA_NONCACHE_WBLOCK with alignment = 4 { section .data_noncache };
  550. define block DMAC_LINK_MODE_ZBLOCK with alignment = 4 { section .dmac_link_mode* };
  551. define block SHARED_NONCACHE_BUFFER_ZBLOCK with alignment = 32 { section .shared_noncache_buffer* };
  552. define block NONCACHE_BUFFER_ZBLOCK with alignment = 32 { section .noncache_buffer* };
  553. initialize manually { ro code object startup_core.o,
  554. ro code object system_core.o,
  555. ro code object startup.o,
  556. ro code object system.o,
  557. ro code object bsp_clocks.o,
  558. ro code object bsp_irq_core.o,
  559. ro code object bsp_irq.o,
  560. ro code object bsp_register_protection.o,
  561. ro code object r_ioport.o,
  562. ro code object bsp_cache.o,
  563. ro code section .intvec,
  564. ro code section .reset_handler,
  565. ro code section .warm_start,
  566. ro code,
  567. section .data,
  568. section __DLIB_PERTHREAD,
  569. section .rodata,
  570. section .version,
  571. section .data_noncache };
  572. do not initialize { section .noinit,
  573. section .bss,
  574. section .dmac_link_mode*,
  575. section .shared_noncache_buffer*,
  576. section .noncache_buffer*,
  577. rw section HEAP,
  578. rw section .stack*,
  579. rw section .sys_stack,
  580. rw section .svc_stack,
  581. rw section .irq_stack,
  582. rw section .fiq_stack,
  583. rw section .und_stack,
  584. rw section .abt_stack };
  585. place at address mem: __ICFEDIT_intvec_start__ { block VECTOR_WBLOCK };
  586. place in LDR_PARAM_region { readonly section .loader_param };
  587. place at start of S_LOADER_STACK_region { block LDR_PRG_RBLOCK };
  588. place in S_LOADER_STACK_region { section LDR_DATA_RBLOCK, block LDR_DATA_RBLOCK };
  589. place in S_intvec_region { block VECTOR_RBLOCK };
  590. place in ROM_region { block USER_PRG_RBLOCK, readonly };
  591. place in S_RAM_region { block USER_DATA_RBLOCK, block USER_DATA_NONCACHE_RBLOCK };
  592. place at start of D_LOADER_STACK_region { block LDR_PRG_WBLOCK };
  593. place in D_LOADER_STACK_region { section LDR_DATA_WBLOCK, block LDR_DATA_WBLOCK,
  594. section LDR_DATA_ZBLOCK, block LDR_DATA_ZBLOCK };
  595. place in D_LOADER_STACK_region { section SYS_STACK, block SYS_STACK,
  596. section SVC_STACK, block SVC_STACK,
  597. section IRQ_STACK, block IRQ_STACK,
  598. section FIQ_STACK, block FIQ_STACK,
  599. section UND_STACK, block UND_STACK,
  600. section ABT_STACK, block ABT_STACK };
  601. place in RAM_region { block USER_PRG_WBLOCK };
  602. place in RAM_region { readwrite, last block CSTACK };
  603. place in RAM_region { block USER_DATA_WBLOCK,
  604. block USER_DATA_ZBLOCK };
  605. place in RAM_region { section HEAP_BLOCK, block HEAP_BLOCK,
  606. section THREAD_STACK, block THREAD_STACK };
  607. place in DATA_NONCACHE_region { block USER_DATA_NONCACHE_WBLOCK };
  608. place in DMAC_LINK_MODE_region { block DMAC_LINK_MODE_ZBLOCK };
  609. place in SHARED_NONCACHE_BUFFER_region { block SHARED_NONCACHE_BUFFER_ZBLOCK };
  610. place in NONCACHE_BUFFER_region { block NONCACHE_BUFFER_ZBLOCK };
  611. place in ATCM_region { };
  612. place in BTCM_region { };
  613. place in SYSTEM_RAM_region { };
  614. place in SYSTEM_RAM_MIRROR_region { };
  615. place in XSPI0_CS0_MIRROR_region { };
  616. place in XSPI0_CS1_MIRROR_region { };
  617. place in XSPI1_CS0_MIRROR_region { };
  618. place in XSPI1_CS1_MIRROR_region { };
  619. place in CS0_MIRROR_region { };
  620. place in CS2_MIRROR_region { };
  621. place in CS3_MIRROR_region { };
  622. place in CS5_MIRROR_region { };
  623. place in XSPI0_CS0_region { };
  624. place in XSPI0_CS1_region { };
  625. place in XSPI1_CS0_region { };
  626. place in XSPI1_CS1_region { };
  627. place in CS0_region { };
  628. place in CS2_region { };
  629. place in CS3_region { };
  630. place in CS5_region { };