summaryrefslogtreecommitdiff
path: root/bsp
diff options
context:
space:
mode:
authorguozhanxin <[email protected]>2021-03-24 18:02:11 +0800
committerguozhanxin <[email protected]>2021-03-24 18:03:19 +0800
commiteee1453c808074bb18c072032ee7e3feddd1679a (patch)
tree5263a047d50638a8a4ba3a17545bed48751dd4e7 /bsp
parent50bf4902636eda180d33f12a52bb21a7d603bdf8 (diff)
[Fix] the problem of startup failure.
Diffstat (limited to 'bsp')
-rw-r--r--bsp/raspberry-pico/drivers/board.c18
-rw-r--r--bsp/raspberry-pico/libraries/pico-sdk/src/rp2_common/pico_runtime/runtime.c14
2 files changed, 16 insertions, 16 deletions
diff --git a/bsp/raspberry-pico/drivers/board.c b/bsp/raspberry-pico/drivers/board.c
index af8bcb4f80..1a4639095e 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 98104db73a..af1bdd2b3a 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) {