blob: b71a805db0f4086fb61a97a3de8779128e558414 (
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
|
#define STACK_TOP 0x20005000
extern unsigned int _BSS_START;
extern unsigned int _BSS_END;
extern unsigned int _DATA_ROM_START;
extern unsigned int _DATA_RAM_START;
extern unsigned int _DATA_RAM_END;
void startup();
void main();
// Define the vector table
unsigned int * myvectors[2]
__attribute__ ((section("vectors")))= {
(unsigned int *) STACK_TOP, // stack pointer
(unsigned int *) startup // code entry point
};
void startup()
{
/* Set memory in bss segment to zeros */
unsigned int * bss_start_p = &_BSS_START;
unsigned int * bss_end_p = &_BSS_END;
while(bss_start_p != bss_end_p)
{
*bss_start_p = 0;
bss_start_p++;
}
/* Copy memory in data segment from its position
* in the flash image to its position in the
* read/write memory */
unsigned int * data_rom_start_p = &_DATA_ROM_START;
unsigned int * data_ram_start_p = &_DATA_RAM_START;
unsigned int * data_ram_end_p = &_DATA_RAM_END;
while(data_ram_start_p != data_ram_end_p)
{
*data_ram_start_p = *data_rom_start_p;
data_ram_start_p++;
data_rom_start_p++;
}
/* Now we are ready to start the main function */
main();
}
|