summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ports/rp2/CMakeLists.txt2
-rw-r--r--ports/rp2/main.c13
-rw-r--r--ports/rp2/mpconfigport.h16
3 files changed, 31 insertions, 0 deletions
diff --git a/ports/rp2/CMakeLists.txt b/ports/rp2/CMakeLists.txt
index 904925ae3..19c7178fc 100644
--- a/ports/rp2/CMakeLists.txt
+++ b/ports/rp2/CMakeLists.txt
@@ -425,6 +425,7 @@ endif()
list(APPEND MICROPY_SOURCE_QSTR
${MICROPY_SOURCE_EXTMOD}
${MICROPY_SOURCE_USERMOD}
+ ${MICROPY_SOURCE_BOARD}
)
# Define mpy-cross flags
@@ -443,6 +444,7 @@ target_sources(${MICROPY_TARGET} PRIVATE
${MICROPY_SOURCE_LIB}
${MICROPY_SOURCE_DRIVERS}
${MICROPY_SOURCE_PORT}
+ ${MICROPY_SOURCE_BOARD}
)
target_link_libraries(${MICROPY_TARGET} micropy_lib_mbedtls)
diff --git a/ports/rp2/main.c b/ports/rp2/main.c
index 98417e8da..7fb4a6486 100644
--- a/ports/rp2/main.c
+++ b/ports/rp2/main.c
@@ -83,6 +83,9 @@ int main(int argc, char **argv) {
// Set the MCU frequency and as a side effect the peripheral clock to 48 MHz.
set_sys_clock_khz(125000, false);
+ // Hook for setting up anything that needs to be super early in the bootup process.
+ MICROPY_BOARD_STARTUP();
+
#if MICROPY_HW_ENABLE_UART_REPL
bi_decl(bi_program_feature("UART REPL"))
setup_default_uart();
@@ -152,6 +155,9 @@ int main(int argc, char **argv) {
}
#endif
+ // Hook for setting up anything that can wait until after other hardware features are initialised.
+ MICROPY_BOARD_EARLY_INIT();
+
for (;;) {
// Initialise MicroPython runtime.
@@ -213,6 +219,10 @@ int main(int argc, char **argv) {
soft_reset_exit:
mp_printf(MP_PYTHON_PRINTER, "MPY: soft reboot\n");
+
+ // Hook for resetting anything immediately following a soft reset command.
+ MICROPY_BOARD_START_SOFT_RESET();
+
#if MICROPY_PY_NETWORK
mod_network_deinit();
#endif
@@ -233,6 +243,9 @@ int main(int argc, char **argv) {
mp_usbd_deinit();
#endif
+ // Hook for resetting anything right at the end of a soft reset command.
+ MICROPY_BOARD_END_SOFT_RESET();
+
gc_sweep_all();
mp_deinit();
#if MICROPY_HW_ENABLE_UART_REPL
diff --git a/ports/rp2/mpconfigport.h b/ports/rp2/mpconfigport.h
index 49acafe23..b34b4fc09 100644
--- a/ports/rp2/mpconfigport.h
+++ b/ports/rp2/mpconfigport.h
@@ -283,3 +283,19 @@ extern void lwip_lock_release(void);
#define MICROPY_PY_BLUETOOTH_ENTER uint32_t atomic_state = 0;
#define MICROPY_PY_BLUETOOTH_EXIT (void)atomic_state;
#endif
+
+#ifndef MICROPY_BOARD_STARTUP
+#define MICROPY_BOARD_STARTUP()
+#endif
+
+#ifndef MICROPY_BOARD_EARLY_INIT
+#define MICROPY_BOARD_EARLY_INIT()
+#endif
+
+#ifndef MICROPY_BOARD_START_SOFT_RESET
+#define MICROPY_BOARD_START_SOFT_RESET()
+#endif
+
+#ifndef MICROPY_BOARD_END_SOFT_RESET
+#define MICROPY_BOARD_END_SOFT_RESET()
+#endif