diff options
| author | Damien George <damien@micropython.org> | 2021-09-22 00:00:26 +1000 |
|---|---|---|
| committer | Damien George <damien@micropython.org> | 2021-09-24 12:23:14 +1000 |
| commit | f046b50ca591e16f78ffaae3c45a19afaeba839b (patch) | |
| tree | 6768809b885d6b5118e95cf84cbe392d1b4878eb /ports/esp32/main.c | |
| parent | 4fdf795efa4eca3a9f8166e33b991a762569ae20 (diff) | |
esp32/main: Add option for a board to hook code into startup sequence.
To do this the board must define MICROPY_BOARD_STARTUP, set
MICROPY_SOURCE_BOARD then define the new start-up code.
For example, in mpconfigboard.h:
#define MICROPY_BOARD_STARTUP board_startup
void board_startup(void);
in mpconfigboard.cmake:
set(MICROPY_SOURCE_BOARD
${MICROPY_BOARD_DIR}/board.c
)
and in a new board.c file in the board directory:
#include "py/mpconfig.h"
void board_startup(void) {
boardctrl_startup();
// extra custom startup
}
This follows stm32's boardctrl facilities.
Signed-off-by: Damien George <damien@micropython.org>
Diffstat (limited to 'ports/esp32/main.c')
| -rw-r--r-- | ports/esp32/main.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/ports/esp32/main.c b/ports/esp32/main.c index 2ba613668..ca0ab1488 100644 --- a/ports/esp32/main.c +++ b/ports/esp32/main.c @@ -202,12 +202,20 @@ soft_reset_exit: goto soft_reset; } -void app_main(void) { +void boardctrl_startup(void) { esp_err_t ret = nvs_flash_init(); if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) { nvs_flash_erase(); nvs_flash_init(); } +} + +void app_main(void) { + // Hook for a board to run code at start up. + // This defaults to initialising NVS. + MICROPY_BOARD_STARTUP(); + + // Create and transfer control to the MicroPython task. xTaskCreatePinnedToCore(mp_task, "mp_task", MP_TASK_STACK_SIZE / sizeof(StackType_t), NULL, MP_TASK_PRIORITY, &mp_main_task_handle, MP_TASK_COREID); } |
