fsp_xspi0_boot.icf 30 KB

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