32 #include "derivative.h"
34 #if (defined(__ICCARM__))
35 #pragma section = ".data"
36 #pragma section = ".data_init"
37 #pragma section = ".bss"
58 void init_data_bss(
void)
64 extern uint32_t Image$$VECTOR_ROM$$Base[];
65 extern uint32_t Image$$VECTOR_RAM$$Base[];
66 extern uint32_t Image$$RW_m_data$$Base[];
68 #define __VECTOR_TABLE Image$$VECTOR_ROM$$Base
69 #define __VECTOR_RAM Image$$VECTOR_RAM$$Base
70 #define __RAM_VECTOR_TABLE_SIZE (((uint32_t)Image$$RW_m_data$$Base - (uint32_t)Image$$VECTOR_RAM$$Base))
71 #elif defined(__ICCARM__)
72 extern uint32_t __RAM_VECTOR_TABLE_SIZE[];
73 extern uint32_t __VECTOR_TABLE[];
74 extern uint32_t __VECTOR_RAM[];
75 #elif defined(__GNUC__)
76 extern uint32_t __VECTOR_TABLE[];
77 extern uint32_t __VECTOR_RAM[];
78 extern uint32_t __RAM_VECTOR_TABLE_SIZE_BYTES[];
79 uint32_t __RAM_VECTOR_TABLE_SIZE = (uint32_t)(__RAM_VECTOR_TABLE_SIZE_BYTES);
82 if (__VECTOR_RAM != __VECTOR_TABLE)
85 for (n = 0; n < ((uint32_t)__RAM_VECTOR_TABLE_SIZE)/
sizeof(uint32_t); n++)
87 __VECTOR_RAM[n] = __VECTOR_TABLE[n];
90 SCB->VTOR = (uint32_t)__VECTOR_RAM;
95 SCB->VTOR = (uint32_t)__VECTOR_TABLE;
98 #if !defined(__CC_ARM) && !defined(__ICCARM__)
102 uint8_t * data_ram, * data_rom, * data_rom_end;
103 uint8_t * bss_start, * bss_end;
106 #if defined(__GNUC__)
107 extern uint32_t __DATA_ROM[];
108 extern uint32_t __DATA_RAM[];
109 extern char __DATA_END[];
110 data_ram = (uint8_t *)__DATA_RAM;
111 data_rom = (uint8_t *)__DATA_ROM;
112 data_rom_end = (uint8_t *)__DATA_END;
113 n = data_rom_end - data_rom;
119 *data_ram++ = *data_rom++;
123 #if defined(__GNUC__)
124 extern char __START_BSS[];
125 extern char __END_BSS[];
126 bss_start = (uint8_t *)__START_BSS;
127 bss_end = (uint8_t *)__END_BSS;
131 n = bss_end - bss_start;