diff --git a/bsp/raspberry-pico/drivers/board.c b/bsp/raspberry-pico/drivers/board.c index af8bcb4f80546ce943b311441e266f8ae83568ba..1a4639095e28621af97a52d7acb1a8ea596b5b48 100644 --- a/bsp/raspberry-pico/drivers/board.c +++ b/bsp/raspberry-pico/drivers/board.c @@ -45,11 +45,25 @@ uint32_t systick_config(uint32_t ticks) void rt_hw_board_init() { + rt_system_heap_init(heap, (uint8_t *)heap + sizeof(heap)); + + alarm_pool_init_default(); + + // Start and end points of the constructor list, + // defined by the linker script. + extern void (*__init_array_start)(); + extern void (*__init_array_end)(); + + // Call each function in the list. + // We have to take the address of the symbols, as __init_array_start *is* + // the first function pointer, not the address of it. + for (void (**p)() = &__init_array_start; p < &__init_array_end; ++p) { + (*p)(); + } + /* Configure the SysTick */ systick_config(frequency_count_khz(CLOCKS_FC0_SRC_VALUE_ROSC_CLKSRC)*10000/RT_TICK_PER_SECOND); - rt_system_heap_init(heap, (uint8_t *)heap + sizeof(heap)); - stdio_init_all(); rt_hw_uart_init(); diff --git a/bsp/raspberry-pico/libraries/pico-sdk/src/rp2_common/pico_runtime/runtime.c b/bsp/raspberry-pico/libraries/pico-sdk/src/rp2_common/pico_runtime/runtime.c index 98104db73a97499a8ba7ff2a11ce7c97b4f8ef60..af1bdd2b3add8c3eacb03b0596961825d85f509a 100644 --- a/bsp/raspberry-pico/libraries/pico-sdk/src/rp2_common/pico_runtime/runtime.c +++ b/bsp/raspberry-pico/libraries/pico-sdk/src/rp2_common/pico_runtime/runtime.c @@ -136,20 +136,6 @@ void runtime_init(void) { spin_locks_reset(); irq_init_priorities(); - alarm_pool_init_default(); - - // Start and end points of the constructor list, - // defined by the linker script. - extern void (*__init_array_start)(); - extern void (*__init_array_end)(); - - // Call each function in the list. - // We have to take the address of the symbols, as __init_array_start *is* - // the first function pointer, not the address of it. - for (void (**p)() = &__init_array_start; p < &__init_array_end; ++p) { - (*p)(); - } - } void _exit(int status) {