diff options
author | Trygve Laugstøl <trygvis@inamo.no> | 2015-12-18 23:06:46 +0100 |
---|---|---|
committer | Trygve Laugstøl <trygvis@inamo.no> | 2015-12-18 23:06:46 +0100 |
commit | 6d27f1755b782340d1c55c3f8f01a193514a3607 (patch) | |
tree | 40751b5d17d54ab69b2aaa44715d3889306a54b8 /init_high.cpp | |
parent | 62766425fe3a552440228c78f13a2c1dd62e228b (diff) | |
download | stm32f103-playground-6d27f1755b782340d1c55c3f8f01a193514a3607.tar.gz stm32f103-playground-6d27f1755b782340d1c55c3f8f01a193514a3607.tar.bz2 stm32f103-playground-6d27f1755b782340d1c55c3f8f01a193514a3607.tar.xz stm32f103-playground-6d27f1755b782340d1c55c3f8f01a193514a3607.zip |
o Splitting out init from main.
Diffstat (limited to 'init_high.cpp')
-rw-r--r-- | init_high.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/init_high.cpp b/init_high.cpp new file mode 100644 index 0000000..235a649 --- /dev/null +++ b/init_high.cpp @@ -0,0 +1,27 @@ +#include <stdint.h> + +extern uint32_t _copy_data_load, _copy_data_store, _copy_data_store_end; +extern uint32_t _bss_start, _bss_end; + +extern int main(); +extern "C" int init_high(); + +int init_high() { + // Copy data from flash to ram + uint32_t *src = &_copy_data_load; + uint32_t *dest = &_copy_data_store; + uint32_t *end = &_copy_data_store_end; + + while (dest <= end) { + *dest++ = *src++; + } + + // Clear the BSS segment + dest = &_bss_start; + end = &_bss_end; + while (dest <= end) { + *dest++ = 0; + } + + return main(); +} |