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>
This commit is contained in:
parent
4fdf795efa
commit
f046b50ca5
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -89,6 +89,7 @@ set(MICROPY_SOURCE_QSTR
|
|||
${MICROPY_SOURCE_SHARED}
|
||||
${MICROPY_SOURCE_LIB}
|
||||
${MICROPY_SOURCE_PORT}
|
||||
${MICROPY_SOURCE_BOARD}
|
||||
)
|
||||
|
||||
set(IDF_COMPONENTS
|
||||
|
@ -156,6 +157,7 @@ idf_component_register(
|
|||
${MICROPY_SOURCE_LIB}
|
||||
${MICROPY_SOURCE_DRIVERS}
|
||||
${MICROPY_SOURCE_PORT}
|
||||
${MICROPY_SOURCE_BOARD}
|
||||
INCLUDE_DIRS
|
||||
${MICROPY_INC_CORE}
|
||||
${MICROPY_INC_USERMOD}
|
||||
|
|
|
@ -308,3 +308,9 @@ typedef long mp_off_t;
|
|||
#ifndef MICROPY_HW_ENABLE_MDNS_RESPONDER
|
||||
#define MICROPY_HW_ENABLE_MDNS_RESPONDER (1)
|
||||
#endif
|
||||
|
||||
#ifndef MICROPY_BOARD_STARTUP
|
||||
#define MICROPY_BOARD_STARTUP boardctrl_startup
|
||||
#endif
|
||||
|
||||
void boardctrl_startup(void);
|
||||
|
|
Loading…
Reference in New Issue