2 ** ###################################################################
\r
3 ** Processors: LPC51U68JBD48
\r
6 ** Compiler: IAR ANSI C/C++ Compiler for ARM
\r
7 ** Reference manual: LPC51U68 User manual User manual Rev. 1.0 13 Dec 2017
\r
8 ** Version: rev. 1.0, 2017-12-15
\r
12 ** Linker file for the IAR ANSI C/C++ Compiler for ARM
\r
14 ** Copyright 2016 Freescale Semiconductor, Inc.
\r
15 ** Copyright 2016-2018 NXP
\r
17 ** SPDX-License-Identifier: BSD-3-Clause
\r
19 ** http: www.nxp.com
\r
20 ** mail: support@nxp.com
\r
22 ** ###################################################################
\r
26 /* Stack and Heap Sizes */
\r
27 if (isdefinedsymbol(__stack_size__)) {
\r
28 define symbol __size_cstack__ = __stack_size__;
\r
30 define symbol __size_cstack__ = 0x0400;
\r
33 if (isdefinedsymbol(__heap_size__)) {
\r
34 define symbol __size_heap__ = __heap_size__;
\r
36 define symbol __size_heap__ = 0x0400;
\r
39 define symbol m_interrupts_start = 0x00000000;
\r
40 define symbol m_interrupts_end = 0x000000DF;
\r
42 define symbol m_text_start = 0x000000E0;
\r
43 define symbol m_text_end = 0x0003FFFF;
\r
45 define symbol m_sramx_start = 0x04000000;
\r
46 define symbol m_sramx_end = 0x04007FFF;
\r
48 define symbol m_data_start = 0x20000000;
\r
49 define symbol m_data_end = 0x2000FFFF - __size_cstack__ - 0x20;
\r
51 define symbol m_stack_start = 0x20010000 - __size_cstack__ - 0x20;
\r
52 define symbol m_stack_end = 0x2000FFFF;
\r
54 define symbol __crp_start__ = 0x000002FC;
\r
55 define symbol __crp_end__ = 0x000002FF;
\r
57 define symbol __ram_iap_start__ = 0x2000FFE0;
\r
58 define symbol __ram_iap_end__ = 0x2000FFFF;
\r
60 define memory mem with size = 4G;
\r
62 define region TEXT_region = mem:[from m_interrupts_start to m_interrupts_end]
\r
63 | mem:[from m_text_start to m_text_end]
\r
64 - mem:[from __crp_start__ to __crp_end__];
\r
65 define region DATA_region = mem:[from m_sramx_start to m_sramx_end]
\r
66 | mem:[from m_data_start to m_data_end];
\r
67 define region CSTACK_region = mem:[from m_stack_start to m_stack_end]
\r
68 - mem:[from __ram_iap_start__ to __ram_iap_end__];
\r
69 define region CRP_region = mem:[from __crp_start__ to __crp_end__];
\r
71 define block CSTACK with alignment = 8, size = __size_cstack__ { };
\r
72 define block HEAP with alignment = 8, size = __size_heap__ { };
\r
73 define block RW { readwrite };
\r
74 define block ZI { zi };
\r
76 initialize by copy { readwrite, section .textrw };
\r
78 if (isdefinedsymbol(__USE_DLIB_PERTHREAD))
\r
80 /* Required in a multi-threaded application */
\r
81 initialize by copy with packing = none { section __DLIB_PERTHREAD };
\r
84 do not initialize { section .noinit };
\r
86 place at address mem: m_interrupts_start { readonly section .intvec };
\r
87 place in TEXT_region { readonly };
\r
88 place in DATA_region { block RW };
\r
89 place in DATA_region { block ZI };
\r
90 place in DATA_region { last block HEAP };
\r
91 place in CSTACK_region { block CSTACK };
\r
92 place in CRP_region { section .crp };
\r