bootloader: Add bootloader Kconfig
Allow debug level & colour highlighting to be configured
This commit is contained in:
parent
4598f9fc88
commit
3061ae40c0
5 changed files with 88 additions and 24 deletions
33
components/bootloader/Kconfig.projbuild
Normal file
33
components/bootloader/Kconfig.projbuild
Normal file
|
@ -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
|
# 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.
|
# the ESP-IDF project.mk makefile exports first, to not let them interfere.
|
||||||
#
|
#
|
||||||
|
ifeq ("$(IS_BOOTLOADER_BUILD)","")
|
||||||
|
|
||||||
BOOTLOADER_COMPONENT_PATH := $(COMPONENT_PATH)
|
BOOTLOADER_COMPONENT_PATH := $(COMPONENT_PATH)
|
||||||
BOOTLOADER_BUILD_DIR=$(BUILD_DIR_BASE)/bootloader
|
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 calls flash in the bootloader dummy project
|
||||||
bootloader-flash: $(BOOTLOADER_BIN)
|
bootloader-flash: $(BOOTLOADER_BIN)
|
||||||
$(MAKE) -C $(BOOTLOADER_COMPONENT_PATH)/src flash MAKEFLAGS= V=$(V)
|
$(MAKE) -C $(BOOTLOADER_COMPONENT_PATH)/src flash MAKEFLAGS= V=$(V)
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
|
@ -4,7 +4,12 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
PROJECT_NAME := bootloader
|
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
|
#We cannot include the esp32 component directly but we need its includes. This is fixed by
|
||||||
#adding it in the main/Makefile directory.
|
#adding it in the main/Makefile directory.
|
||||||
|
|
|
@ -19,39 +19,64 @@ extern "C"
|
||||||
{
|
{
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include "sdkconfig.h"
|
||||||
|
|
||||||
|
#define BOOT_LOG_LEVEL_NONE (0)
|
||||||
#define BOOT_LOG_LEVEL_ERROR (1)
|
#define BOOT_LOG_LEVEL_ERROR (1)
|
||||||
#define BOOT_LOG_LEVEL_WARN (2)
|
#define BOOT_LOG_LEVEL_WARN (2)
|
||||||
#define BOOT_LOG_LEVEL_INFO (3)
|
#define BOOT_LOG_LEVEL_INFO (3)
|
||||||
#define BOOT_LOG_LEVEL_NOTICE (4)
|
#define BOOT_LOG_LEVEL_NOTICE (4)
|
||||||
#define BOOT_LOG_LEVEL_DEBUG (5)
|
#define BOOT_LOG_LEVEL_DEBUG (5)
|
||||||
|
|
||||||
#define Black 0;30
|
#define Black "30"
|
||||||
#define Red 0;31
|
#define Red "31"
|
||||||
#define Green 0;32
|
#define Green "32"
|
||||||
#define Brown 0;33
|
#define Brown "33"
|
||||||
#define Blue 0;34
|
#define Blue "34"
|
||||||
#define Purple 0;35
|
#define Purple "35"
|
||||||
#define Cyan 0;36
|
#define Cyan "36"
|
||||||
|
|
||||||
// TODO: move BOOT_LOG_LEVEL into menuconfig
|
#if CONFIG_BOOTLOADER_LOG_COLORS
|
||||||
//#define BOOT_LOG_LEVEL BOOT_LOG_LEVEL_ERROR
|
#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
|
#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__);
|
//printf("\033[0;36m[NOTICE][%s][%s][%d]\n" format "\r\n", __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__);
|
||||||
#define log_notice(format, ...) \
|
#define log_notice(format, ...) \
|
||||||
do{\
|
do{\
|
||||||
if(BOOT_LOG_LEVEL >= BOOT_LOG_LEVEL_NOTICE){\
|
if(BOOT_LOG_LEVEL >= BOOT_LOG_LEVEL_NOTICE){\
|
||||||
ets_printf("\033[0;36m" format "\r\n", ##__VA_ARGS__);\
|
ets_printf(LOG_COLOR(Cyan) format "\r\n", ##__VA_ARGS__); \
|
||||||
ets_printf("\033[0m"); \
|
ets_printf(LOG_RESET_COLOR); \
|
||||||
}\
|
}\
|
||||||
}while(0)
|
}while(0)
|
||||||
|
|
||||||
#define log_info(format, ...) \
|
#define log_info(format, ...) \
|
||||||
do{\
|
do{\
|
||||||
if(BOOT_LOG_LEVEL >= BOOT_LOG_LEVEL_INFO){\
|
if(BOOT_LOG_LEVEL >= BOOT_LOG_LEVEL_INFO){\
|
||||||
ets_printf("\033[1;36m" format "\r\n", ##__VA_ARGS__);\
|
ets_printf(LOG_BOLD(Cyan) format "\r\n", ##__VA_ARGS__); \
|
||||||
ets_printf("\033[0m"); \
|
ets_printf(LOG_RESET_COLOR); \
|
||||||
}\
|
}\
|
||||||
}while(0)
|
}while(0)
|
||||||
|
|
||||||
|
@ -59,8 +84,8 @@ extern "C"
|
||||||
#define log_error(format, ...) \
|
#define log_error(format, ...) \
|
||||||
do{\
|
do{\
|
||||||
if(BOOT_LOG_LEVEL >= BOOT_LOG_LEVEL_ERROR){\
|
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(LOG_COLOR(Red) "[ERROR][%s][%s][%d]\n" format "\r\n", __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__); \
|
||||||
ets_printf("\033[0m"); \
|
ets_printf(LOG_RESET_COLOR); \
|
||||||
}\
|
}\
|
||||||
}while(0)
|
}while(0)
|
||||||
|
|
||||||
|
@ -68,8 +93,8 @@ extern "C"
|
||||||
#define log_warn(format, ...) \
|
#define log_warn(format, ...) \
|
||||||
do{\
|
do{\
|
||||||
if(BOOT_LOG_LEVEL >= BOOT_LOG_LEVEL_WARN){\
|
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(LOG_BOLD(Brown) "[WARN][%s][%s][%d]\n" format "\r\n", __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__); \
|
||||||
ets_printf("\033[0m"); \
|
ets_printf(LOG_RESET_COLOR); \
|
||||||
}\
|
}\
|
||||||
}while(0)
|
}while(0)
|
||||||
|
|
||||||
|
@ -77,8 +102,8 @@ extern "C"
|
||||||
#define log_debug(format, ...) \
|
#define log_debug(format, ...) \
|
||||||
do{\
|
do{\
|
||||||
if(BOOT_LOG_LEVEL >= BOOT_LOG_LEVEL_DEBUG){\
|
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(LOG_BOLD(Green) "[DEBUG][%s][%s][%d]\n" format "\r\n", __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__); \
|
||||||
ets_printf("\033[0m"); \
|
ets_printf(LOG_RESET_COLOR); \
|
||||||
}\
|
}\
|
||||||
}while(0)
|
}while(0)
|
||||||
|
|
||||||
|
|
|
@ -276,8 +276,6 @@ void bootloader_main()
|
||||||
{
|
{
|
||||||
//Run start routine.
|
//Run start routine.
|
||||||
/*ESP32 2ND bootload start here*/
|
/*ESP32 2ND bootload start here*/
|
||||||
|
|
||||||
|
|
||||||
log_info( "\n" );
|
log_info( "\n" );
|
||||||
log_info( "**************************************" );
|
log_info( "**************************************" );
|
||||||
log_info( "* hello espressif ESP32! *" );
|
log_info( "* hello espressif ESP32! *" );
|
||||||
|
|
Loading…
Reference in a new issue