void __Init_Data(void) { unsigned long *pulSrc, *pulDest; pulSrc = &_sidata; /* init HW (with clocks) before data/bss initalising ? */ for(pulDest = &_sdata; pulDest < &_edata; ) *(pulDest++) = *(pulSrc++); for(pulDest = &_sbss; pulDest < &_ebss; ) *(pulDest++) = 0; /* Init hardware before calling constructors */ init_HW(); #if 0 /* External memory bus initialisation */ SystemInit_ExtMemCtl(); #endif /* Call constructors */ unsigned long *ctors; for(ctors = &__ctors_start__; ctors < &__ctors_end__; ) ((void(*)(void))(*ctors++))(); }
Sensorik* Sensorik::getInstance() { mutex->lock(); if (!init_HW_Done()) { init_HW(); } if (instance == NULL) { instance = new Sensorik(); } mutex->unlock(); return instance; }
void Reset_Handler(void) { memcpy(&_sdata, &_sidata, &_edata - &_sdata); // copy initialized variables memset(&_sbss, 0, &_ebss - &_sbss); // zero-fill uninitialized variables init_HW(); // initialize hardware before calling constructors // call constructors for(unsigned long *ctors = &__ctors_start__; ctors < &__ctors_end__; ) ((void(*)(void))(*ctors++))(); main(); }
// returns the only running instance of Petri_Bsp Petri_Conveyor* Petri_Conveyor::getInstance() { mutex->lock(); if (!init_HW_Done()) { init_HW(); } if (!petri) { petri = new Petri_Conveyor(); } mutex->unlock(); return petri; }
void __Init_Data(void) { unsigned long *pulSrc, *pulDest; pulSrc = &_sidata; for(pulDest = &_sdata; pulDest < &_edata; ) *(pulDest++) = *(pulSrc++); for(pulDest = &_sbss; pulDest < &_ebss; ) *(pulDest++) = 0; /* Init hardware before calling constructors */ init_HW(); /* Call constructors */ unsigned long *ctors; for(ctors = &__ctors_start__; ctors < &__ctors_end__; ) ((void(*)(void))(*ctors++))(); }