1
2
3MEMORY
4{
5  ROM (rx)   : ORIGIN = 0x80000000, LENGTH = 0x00200000
6  L_TTB (rw) : ORIGIN = 0x80500000, LENGTH = 0x00005000
7  RAM (rwx)  : ORIGIN = 0x80200000, LENGTH = 0x00300000
8}
9
10ENTRY(Reset_Handler)
11
12SECTIONS
13{
14    .text :
15    {
16
17        Image$$VECTORS$$Base = .;
18        * (RESET)
19        KEEP(*(.isr_vector))
20        Image$$VECTORS$$Limit = .;
21
22        *(SVC_TABLE)
23        *(.text*)
24
25        KEEP(*(.init))
26        KEEP(*(.fini))
27
28        /* .ctors */
29        *crtbegin.o(.ctors)
30        *crtbegin?.o(.ctors)
31        *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
32        *(SORT(.ctors.*))
33        *(.ctors)
34
35        /* .dtors */
36        *crtbegin.o(.dtors)
37        *crtbegin?.o(.dtors)
38        *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
39        *(SORT(.dtors.*))
40        *(.dtors)
41
42        Image$$RO_DATA$$Base = .;
43        *(.rodata*)
44        Image$$RO_DATA$$Limit = .;
45
46        KEEP(*(.eh_frame*))
47    } > ROM
48
49    .ARM.extab :
50    {
51        *(.ARM.extab* .gnu.linkonce.armextab.*)
52    } > ROM
53
54    __exidx_start = .;
55    .ARM.exidx :
56    {
57        *(.ARM.exidx* .gnu.linkonce.armexidx.*)
58    } > ROM
59    __exidx_end = .;
60
61
62    .copy.table :
63    {
64        . = ALIGN(4);
65        __copy_table_start__ = .;
66        LONG (__etext)
67        LONG (__data_start__)
68        LONG (__data_end__ - __data_start__)
69        __copy_table_end__ = .;
70    } > ROM
71
72    .zero.table :
73    {
74        . = ALIGN(4);
75        __zero_table_start__ = .;
76        LONG (__bss_start__)
77        LONG (__bss_end__ - __bss_start__)
78        __zero_table_end__ = .;
79    } > ROM
80
81    __etext = .;
82
83    .ttb :
84    {
85        Image$$TTB$$ZI$$Base = .;
86        . += 0x00005000;
87        Image$$TTB$$ZI$$Limit = .;
88    } > L_TTB
89
90    .data : AT (__etext)
91    {
92        Image$$RW_DATA$$Base = .;
93        __data_start__ = .;
94        *(vtable)
95        *(.data*)
96        Image$$RW_DATA$$Limit = .;
97
98        . = ALIGN(4);
99        /* preinit data */
100        PROVIDE (__preinit_array_start = .);
101        KEEP(*(.preinit_array))
102        PROVIDE (__preinit_array_end = .);
103
104        . = ALIGN(4);
105        /* init data */
106        PROVIDE (__init_array_start = .);
107        KEEP(*(SORT(.init_array.*)))
108        KEEP(*(.init_array))
109        PROVIDE (__init_array_end = .);
110
111
112        . = ALIGN(4);
113        /* finit data */
114        PROVIDE (__fini_array_start = .);
115        KEEP(*(SORT(.fini_array.*)))
116        KEEP(*(.fini_array))
117        PROVIDE (__fini_array_end = .);
118
119        . = ALIGN(4);
120        /* All data end */
121        __data_end__ = .;
122
123    } > RAM
124
125
126    .bss ALIGN(0x400):
127    {
128        Image$$ZI_DATA$$Base = .;
129        __bss_start__ = .;
130        *(.bss*)
131        *(COMMON)
132        __bss_end__ = .;
133        Image$$ZI_DATA$$Limit = .;
134        __end__ = .;
135        end = __end__;
136    } > RAM
137
138    .heap (NOLOAD):
139    {
140        . = ALIGN(8);
141        Image$$HEAP$$ZI$$Base = .;
142        . += 0x00100000;
143        Image$$HEAP$$ZI$$Limit = .;
144        __HeapLimit = .;
145    } > RAM
146
147    .stack (NOLOAD):
148    {
149        . = ORIGIN(RAM) + LENGTH(RAM) - 0x00002000 - 0x00000100 - 0x00000100 - 0x00000100 - 0x00000100 - 0x00000100;
150        . = ALIGN(8);
151
152        __StackTop = .;
153        Image$$SYS_STACK$$ZI$$Base = .;
154        . += 0x00002000;
155        Image$$SYS_STACK$$ZI$$Limit = .;
156        __stack = .;
157
158        Image$$FIQ_STACK$$ZI$$Base = .;
159        . += 0x00000100;
160        Image$$FIQ_STACK$$ZI$$Limit = .;
161
162        Image$$IRQ_STACK$$ZI$$Base = .;
163        . += 0x00000100;
164        Image$$IRQ_STACK$$ZI$$Limit = .;
165
166        Image$$SVC_STACK$$ZI$$Base = .;
167        . += 0x00000100;
168        Image$$SVC_STACK$$ZI$$Limit = .;
169
170        Image$$ABT_STACK$$ZI$$Base = .;
171        . += 0x00000100;
172        Image$$ABT_STACK$$ZI$$Limit = .;
173
174        Image$$UND_STACK$$ZI$$Base = .;
175        . += 0x00000100;
176        Image$$UND_STACK$$ZI$$Limit = .;
177
178    } > RAM
179}
180