fsp_xspi0_boot.icf 31 KB

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