diff options
| author | Damien George <damien@micropython.org> | 2022-06-16 11:05:26 +1000 |
|---|---|---|
| committer | Damien George <damien@micropython.org> | 2022-06-16 14:31:09 +1000 |
| commit | 096954337f4ae06edf9dbe8c7b8156dcbbafbdf6 (patch) | |
| tree | b3e856ccc60251b376f94dd65333ec93687bb689 | |
| parent | d75892c0b07e8561e58fa0fe3dffb1e4939ec0f5 (diff) | |
stm32/mboot: Only include UI code if at least one board LED is defined.
Otherwise the board must provide dummy definitions of MBOOT_LED1.
Signed-off-by: Damien George <damien@micropython.org>
| -rw-r--r-- | ports/stm32/mboot/mboot.h | 22 | ||||
| -rw-r--r-- | ports/stm32/mboot/ui.c | 4 |
2 files changed, 26 insertions, 0 deletions
diff --git a/ports/stm32/mboot/mboot.h b/ports/stm32/mboot/mboot.h index 208a80d57..d45f4c1ef 100644 --- a/ports/stm32/mboot/mboot.h +++ b/ports/stm32/mboot/mboot.h @@ -26,6 +26,7 @@ #ifndef MICROPY_INCLUDED_STM32_MBOOT_MBOOT_H #define MICROPY_INCLUDED_STM32_MBOOT_MBOOT_H +#include "py/mpconfig.h" #include "py/mphal.h" // Use this to tag global static data in RAM that doesn't need to be zeroed on startup @@ -38,6 +39,13 @@ #define NORETURN __attribute__((noreturn)) #define MP_ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0])) +// The default UI code in ui.c only works if there is at least one LED configured. +#if defined(MBOOT_LED1) || defined(MICROPY_HW_LED1) +#define MBOOT_ENABLE_DEFAULT_UI (1) +#else +#define MBOOT_ENABLE_DEFAULT_UI (0) +#endif + #ifndef MBOOT_BOARD_EARLY_INIT #define MBOOT_BOARD_EARLY_INIT(initial_r0) #endif @@ -47,15 +55,27 @@ #endif #ifndef MBOOT_BOARD_GET_RESET_MODE +#if MBOOT_ENABLE_DEFAULT_UI #define MBOOT_BOARD_GET_RESET_MODE(initial_r0) mboot_get_reset_mode_default() +#else +#define MBOOT_BOARD_GET_RESET_MODE(initial_r0) BOARDCTRL_RESET_MODE_NORMAL +#endif #endif #ifndef MBOOT_BOARD_STATE_CHANGE +#if MBOOT_ENABLE_DEFAULT_UI #define MBOOT_BOARD_STATE_CHANGE(state, arg) mboot_state_change_default((state), (arg)) +#else +#define MBOOT_BOARD_STATE_CHANGE(state, arg) +#endif #endif #ifndef MBOOT_BOARD_SYSTICK +#if MBOOT_ENABLE_DEFAULT_UI #define MBOOT_BOARD_SYSTICK() mboot_ui_systick() +#else +#define MBOOT_BOARD_SYSTICK() +#endif #endif #ifndef MBOOT_ADDRESS_SPACE_64BIT @@ -171,8 +191,10 @@ const uint8_t *elem_search(const uint8_t *elem, uint8_t elem_id); int fsload_process(void); static inline void mboot_entry_init_default(void) { + #if MBOOT_ENABLE_DEFAULT_UI // Init subsystems (mboot_get_reset_mode() may call these, calling them again is ok) led_init(); + #endif // set the system clock to be HSE SystemClock_Config(); diff --git a/ports/stm32/mboot/ui.c b/ports/stm32/mboot/ui.c index c1fea55da..15bf1ba3e 100644 --- a/ports/stm32/mboot/ui.c +++ b/ports/stm32/mboot/ui.c @@ -27,6 +27,8 @@ #include "mboot.h" #include "ports/stm32/boardctrl.h" +#if MBOOT_ENABLE_DEFAULT_UI + /******************************************************************************/ // LED @@ -253,3 +255,5 @@ void mboot_state_change_default(mboot_state_t state, uint32_t arg) { break; } } + +#endif // MBOOT_ENABLE_DEFAULT_UI |
