Move libc init into first task

pull/37/head
sunnycase 2019-01-24 21:02:53 +08:00
parent f41338aedd
commit eeab052f71
2 changed files with 21 additions and 19 deletions

View File

@ -32,8 +32,6 @@ extern uint8_t __bss_end[];
extern uint8_t _tls_data[];
extern int main(int argc, char *argv[]);
extern void __libc_init_array(void);
extern void __libc_fini_array(void);
extern int os_entry(int (*user_main)(int, char **));
static void setup_clocks()
@ -51,10 +49,6 @@ void _init_bsp()
{
/* Initialize bss data to 0 */
init_bss();
/* Register finalization function */
atexit(__libc_fini_array);
/* Init libc array for C++ */
__libc_init_array();
/* Init FPIOA */
fpioa_init();
bsp_pin_setup();

View File

@ -28,13 +28,34 @@ typedef struct
int ret;
} main_thunk_param_t;
extern void __libc_init_array(void);
extern void __libc_fini_array(void);
static StaticTask_t s_idle_task;
static StackType_t s_idle_task_stack[configMINIMAL_STACK_SIZE];
void start_scheduler(int core_id);
int __attribute__((weak)) configure_fpioa()
{
return 0;
}
static void main_thunk(void *p)
{
/* Register finalization function */
atexit(__libc_fini_array);
/* Init libc array for C++ */
__libc_init_array();
clear_csr(mie, MIP_MTIP);
clint_ipi_enable();
set_csr(mstatus, MSTATUS_MIE);
install_hal();
install_drivers();
configure_fpioa();
main_thunk_param_t *param = (main_thunk_param_t *)p;
param->ret = param->user_main(0, 0);
}
@ -48,21 +69,8 @@ static void os_entry_core1()
vTaskStartScheduler();
}
int __attribute__((weak)) configure_fpioa()
{
return 0;
}
int os_entry(int (*user_main)(int, char **))
{
clear_csr(mie, MIP_MTIP);
clint_ipi_enable();
set_csr(mstatus, MSTATUS_MIE);
install_hal();
install_drivers();
configure_fpioa();
TaskHandle_t mainTask;
main_thunk_param_t param = {};
param.user_main = user_main;