kopia lustrzana https://github.com/espressif/esp-idf
Merge branch 'feature/bootloader_config' into 'master'
Add bootloader menuconfig entries Adds log verbosity & ANSI coloring to menuconfig, also some cleanup in cpu_start.c See merge request !79pull/21/head
commit
b6b83c33be
|
@ -0,0 +1,33 @@
|
|||
menu "Bootloader config"
|
||||
|
||||
choice BOOTLOADER_LOG_LEVEL
|
||||
bool "Bootloader log verbosity"
|
||||
default BOOTLOADER_LOG_LEVEL_NOTICE
|
||||
help
|
||||
Specify how much output to see in the bootloader logs.
|
||||
|
||||
Note that if MTDO is HIGH on reset, all early boot output
|
||||
(including bootloader logs) are suppressed.
|
||||
config BOOTLOADER_LOG_LEVEL_NONE
|
||||
bool "No output"
|
||||
config BOOTLOADER_LOG_LEVEL_ERROR
|
||||
bool "Error"
|
||||
config BOOTLOADER_LOG_LEVEL_WARN
|
||||
bool "Warning"
|
||||
config BOOTLOADER_LOG_LEVEL_INFO
|
||||
bool "Info"
|
||||
config BOOTLOADER_LOG_LEVEL_NOTICE
|
||||
bool "Notice"
|
||||
config BOOTLOADER_LOG_LEVEL_DEBUG
|
||||
bool "Debug"
|
||||
endchoice
|
||||
|
||||
config BOOTLOADER_LOG_COLORS
|
||||
bool "Use ANSI terminal colors in bootloader log output"
|
||||
default "y"
|
||||
help
|
||||
Enable ANSI terminal color codes in bootloader output.
|
||||
|
||||
In order to view these, your terminal program must support ANSI color codes.
|
||||
|
||||
endmenu
|
|
@ -8,6 +8,7 @@
|
|||
# basically runs Make in the src/ directory but it needs to zero some variables
|
||||
# the ESP-IDF project.mk makefile exports first, to not let them interfere.
|
||||
#
|
||||
ifeq ("$(IS_BOOTLOADER_BUILD)","")
|
||||
|
||||
BOOTLOADER_COMPONENT_PATH := $(COMPONENT_PATH)
|
||||
BOOTLOADER_BUILD_DIR=$(BUILD_DIR_BASE)/bootloader
|
||||
|
@ -47,3 +48,5 @@ $(COMPONENT_PATH)/src/sdkconfig: $(PROJECT_PATH)/sdkconfig
|
|||
# bootloader-flash calls flash in the bootloader dummy project
|
||||
bootloader-flash: $(BOOTLOADER_BIN)
|
||||
$(MAKE) -C $(BOOTLOADER_COMPONENT_PATH)/src flash MAKEFLAGS= V=$(V)
|
||||
|
||||
endif
|
||||
|
|
|
@ -4,7 +4,12 @@
|
|||
#
|
||||
|
||||
PROJECT_NAME := bootloader
|
||||
COMPONENTS := esptool_py
|
||||
COMPONENTS := esptool_py bootloader
|
||||
|
||||
# The bootloader pseudo-component is also included in this build, for its Kconfig.projbuild to be included.
|
||||
#
|
||||
# IS_BOOTLOADER_BUILD tells the component Makefile.projbuild to be a no-op
|
||||
IS_BOOTLOADER_BUILD := 1
|
||||
|
||||
#We cannot include the esp32 component directly but we need its includes. This is fixed by
|
||||
#adding it in the main/Makefile directory.
|
||||
|
|
|
@ -19,39 +19,64 @@ extern "C"
|
|||
{
|
||||
#endif
|
||||
|
||||
#include "sdkconfig.h"
|
||||
|
||||
#define BOOT_LOG_LEVEL_NONE (0)
|
||||
#define BOOT_LOG_LEVEL_ERROR (1)
|
||||
#define BOOT_LOG_LEVEL_WARN (2)
|
||||
#define BOOT_LOG_LEVEL_INFO (3)
|
||||
#define BOOT_LOG_LEVEL_NOTICE (4)
|
||||
#define BOOT_LOG_LEVEL_DEBUG (5)
|
||||
|
||||
#define Black 0;30
|
||||
#define Red 0;31
|
||||
#define Green 0;32
|
||||
#define Brown 0;33
|
||||
#define Blue 0;34
|
||||
#define Purple 0;35
|
||||
#define Cyan 0;36
|
||||
#define Black "30"
|
||||
#define Red "31"
|
||||
#define Green "32"
|
||||
#define Brown "33"
|
||||
#define Blue "34"
|
||||
#define Purple "35"
|
||||
#define Cyan "36"
|
||||
|
||||
// TODO: move BOOT_LOG_LEVEL into menuconfig
|
||||
//#define BOOT_LOG_LEVEL BOOT_LOG_LEVEL_ERROR
|
||||
#define BOOT_LOG_LEVEL BOOT_LOG_LEVEL_NOTICE
|
||||
#if CONFIG_BOOTLOADER_LOG_COLORS
|
||||
#define LOG_COLOR(COLOR) "\033[0;"COLOR"m"
|
||||
#define LOG_BOLD(COLOR) "\033[1;"COLOR"m"
|
||||
#define LOG_RESET_COLOR "\033[0m"
|
||||
#else
|
||||
#define LOG_COLOR(...)
|
||||
#define LOG_BOLD(...)
|
||||
#define LOG_RESET_COLOR ""
|
||||
#endif
|
||||
|
||||
// BOOT_LOG_LEVEL defined by make menuconfig
|
||||
#if CONFIG_BOOTLOADER_LOG_LEVEL_NONE
|
||||
#define BOOT_LOG_LEVEL BOOT_LOG_LEVEL_NONE
|
||||
#elif CONFIG_BOOTLOADER_LOG_LEVEL_ERROR
|
||||
#define BOOT_LOG_LEVEL BOOT_LOG_LEVEL_ERROR
|
||||
#elif CONFIG_BOOTLOADER_LOG_LEVEL_WARN
|
||||
#define BOOT_LOG_LEVEL BOOT_LOG_LEVEL_WARN
|
||||
#elif CONFIG_BOOTLOADER_LOG_LEVEL_INFO
|
||||
#define BOOT_LOG_LEVEL BOOT_LOG_LEVEL_INFO
|
||||
#elif CONFIG_BOOTLOADER_LOG_LEVEL_NOTICE
|
||||
#define BOOT_LOG_LEVEL BOOT_LOG_LEVEL_NOTICE
|
||||
#elif CONFIG_BOOTLOADER_LOG_LEVEL_DEBUG
|
||||
#define BOOT_LOG_LEVEL BOOT_LOG_LEVEL_DEBUG
|
||||
#else
|
||||
#error "No bootloader log level set in menuconfig!"
|
||||
#endif
|
||||
|
||||
//printf("\033[0;36m[NOTICE][%s][%s][%d]\n" format "\r\n", __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__);
|
||||
#define log_notice(format, ...) \
|
||||
do{\
|
||||
if(BOOT_LOG_LEVEL >= BOOT_LOG_LEVEL_NOTICE){\
|
||||
ets_printf("\033[0;36m" format "\r\n", ##__VA_ARGS__);\
|
||||
ets_printf("\033[0m"); \
|
||||
ets_printf(LOG_COLOR(Cyan) format "\r\n", ##__VA_ARGS__); \
|
||||
ets_printf(LOG_RESET_COLOR); \
|
||||
}\
|
||||
}while(0)
|
||||
|
||||
#define log_info(format, ...) \
|
||||
do{\
|
||||
if(BOOT_LOG_LEVEL >= BOOT_LOG_LEVEL_INFO){\
|
||||
ets_printf("\033[1;36m" format "\r\n", ##__VA_ARGS__);\
|
||||
ets_printf("\033[0m"); \
|
||||
ets_printf(LOG_BOLD(Cyan) format "\r\n", ##__VA_ARGS__); \
|
||||
ets_printf(LOG_RESET_COLOR); \
|
||||
}\
|
||||
}while(0)
|
||||
|
||||
|
@ -59,8 +84,8 @@ extern "C"
|
|||
#define log_error(format, ...) \
|
||||
do{\
|
||||
if(BOOT_LOG_LEVEL >= BOOT_LOG_LEVEL_ERROR){\
|
||||
ets_printf("\033[0;31m[ERROR][%s][%s][%d]\n" format "\r\n", __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__);\
|
||||
ets_printf("\033[0m"); \
|
||||
ets_printf(LOG_COLOR(Red) "[ERROR][%s][%s][%d]\n" format "\r\n", __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__); \
|
||||
ets_printf(LOG_RESET_COLOR); \
|
||||
}\
|
||||
}while(0)
|
||||
|
||||
|
@ -68,8 +93,8 @@ extern "C"
|
|||
#define log_warn(format, ...) \
|
||||
do{\
|
||||
if(BOOT_LOG_LEVEL >= BOOT_LOG_LEVEL_WARN){\
|
||||
ets_printf("\033[1;33m[WARN][%s][%s][%d]\n" format "\r\n", __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__);\
|
||||
ets_printf("\033[0m"); \
|
||||
ets_printf(LOG_BOLD(Brown) "[WARN][%s][%s][%d]\n" format "\r\n", __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__); \
|
||||
ets_printf(LOG_RESET_COLOR); \
|
||||
}\
|
||||
}while(0)
|
||||
|
||||
|
@ -77,8 +102,8 @@ extern "C"
|
|||
#define log_debug(format, ...) \
|
||||
do{\
|
||||
if(BOOT_LOG_LEVEL >= BOOT_LOG_LEVEL_DEBUG){\
|
||||
ets_printf("\033[1;32m[DEBUG][%s][%s][%d]\n" format "\r\n", __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__); \
|
||||
ets_printf("\033[0m"); \
|
||||
ets_printf(LOG_BOLD(Green) "[DEBUG][%s][%s][%d]\n" format "\r\n", __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__); \
|
||||
ets_printf(LOG_RESET_COLOR); \
|
||||
}\
|
||||
}while(0)
|
||||
|
||||
|
@ -86,4 +111,4 @@ extern "C"
|
|||
}
|
||||
#endif
|
||||
|
||||
#endif /* __BOOT_LOGGING_H__ */
|
||||
#endif /* __BOOT_LOGGING_H__ */
|
||||
|
|
|
@ -276,8 +276,6 @@ void bootloader_main()
|
|||
{
|
||||
//Run start routine.
|
||||
/*ESP32 2ND bootload start here*/
|
||||
|
||||
|
||||
log_info( "\n" );
|
||||
log_info( "**************************************" );
|
||||
log_info( "* hello espressif ESP32! *" );
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
#include "esp_err.h"
|
||||
|
||||
#include "rom/ets_sys.h"
|
||||
#include "rom/uart.h"
|
||||
|
||||
#include "soc/dport_reg.h"
|
||||
#include "soc/io_mux_reg.h"
|
||||
|
@ -61,11 +62,6 @@ We arrive here after the bootloader finished loading the program from flash. The
|
|||
flash cache is down and the app CPU is in reset. We do have a stack, so we can do the initialization in C.
|
||||
*/
|
||||
|
||||
void Uart_Init(int no);
|
||||
void uartAttach();
|
||||
void ets_set_appcpu_boot_addr(uint32_t ent);
|
||||
int ets_getAppEntry();
|
||||
|
||||
static bool app_cpu_started = false;
|
||||
|
||||
void IRAM_ATTR call_user_start_cpu0() {
|
||||
|
|
Ładowanie…
Reference in New Issue