image2.icf 8.9 KB
Newer Older
F
flyingcys 已提交
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;