summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authoriabdalkader <i.abdalkader@gmail.com>2022-04-27 11:11:24 +0200
committerDamien George <damien@micropython.org>2022-06-17 13:38:21 +1000
commitf522aabab2c78697d5f178d7e60454781a7d1dbc (patch)
tree2e52c4807c5075bc51f9574ee7d4f6b691a049af
parentd8f56695322da9201d837c6348683fe3ee81b0af (diff)
downloadmicropython-f522aabab2c78697d5f178d7e60454781a7d1dbc.tar.gz
micropython-f522aabab2c78697d5f178d7e60454781a7d1dbc.zip
rp2/modmachine: Allow boards to provide custom bootloader code.
And expose the machine_bootloader() C function so it can be used elsewhere.
-rw-r--r--ports/rp2/modmachine.c8
-rw-r--r--ports/rp2/modmachine.h1
-rw-r--r--ports/rp2/mpconfigport.h4
3 files changed, 10 insertions, 3 deletions
diff --git a/ports/rp2/modmachine.c b/ports/rp2/modmachine.c
index fbaf29ee16..b988afdf30 100644
--- a/ports/rp2/modmachine.c
+++ b/ports/rp2/modmachine.c
@@ -81,11 +81,13 @@ STATIC mp_obj_t machine_reset_cause(void) {
}
STATIC MP_DEFINE_CONST_FUN_OBJ_0(machine_reset_cause_obj, machine_reset_cause);
-STATIC mp_obj_t machine_bootloader(void) {
+NORETURN mp_obj_t machine_bootloader(size_t n_args, const mp_obj_t *args) {
+ MICROPY_BOARD_ENTER_BOOTLOADER(n_args, args);
reset_usb_boot(0, 0);
- return mp_const_none;
+ for (;;) {
+ }
}
-MP_DEFINE_CONST_FUN_OBJ_0(machine_bootloader_obj, machine_bootloader);
+STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(machine_bootloader_obj, 0, 1, machine_bootloader);
STATIC mp_obj_t machine_freq(size_t n_args, const mp_obj_t *args) {
if (n_args == 0) {
diff --git a/ports/rp2/modmachine.h b/ports/rp2/modmachine.h
index 0635ff2487..503c1ca86c 100644
--- a/ports/rp2/modmachine.h
+++ b/ports/rp2/modmachine.h
@@ -18,5 +18,6 @@ void machine_pin_deinit(void);
void machine_i2s_init0(void);
struct _machine_spi_obj_t *spi_from_mp_obj(mp_obj_t o);
+NORETURN mp_obj_t machine_bootloader(size_t n_args, const mp_obj_t *args);
#endif // MICROPY_INCLUDED_RP2_MODMACHINE_H
diff --git a/ports/rp2/mpconfigport.h b/ports/rp2/mpconfigport.h
index d681a04af8..62388c6bce 100644
--- a/ports/rp2/mpconfigport.h
+++ b/ports/rp2/mpconfigport.h
@@ -130,6 +130,10 @@
#define mp_type_textio mp_type_vfs_lfs2_textio
#endif
+#ifndef MICROPY_BOARD_ENTER_BOOTLOADER
+#define MICROPY_BOARD_ENTER_BOOTLOADER(nargs, args)
+#endif
+
#if MICROPY_PY_NETWORK
#define NETWORK_ROOT_POINTERS mp_obj_list_t mod_network_nic_list;
#else