blob: d1522d7cfa0ac2b4571127154cbd713b1d669ef4 (
plain)
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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
|
/* Define the flash max size */
__max_flash_size = 1020k;
__data_ram_size = 16k;
__stack_ram_size = 4k;
__comm_ram_size = 42k;
__heap_ram_size = 52k;
__ble_ram_size = 10k;
__base = 0x10000000;
__bram_vma = 0x11000;
__heap_vma = __bram_vma + __ble_ram_size;
__data_vma = __heap_vma + __heap_ram_size;
__stack_vma = __data_vma + __data_ram_size;
__comm_vma = __stack_vma + __stack_ram_size;
__ram1_vma = 0x50000;
MEMORY
{
init : org = __base, len = 512
flash(rx) : org = __base + 512, len = __max_flash_size
comm(rx) : org = __comm_vma, len = __comm_ram_size
bram : org = __bram_vma, len = __ble_ram_size
data : org = __data_vma, len = __data_ram_size
stack : org = __stack_vma, len = __stack_ram_size
heap : org = __heap_vma, len = __heap_ram_size
ram1(rx) : org = __ram1_vma, len = 0x7a00
}
SECTIONS
{
.init : {
*(.reset)
} > init
.ram1 __ram1_vma : {
/* section information for initial */
. = ALIGN(4);
__rt_init_start = .;
KEEP(*(SORT(.rti_fn*)))
__rt_init_end = .;
. = ALIGN(4);
PROVIDE(__ctors_start__ = .);
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array*))
PROVIDE(__ctors_end__ = .);
/* section information for at server */
. = ALIGN(4);
__rtatcmdtab_start = .;
KEEP(*(RtAtCmdTab))
__rtatcmdtab_end = .;
. = ALIGN(4);
*save-restore.o (.text* .rodata*)
*libcpu*cpu*context_gcc.o (.text* .rodata*)
*libcpu*cpu*interrupt.o (.text* .rodata*)
*libcpu**.o (.rodata*)
*components*drivers*misc*pin.o(.text*)
*components*drivers*misc*adc.o(.text*)
. = ALIGN(4);
*src*ipc.o (.text* .rodata*)
*src*irq.o (.text* .rodata*)
*src*object.o (.text* .rodata*)
*src*thread.o (.text* .rodata*)
*src*timer.o (.text* .rodata*)
*src*mempool.o (.text* .rodata*)
*src*scheduler.o (.text* .rodata*)
*src*clock.o (.text* .rodata*)
*src*kservice.o (.text* .rodata*)
*src*device.o (.text* .rodata*)
*src*idle.o (.text* .rodata*)
*src*components.o (.text* .rodata*)
} > ram1 AT > flash
.comm __comm_vma : {
. = ALIGN(4);
KEEP(*(.vector))
*(.irq.cache)
*(.irq*)
*ab32vg1_hal**.o (.text* .rodata*)
*drv_gpio.o (.text* .rodata*)
*drv_usart.o (.rodata*)
EXCLUDE_FILE(*lib_a**.o *unwind*.o) *(.srodata*)
*(.rela*)
*(.data*)
*(.sdata*)
*(.com_text*)
*(.text.ble_mqueue_get)
*(.text.ble_mqueue_put)
*(.text.os_memblock_get)
} > comm AT > flash
.bram __bram_vma (NOLOAD) : {
*(.btmem.bthw)
*(.btmem*)
} > bram
.bss (NOLOAD):
{
__bss_start = .;
*(COMMON)
*(.bss)
*(.sbss)
*(.buf*)
__bss_end = .;
} > data
__bss_size = __bss_end - __bss_start;
.stack (NOLOAD) : {
__irq_stack_start = .;
. = __stack_ram_size;
__irq_stack = .;
} > stack
__irq_stack_size = __irq_stack - __irq_stack_start;
.heap (NOLOAD) : {
__heap_start = .;
. = __heap_ram_size;
__heap_end = .;
} > heap
.flash : {
. = ALIGN(4);
__fsymtab_start = .;
KEEP(*(FSymTab))
__fsymtab_end = .;
. = ALIGN(4);
__vsymtab_start = .;
KEEP(*(VSymTab))
__vsymtab_end = .;
. = ALIGN(4);
*(.text*)
*(.rodata*)
*(.srodata*)
. = ALIGN(512);
} > flash
}
/* Calc the lma */
__bank_size = SIZEOF(.flash);
__comm_lma = LOADADDR(.comm);
__comm_size = SIZEOF(.comm);
__ram1_lma = LOADADDR(.ram1);
__ram1_size = SIZEOF(.ram1);
|