blob: 03385911275192fd67452018ff6b25ab143712ad (
plain) (
blame)
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
|
MEMORY
{
flash : org = 0x08000000, len = 256k
sram1 : org = 0x20000000, len = 48k
sram2 : org = 0x10000000, len = 16k
}
SECTIONS
{
/* This is where the code goes. */
. = ORIGIN(flash);
.text ALIGN(0x100) : {
*(.vectors); /* All .vector sections go here. */
*(.text); /* All .text sections go here. */
} >flash
.data : ALIGN(0x04) {
/* Data segment as defined in the flash. */
INIT_DATA_VALUES = LOADADDR(.data);
/* Data segment where it will be in memory. */
. = ALIGN(0x04);
DATA_SEGMENT_START = .;
*(.data);
DATA_SEGMENT_STOP = .;
INIT_ROUTINES_FLASH_START =
LOADADDR(.data) + (DATA_SEGMENT_STOP - DATA_SEGMENT_START);
INITS_START = .;
*(.init0);
INIT_0_END = LOADADDR(.data) + (. - INITS_START);
*(.init1);
INIT_1_END = LOADADDR(.data) + (. - INITS_START);
*(.init2);
INIT_2_END = LOADADDR(.data) + (. - INITS_START);
*(.init3);
INIT_3_END = LOADADDR(.data) + (. - INITS_START);
*(.init4);
INIT_4_END = LOADADDR(.data) + (. - INITS_START);
*(.init5);
INIT_5_END = LOADADDR(.data) + (. - INITS_START);
*(.init6);
INIT_6_END = LOADADDR(.data) + (. - INITS_START);
*(.init7);
INIT_7_END = LOADADDR(.data) + (. - INITS_START);
INITS_END = .;
INIT_ROUTINES_FLASH_STOP =
LOADADDR(.data) + (INITS_END - DATA_SEGMENT_START);
/* Align by 4 so we can optimize the copier to use uint32's. */
. = ALIGN(0x04);
*(.noinit);
} >sram1 AT>flash
. = ALIGN(0x04);
BSS_START = .;
.bss : {
*(.bss);
. = ALIGN(0x04);
} > sram1
BSS_END = .;
HEAP_START = .;
HEAP_STOP = ORIGIN(sram1) + LENGTH(sram1);
}
|