LPC55S06_flash.icf 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. /*
  2. ** ###################################################################
  3. ** Processors: LPC55S06JBD64
  4. ** LPC55S06JHI48
  5. **
  6. ** Compiler: IAR ANSI C/C++ Compiler for ARM
  7. ** Reference manual: LPC55S0x/LPC550x User manual Rev.0.3 14 August 2020
  8. ** Version: rev. 1.0, 2020-04-09
  9. ** Build: b220622
  10. **
  11. ** Abstract:
  12. ** Linker file for the IAR ANSI C/C++ Compiler for ARM
  13. **
  14. ** Copyright 2016 Freescale Semiconductor, Inc.
  15. ** Copyright 2016-2022 NXP
  16. ** All rights reserved.
  17. **
  18. ** SPDX-License-Identifier: BSD-3-Clause
  19. **
  20. ** http: www.nxp.com
  21. ** mail: support@nxp.com
  22. **
  23. ** ###################################################################
  24. */
  25. /* USB BDT size */
  26. define symbol usb_bdt_size = 0x0;
  27. /* Stack and Heap Sizes */
  28. if (isdefinedsymbol(__stack_size__)) {
  29. define symbol __size_cstack__ = __stack_size__;
  30. } else {
  31. define symbol __size_cstack__ = 0x0400;
  32. }
  33. if (isdefinedsymbol(__heap_size__)) {
  34. define symbol __size_heap__ = __heap_size__;
  35. } else {
  36. define symbol __size_heap__ = 0x0400;
  37. }
  38. define symbol m_interrupts_start = 0x00000000;
  39. define symbol m_interrupts_end = 0x000001FF;
  40. define symbol m_text_start = 0x00000200;
  41. define symbol m_text_end = 0x0003CFFF;
  42. define symbol m_data_start = 0x20000000;
  43. define symbol m_data_end = 0x2000FFFF;
  44. define symbol m_sramx_start = 0x04000000;
  45. define symbol m_sramx_end = 0x04003FFF;
  46. define symbol m_sram3_start = 0x20010000;
  47. define symbol m_sram3_end = 0x20013FFF;
  48. define memory mem with size = 4G;
  49. define region TEXT_region = mem:[from m_interrupts_start to m_interrupts_end]
  50. | mem:[from m_text_start to m_text_end];
  51. define region DATA_region = mem:[from m_data_start to m_data_end-__size_cstack__];
  52. define region CSTACK_region = mem:[from m_data_end-__size_cstack__+1 to m_data_end];
  53. if (isdefinedsymbol(__use_shmem__)) {
  54. define region rpmsg_sh_mem_region = mem:[from rpmsg_sh_mem_start to rpmsg_sh_mem_end];
  55. }
  56. define block CSTACK with alignment = 8, size = __size_cstack__ { };
  57. define block HEAP with alignment = 8, size = __size_heap__ { };
  58. define block RW { readwrite };
  59. define block ZI { zi };
  60. initialize by copy { readwrite, section .textrw };
  61. if (isdefinedsymbol(__USE_DLIB_PERTHREAD))
  62. {
  63. /* Required in a multi-threaded application */
  64. initialize by copy with packing = none { section __DLIB_PERTHREAD };
  65. }
  66. if (isdefinedsymbol(__use_shmem__)) {
  67. do not initialize { section rpmsg_sh_mem_section };
  68. }
  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 CSTACK_region { block CSTACK };