mirror of https://github.com/ARMmbed/mbed-os.git
IAR - Initialize RTOS before standard library
Initialize the RTOS before initializing the standard library. This allows C++ constructors to be called in a well defined thread context.
parent
fa8dc642ba
commit
02ba7ea857
|
@ -568,6 +568,15 @@ extern void __iar_dynamic_initialization(void);
|
||||||
extern void mbed_sdk_init(void);
|
extern void mbed_sdk_init(void);
|
||||||
extern void exit(int arg);
|
extern void exit(int arg);
|
||||||
|
|
||||||
|
static uint8_t low_level_init_needed;
|
||||||
|
|
||||||
|
void pre_main(void) {
|
||||||
|
if (low_level_init_needed) {
|
||||||
|
__iar_dynamic_initialization();
|
||||||
|
}
|
||||||
|
main();
|
||||||
|
}
|
||||||
|
|
||||||
#pragma required=__vector_table
|
#pragma required=__vector_table
|
||||||
void __iar_program_start( void )
|
void __iar_program_start( void )
|
||||||
{
|
{
|
||||||
|
@ -575,22 +584,24 @@ void __iar_program_start( void )
|
||||||
__iar_init_core();
|
__iar_init_core();
|
||||||
__iar_init_vfp();
|
__iar_init_vfp();
|
||||||
|
|
||||||
int a;
|
uint8_t low_level_init_needed_local;
|
||||||
|
|
||||||
if (__low_level_init() != 0) {
|
low_level_init_needed_local = __low_level_init();
|
||||||
|
if (low_level_init_needed_local) {
|
||||||
__iar_data_init3();
|
__iar_data_init3();
|
||||||
mbed_sdk_init();
|
mbed_sdk_init();
|
||||||
__iar_dynamic_initialization();
|
|
||||||
}
|
}
|
||||||
|
/* Store in a global variable after RAM has been initialized */
|
||||||
|
low_level_init_needed = low_level_init_needed_local;
|
||||||
#endif
|
#endif
|
||||||
osKernelInitialize();
|
osKernelInitialize();
|
||||||
#ifdef __MBED_CMSIS_RTOS_CM
|
#ifdef __MBED_CMSIS_RTOS_CM
|
||||||
set_main_stack();
|
set_main_stack();
|
||||||
#endif
|
#endif
|
||||||
osThreadCreate(&os_thread_def_main, NULL);
|
osThreadCreate(&os_thread_def_main, NULL);
|
||||||
a = osKernelStart();
|
osKernelStart();
|
||||||
exit(a);
|
/* osKernelStart should not return */
|
||||||
|
while (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue