link_ram.icf 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. /*
  2. ** ###################################################################
  3. ** Processors: MIMXRT1062CVJ5A
  4. ** MIMXRT1062CVL5A
  5. ** MIMXRT1062DVJ6A
  6. ** MIMXRT1062DVL6A
  7. ** MIMXRT1062DVN6B
  8. ** MIMXRT1062XVN5B
  9. **
  10. ** Compiler: IAR ANSI C/C++ Compiler for ARM
  11. ** Reference manual: IMXRT1060RM Rev.3, 07/2021 | IMXRT106XSRM Rev.0
  12. ** Version: rev. 0.2, 2022-03-25
  13. ** Build: b220401
  14. **
  15. ** Abstract:
  16. ** Linker file for the IAR ANSI C/C++ Compiler for ARM
  17. **
  18. ** Copyright 2016 Freescale Semiconductor, Inc.
  19. ** Copyright 2016-2022 NXP
  20. ** All rights reserved.
  21. **
  22. ** SPDX-License-Identifier: BSD-3-Clause
  23. **
  24. ** http: www.nxp.com
  25. ** mail: support@nxp.com
  26. **
  27. ** ###################################################################
  28. */
  29. define symbol m_interrupts_start = 0x00000000;
  30. define symbol m_interrupts_end = 0x000003FF;
  31. define symbol m_text_start = 0x00000400;
  32. define symbol m_text_end = 0x0001FFFF;
  33. define symbol m_data_start = 0x20000000;
  34. define symbol m_data_end = 0x2001FFFF;
  35. define symbol m_data2_start = 0x20200000;
  36. define symbol m_data2_end = 0x202BFFFF;
  37. /* Sizes */
  38. if (isdefinedsymbol(__stack_size__)) {
  39. define symbol __size_cstack__ = __stack_size__;
  40. } else {
  41. define symbol __size_cstack__ = 0x0400;
  42. }
  43. if (isdefinedsymbol(__heap_size__)) {
  44. define symbol __size_heap__ = __heap_size__;
  45. } else {
  46. define symbol __size_heap__ = 0x2000;
  47. }
  48. define exported symbol __NCACHE_REGION_START = m_data2_start;
  49. define exported symbol __NCACHE_REGION_SIZE = 0x0;
  50. define exported symbol __VECTOR_TABLE = m_interrupts_start;
  51. define exported symbol __VECTOR_RAM = m_interrupts_start;
  52. define exported symbol __RAM_VECTOR_TABLE_SIZE = 0x0;
  53. define exported symbol __RTT_HEAP_END = m_data2_end;
  54. define memory mem with size = 4G;
  55. define region TEXT_region = mem:[from m_interrupts_start to m_interrupts_end]
  56. | mem:[from m_text_start to m_text_end];
  57. define region DATA_region = mem:[from m_data_start to m_data_end-__size_cstack__];
  58. define region DATA2_region = mem:[from m_data2_start to m_data2_end];
  59. define region CSTACK_region = mem:[from m_data_end-__size_cstack__+1 to m_data_end];
  60. define block CSTACK with alignment = 8, size = __size_cstack__ { };
  61. define block HEAP with alignment = 8, size = __size_heap__ { };
  62. define block RW { readwrite };
  63. define block ZI { zi };
  64. define block NCACHE_VAR { section NonCacheable , section NonCacheable.init };
  65. define block QACCESS_CODE { section CodeQuickAccess };
  66. define block QACCESS_DATA { section DataQuickAccess };
  67. initialize by copy { readwrite, section .textrw, section CodeQuickAccess, section DataQuickAccess };
  68. do not initialize { section .noinit };
  69. place at address mem: m_interrupts_start { readonly section .intvec };
  70. place in TEXT_region { readonly };
  71. place in DATA_region { block RW };
  72. place in DATA_region { block ZI };
  73. place in DATA_region { last block HEAP };
  74. place in DATA_region { block NCACHE_VAR };
  75. place in TEXT_region { block QACCESS_CODE };
  76. place in DATA_region { block QACCESS_DATA };
  77. place in CSTACK_region { block CSTACK };