102 const uint8_t * data_rom, * data_rom_end;
103 const uint8_t * code_rom, * code_rom_end;
104 const uint8_t * bss_end;
108 #if defined(__ARMCC_VERSION)
109 extern uint32_t __RAM_VECTOR_TABLE_SIZE;
110 extern uint32_t __VECTOR_ROM;
113 extern uint32_t __RAM_VECTOR_TABLE_SIZE[];
114 extern uint32_t __VECTOR_TABLE[];
115 extern uint32_t __VECTOR_RAM[];
118 #if defined(__ICCARM__)
120 data_ram = __section_begin(
".data");
121 data_rom = __section_begin(
".data_init");
122 data_rom_end = __section_end(
".data_init");
125 #pragma section = "__CODE_ROM"
126 #pragma section = "__CODE_RAM"
127 code_ram = __section_begin(
"__CODE_RAM");
128 code_rom = __section_begin(
"__CODE_ROM");
129 code_rom_end = __section_end(
"__CODE_ROM");
132 bss_start = __section_begin(
".bss");
133 bss_end = __section_end(
".bss");
134 #elif defined (__ARMCC_VERSION)
135 extern uint32_t __DATA_ROM;
136 extern uint32_t __DATA_RAM;
137 extern uint32_t __DATA_END;
139 extern uint32_t __CODE_RAM;
140 extern uint32_t __CODE_ROM;
141 extern uint32_t __CODE_END;
143 extern uint32_t __BSS_START;
144 extern uint32_t __BSS_END;
148 data_ram = (uint8_t *)__DATA_RAM;
149 data_rom = (uint8_t *)__DATA_ROM;
150 data_rom_end = (uint8_t *)__DATA_END;
152 code_ram = (uint8_t *)__CODE_RAM;
153 code_rom = (uint8_t *)__CODE_ROM;
154 code_rom_end = (uint8_t *)__CODE_END;
156 bss_start = (uint8_t *)__BSS_START;
157 bss_end = (uint8_t *)__BSS_END;
160 uint8_t * vector_table_size = (uint8_t *)__RAM_VECTOR_TABLE_SIZE;
161 uint32_t * vector_rom = (uint32_t *)__VECTOR_ROM;
162 uint32_t * vector_ram = (uint32_t *)__VECTOR_RAM;
164 extern uint32_t __DATA_ROM[];
165 extern uint32_t __DATA_RAM[];
166 extern uint32_t __DATA_END[];
168 extern uint32_t __CODE_RAM[];
169 extern uint32_t __CODE_ROM[];
170 extern uint32_t __CODE_END[];
172 extern uint32_t __BSS_START[];
173 extern uint32_t __BSS_END[];
176 data_ram = (uint8_t *)__DATA_RAM;
177 data_rom = (uint8_t *)__DATA_ROM;
178 data_rom_end = (uint8_t *)__DATA_END;
180 code_ram = (uint8_t *)__CODE_RAM;
181 code_rom = (uint8_t *)__CODE_ROM;
182 code_rom_end = (uint8_t *)__CODE_END;
184 bss_start = (uint8_t *)__BSS_START;
185 bss_end = (uint8_t *)__BSS_END;
190 while (data_rom_end != data_rom)
192 *data_ram = *data_rom;
198 while (code_rom_end != code_rom)
200 *code_ram = *code_rom;
206 while(bss_end != bss_start)
213 #if defined (__ARMCC_VERSION)
216 for (n = 0; n < (((uint32_t)(vector_table_size))/
sizeof(uint32_t)); n++)
218 vector_ram[n] = vector_rom[n];
221 *
s_vectors[coreId] = (uint32_t) __VECTOR_RAM;
224 if (__VECTOR_RAM != __VECTOR_TABLE)
227 for (n = 0; n < (((uint32_t)__RAM_VECTOR_TABLE_SIZE)/
sizeof(uint32_t)); n++)
229 __VECTOR_RAM[n] = __VECTOR_TABLE[n];
232 *
s_vectors[coreId] = (uint32_t)__VECTOR_RAM;
237 *
s_vectors[coreId] = (uint32_t)__VECTOR_TABLE;
uint32_t __VECTOR_RAM[((uint32_t)(FEATURE_INTERRUPT_IRQ_MAX))+16U+1U]
Declaration of vector table. FEATURE_INTERRUPT_IRQ_MAX is the highest interrupt request number...
void init_data_bss(void)
Make necessary initializations for RAM.
static volatile uint32_t * s_vectors[(1u)]
#define FEATURE_INTERRUPT_INT_VECTORS
#define GET_CORE_ID()
Get Core ID.