summaryrefslogtreecommitdiff
path: root/bsp/amebaz/image2.icf
blob: 5d8336184781b42d4153d808288c06920f1dfe56 (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
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
/*###ICF### Section handled by ICF editor, don't touch! ****/
/*-Editor annotation file-*/
/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */
/*-Specials-*/
//define symbol __ICFEDIT_intvec_start__ = 0x00000000;
/**/
/**/
include "rom_symbol_v01_iar.icf";
/****************************************
 * Memory Regions                   *
 ****************************************/
define symbol __ICFEDIT_region_ROM_start__          = 0x00000000;
define symbol __ICFEDIT_region_ROM_end__            = 0x0007FFFF;
define symbol __ICFEDIT_region_ROMBSS_RAM_start__       = 0x10000000;
define symbol __ICFEDIT_region_ROMBSS_RAM_end__         = 0x10001FFF;
define symbol __ICFEDIT_region_BOOTLOADER_RAM_start__   = 0x10002000;
define symbol __ICFEDIT_region_BOOTLOADER_RAM_end__     = 0x10004FFF;
define symbol __ICFEDIT_region_BD_RAM_start__       = 0x10005000;
define symbol __ICFEDIT_region_BD_RAM_end__         = 0x1002FFFF;
define symbol __ICFEDIT_region_MSP_RAM_start__      = 0x1003E000;
define symbol __ICFEDIT_region_MSP_RAM_end__        = 0x1003EFFF;
define symbol __ICFEDIT_region_RDP_RAM_start__      = 0x1003F000;
define symbol __ICFEDIT_region_RDP_RAM_end__        = 0x1003FFEF;
define symbol __ICFEDIT_region_IMG2_TEMP_start__    = 0x10006000;
define symbol __ICFEDIT_region_IMG2_TEMP_end__      = 0x1000BFFF;
define symbol __ICFEDIT_region_XIP_BOOT_start__     = 0x08000000+0x20;
define symbol __ICFEDIT_region_XIP_BOOT_end__       = 0x08003FFF;
define symbol __ICFEDIT_region_XIP_OTA1_start__     = 0x0800B000+0x20;
define symbol __ICFEDIT_region_XIP_OTA1_end__       = 0x080FFFFF;
/****************************************
 * Sizes                   *
 ****************************************/
/*define symbol __ICFEDIT_size_cstack__   = 0x400;*/
define symbol __ICFEDIT_size_heap__     = 0x000;
/**** End of ICF editor section. ###ICF###*/
define memory mem with size = 4G;
define region ROM_region   = mem:[from __ICFEDIT_region_ROM_start__   to __ICFEDIT_region_ROM_end__];
define region ROM_BSS_region   = mem:[from __ICFEDIT_region_ROMBSS_RAM_start__   to __ICFEDIT_region_ROMBSS_RAM_end__];
define region BOOT_RAM_region   = mem:[from __ICFEDIT_region_BOOTLOADER_RAM_start__   to __ICFEDIT_region_BOOTLOADER_RAM_end__];
define region BD_RAM_region   = mem:[from __ICFEDIT_region_BD_RAM_start__   to __ICFEDIT_region_BD_RAM_end__];
define region IMG2_TEMP_region   = mem:[from __ICFEDIT_region_IMG2_TEMP_start__   to __ICFEDIT_region_IMG2_TEMP_end__];
define region XIP_BOOT_region   = mem:[from __ICFEDIT_region_XIP_BOOT_start__   to __ICFEDIT_region_XIP_BOOT_end__];
define region XIP_OTA1_region   = mem:[from __ICFEDIT_region_XIP_OTA1_start__   to __ICFEDIT_region_XIP_OTA1_end__];
define region RDP_RAM_region   = mem:[from __ICFEDIT_region_RDP_RAM_start__   to __ICFEDIT_region_RDP_RAM_end__];
/*define block CSTACK    with alignment = 8, size = __ICFEDIT_size_cstack__   { };*/
define block HEAP      with alignment = 8, size = __ICFEDIT_size_heap__     { };
//initialize by copy { readwrite };
//initialize by copy with packing = none { section __DLIB_PERTHREAD }; // Required in a multi-threaded application
//do not initialize  { section * };
//place at address mem:__ICFEDIT_intvec_start__ { readonly section .vectors_table };
//
/****************************************
 * ROM Section config                   *
 ****************************************/
keep { section FSymTab };
keep { section VSymTab };
keep { section .rti_fn* };
keep { section .rom.text };
keep { section .rom.rodata };
place at start of ROM_region   { readonly, section .rom.text, section .rom.rodata};
/****************************************
 * ROM BSS Section config                *
 ****************************************/
keep { section .ram_vector_table1 };
keep { section .ram_vector_table2 };
keep { section .ram_vector_table3 };
keep { section .hal.rom.bss* };
keep { section .wlan_ram_map* };
keep { section .libc.ram.bss* };
keep { section .ssl_ram_map* };
define block .hal.rom.bss with fixed order{         section .ram_vector_table1,
                                                section .ram_vector_table2,
                                                section .ram_vector_table3,
                                                section .hal.rom.bss*,
                                                section .wlan_ram_map*,
                                                section .libc.ram.bss*,
                                                section .ssl_ram_map*,
                                      };
define block ROM_BSS with fixed order { block .hal.rom.bss};
place at start of ROM_BSS_region  { readwrite,
                                      block ROM_BSS,
                                      };
/****************************************
 * BOOT RAM Section config                *
 ****************************************/
keep { section .image1.entry.data* };
keep { section .image1.validate.rodata* };
define block .ram_image1.entry with fixed order{section .image1.entry.data*,
                        section .image1.validate.rodata*,
                        };
keep { section .boot.ram.text* };
keep { section .boot.rodata* };
define block .ram_image1.text with fixed order{section .boot.ram.text*,
                        section .boot.rodata*,
                        };
keep { section .boot.ram.data* };
define block .ram_image1.data with fixed order{section .boot.ram.data*,
                        };
keep { section .boot.ram.bss* };
define block .ram_image1.bss with fixed order{section .boot.ram.bss*,
                        };
define block IMAGE1 with fixed order { block .ram_image1.entry, block .ram_image1.text, block .ram_image1.data, block .ram_image1.bss};
place at start of BOOT_RAM_region   { readwrite,
                                    block IMAGE1,
                                  };
/****************************************
 * BD RAM Section config                *
 ****************************************/
keep { section .image2.entry.data* };
keep { section .image2.validate.rodata* };
define block .ram_image2.entry with fixed order{ section .image2.entry.data*,
                        section .image2.validate.rodata*,
                        };
define block SHT$$PREINIT_ARRAY { preinit_array };
define block SHT$$INIT_ARRAY { init_array };
define block CPP_INIT with fixed order { block SHT$$PREINIT_ARRAY,
                    block SHT$$INIT_ARRAY };
define block .ram.data with fixed order{ section .data*,
                     section DATA,
                     section .iar.init_table,
                     section __DLIB_PERTHREAD,
                     block CPP_INIT,
                     section .mdns.data,
                     section .mdns.text
                    };
define block .ram.text with fixed order{ section .image2.ram.text*,
                    };
define block IMAGE2 with fixed order {  block .ram_image2.entry,
                    block .ram.data,
                    block .ram.text,
                    };
define block .ram_image2.bss with fixed order{ section .bss*,
                                        section COMMON,
                                      };
define block .ram_image2.skb.bss with fixed order{ section .bdsram.data* };
define block .ram_heap.data with fixed order{ section .bfsram.data* };
place in BD_RAM_region  { readwrite,
                    block IMAGE2,
                    block .ram_image2.bss,
                    block .ram_image2.skb.bss,
                    block .ram_heap.data,
                    section .heap.stdlib,
                    last block HEAP,
                    };
/****************************************
 * XIP BOOT Section config                *
 ****************************************/
keep { section .flashboot.text* };
define block .xip_image1.text with fixed order{ section .flashboot.text* };
define block Bootloader with fixed order { section LOADER };
place at start of XIP_BOOT_region   {   block Bootloader,
                    readwrite,
                     block .xip_image1.text };
/****************************************
 * XIP OTA1 Section config                *
 ****************************************/
keep { section FSymTab };
keep { section VSymTab };
keep { section .rti_fn* };
define block .xip_image2.text with fixed order{ section .img2_custom_signature*,
                        section .text*,
                        section .rodata*,
                        section .debug_trace,
                        section CODE,
                        section Veneer, // object startup.o,
                        section FSymTab,
                        section VSymTab,
                        section .rti_fn*,
                        };
place at start of  XIP_OTA1_region   {  readwrite,
                      block .xip_image2.text };
/****************************************
 * RDP Section config                    *
 ****************************************/
keep {  section .rdp.ram.text* };
keep {  section .rdp.ram.data* };
define block .RDP_RAM with fixed order {
    section .rdp.ram.text*,
    section .rdp.ram.data* };
place at start of  RDP_RAM_region{
    readwrite,
    block .RDP_RAM };
define exported symbol __ram_start_table_start__= 0x10002000;   // use in rom
define exported symbol __image1_validate_code__= 0x10002018;    // needed by ram code
define exported symbol __rom_top_4k_start_= 0x1003F000; // needed by ram code
define exported symbol __flash_text_start__= 0x0800b020; // needed by ram code
define exported symbol boot_export_symbol = 0x10002020;