bootloader: Add bootloader Kconfig

Allow debug level & colour highlighting to be configured
This commit is contained in:
Angus Gratton 2016-09-13 13:46:51 +10:00
parent 4598f9fc88
commit 3061ae40c0
5 changed files with 88 additions and 24 deletions

View 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

View file

@ -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

View file

@ -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.

View file

@ -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)

View file

@ -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! *" );