/* * Copyright (c) 2024 Raspberry Pi (Trading) Ltd. * * SPDX-License-Identifier: BSD-3-Clause */ #ifndef _PICO_RUNTIME_INIT_H #define _PICO_RUNTIME_INIT_H #include "pico.h" #include "pico/runtime.h" #ifdef __cplusplus extern "C" { #endif /** * The runtime initialization is registration based. * * For each step of the initialization there is a 5 digit ordinal which indicates * the ordering (alphabetic increasing sort of the 5 digits) of the steps. * * e.g. for the step "bootrom_reset", there is: * * \code * #ifndef PICO_RUNTIME_INIT_BOOTROM_RESET * #define PICO_RUNTIME_INIT_BOOTROM_RESET "00050" * #endif * \endcode * * The user can override the order if they wish, by redefining PICO_RUNTIME_INIT_BOOTROM_RESET * * For each step, the automatic initialization may be skipped by defining (in this case) * PICO_RUNTIME_SKIP_INIT_BOOTROM_RESET = 1. The user can then choose to either omit the step * completely or register their own replacement initialization. * * The default method used to perform the initialization is provided, in case the user * wishes to call it manually; in this case: * * \code * void runtime_init_bootrom_reset(void); * \endcode * * If PICO_RUNTIME_NO_INIT_BOOTOROM_RESET define is set (NO vs SKIP above), then the function * is not defined, allowing the user to provide a replacement (and also avoiding * cases where the default implementation won't compile due to missing dependencies) */ // must have no dependency on any other initialization code #define PICO_RUNTIME_INIT_EARLIEST "00001" #define PICO_RUNTIME_INIT_LATEST "99999" // not supported on host at, (needs custom section) #define PICO_RUNTIME_NO_INIT_MUTEX 1 #ifdef __cplusplus } #endif #endif