123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- #include "Std_Types.h"
-
- typedef struct
- {
- uint8 * ram_start;
- uint8 * rom_start;
- uint8 * rom_end;
- } Sys_CopyLayoutType;
- typedef struct
- {
- uint8 * ram_start;
- uint8 * ram_end;
- } Sys_ZeroLayoutType;
- extern uint32 __INIT_TABLE[];
- extern uint32 __ZERO_TABLE[];
- #if (defined(__ARMCC_VERSION))
- extern uint32 __VECTOR_RAM;
- #else
- extern uint32 __VECTOR_RAM[];
- #endif
- void init_data_bss(void);
- void init_data_bss(void)
- {
- const Sys_CopyLayoutType * copy_layout;
- const Sys_ZeroLayoutType * zero_layout;
- const uint8 * rom;
- uint8 * ram;
- uint32 len = 0U;
- uint32 size = 0U;
- uint32 i = 0U;
- uint32 j = 0U;
- const uint32 * initTable_Ptr = (uint32 *)__INIT_TABLE;
- const uint32 * zeroTable_Ptr = (uint32*)__ZERO_TABLE;
-
- len = *initTable_Ptr;
- initTable_Ptr++;
- copy_layout = (const Sys_CopyLayoutType *)initTable_Ptr;
- for(i = 0; i < len; i++)
- {
- rom = copy_layout[i].rom_start;
- ram = copy_layout[i].ram_start;
- size = (uint32)copy_layout[i].rom_end - (uint32)copy_layout[i].rom_start;
- for(j = 0UL; j < size; j++)
- {
- ram[j] = rom[j];
- }
- }
-
-
- len = *zeroTable_Ptr;
- zeroTable_Ptr++;
- zero_layout = (const Sys_ZeroLayoutType *)zeroTable_Ptr;
- for(i = 0; i < len; i++)
- {
- ram = zero_layout[i].ram_start;
- size = (uint32)zero_layout[i].ram_end - (uint32)zero_layout[i].ram_start;
- for(j = 0UL; j < size; j++)
- {
- ram[j] = 0U;
- }
- }
- }
|