-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathstm32f0.ld
134 lines (113 loc) · 4.02 KB
/
stm32f0.ld
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/* Memory Spaces Definitions */
ENTRY(Reset_Handler)
MEMORY {
FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 64K
RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 8K
}
/* highest address of the user mode stack */
_estack = 0x20002000;
/* Sections Definitions */
SECTIONS {
/* for Cortex devices, the beginning of the startup code is stored in the
.isr_vector section, which goes to FLASH */
.isr_vector : {
. = ALIGN(4);
KEEP(*(.isr_vector)) /* Startup code */
. = ALIGN(4);
} > FLASH
.ARM.exidx : {
__exidx_start = .;
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
__exidx_end = .;
} > FLASH
/* the program code is stored in the .text section, which goes to Flash */
.text : {
. = ALIGN(4);
*(.text) /* normal code */
*(.text.*) /* -ffunction-sections code */
*(.rodata) /* read-only data (constants) */
*(.rodata*) /* -fdata-sections read only data */
*(.glue_7) /* TBD - needed ? */
*(.glue_7t) /* TBD - needed ? */
/* Necessary KEEP sections
(see http://sourceware.org/ml/newlib/2005/msg00255.html) */
KEEP (*(.init))
KEEP (*(.fini))
. = ALIGN(4);
_etext = .;
/* This is used by the startup to initialize the .data section */
_sidata = _etext;
} > FLASH
/* This is the initialized data section
The program executes knowing that the data is in the RAM
but the loader puts the initial values in the FLASH (inidata).
It is one task of the startup to copy the initial values from FLASH to
RAM. */
.data : AT (_sidata) {
. = ALIGN(4);
/* This is used by the startup to initialize the .data section */
_sdata = . ;
_data = . ;
*(.data)
*(.data.*)
*(.RAMtext)
. = ALIGN(4);
/* This is used by the startup to initialize the .data section */
_edata = . ;
} > RAM
/* This is the uninitialized data section */
.bss : {
. = ALIGN(4);
/* This is used by the startup to initialize the .bss section */
_sbss = .;
_bss = .;
*(.bss)
*(.bss.*) /* patched by elias - allows the use of -fdata-sections */
*(COMMON)
. = ALIGN(4);
/* This is used by the startup to initialize the .bss section */
_ebss = . ;
} > RAM
PROVIDE (end = _ebss);
PROVIDE (_end = _ebss);
/* after that it's only debugging information. */
/* remove the debugging information from the standard libraries */
/DISCARD/ : {
libc.a (*)
libm.a (*)
libgcc.a (*)
}
/* Stabs debugging sections. */
.stab 0 : {*(.stab)}
.stabstr 0 : {*(.stabstr)}
.stab.excl 0 : {*(.stab.excl)}
.stab.exclstr 0 : {*(.stab.exclstr)}
.stab.index 0 : {*(.stab.index)}
.stab.indexstr 0 : {*(.stab.indexstr)}
.comment 0 : {*(.comment)}
/* DWARF debug sections.
Symbols in the DWARF debugging sections are relative to the beginning
of the section so we begin them at 0. */
/* DWARF 1 */
.debug 0 : {*(.debug)}
.line 0 : {*(.line)}
/* GNU DWARF 1 extensions */
.debug_srcinfo 0 : {*(.debug_srcinfo)}
.debug_sfnames 0 : {*(.debug_sfnames)}
/* DWARF 1.1 and DWARF 2 */
.debug_aranges 0 : {*(.debug_aranges)}
.debug_pubnames 0 : {*(.debug_pubnames)}
/* DWARF 2 */
.debug_info 0 : {*(.debug_info .gnu.linkonce.wi.*)}
.debug_abbrev 0 : {*(.debug_abbrev)}
.debug_line 0 : {*(.debug_line)}
.debug_frame 0 : {*(.debug_frame)}
.debug_str 0 : {*(.debug_str)}
.debug_loc 0 : {*(.debug_loc)}
.debug_macinfo 0 : {*(.debug_macinfo)}
/* SGI/MIPS DWARF 2 extensions */
.debug_weaknames 0 : {*(.debug_weaknames)}
.debug_funcnames 0 : {*(.debug_funcnames)}
.debug_typenames 0 : {*(.debug_typenames)}
.debug_varnames 0 : {*(.debug_varnames)}
}