]> granicus.if.org Git - esp-idf/commitdiff
bootloader: Add bootloader Kconfig
authorAngus Gratton <angus@espressif.com>
Tue, 13 Sep 2016 03:46:51 +0000 (13:46 +1000)
committerAngus Gratton <angus@espressif.com>
Tue, 13 Sep 2016 04:18:17 +0000 (14:18 +1000)
Allow debug level & colour highlighting to be configured

components/bootloader/Kconfig.projbuild [new file with mode: 0644]
components/bootloader/Makefile.projbuild
components/bootloader/src/Makefile
components/bootloader/src/main/bootloader_log.h
components/bootloader/src/main/bootloader_start.c

diff --git a/components/bootloader/Kconfig.projbuild b/components/bootloader/Kconfig.projbuild
new file mode 100644 (file)
index 0000000..74028b6
--- /dev/null
@@ -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
index 48c09d4816e08e84b6ae89c4d45b18c6f69ed991..aaebd4d2638eb20abc98bbd5c36720d01434602d 100644 (file)
@@ -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
index 191fbef11050af06dcef4f545bacd71364cb0889..b6b0c1af02a90ef32ac767f7da840ec1e9814361 100644 (file)
@@ -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.
index 32bc4852e2c5a7ef3c409f0a2854d1d6c58f08ef..1f7ec62ad57f183d54b39b8046c77c17d4f365f3 100644 (file)
@@ -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__ */
\ No newline at end of file
+#endif /* __BOOT_LOGGING_H__ */
index a25a266c08a255acb5e8c1246b7cbe4b351ed838..2dbf0e82698249b5c1f55109c05cea2a858d3b8d 100644 (file)
@@ -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!       *" );