mirror of
https://github.com/esp8266/Arduino.git
synced 2025-04-19 23:22:16 +03:00
Add debug support for build.opt (#8637)
Add support to have different build option comment blocks for debug and production builds. Updated example esp8266/HwdtStackDump to use build.opt
This commit is contained in:
parent
ee7ac2f79d
commit
313b3c07ec
@ -180,7 +180,9 @@
|
|||||||
* tool performing hardware reset and exiting, then the serial monitor
|
* tool performing hardware reset and exiting, then the serial monitor
|
||||||
* re-engaging. This is not an issue that needs to be addressed here.
|
* re-engaging. This is not an issue that needs to be addressed here.
|
||||||
*/
|
*/
|
||||||
#define DEBUG_ESP_HWDT_PRINT_GREETING
|
#ifndef DEBUG_ESP_HWDT_PRINT_GREETING
|
||||||
|
#define DEBUG_ESP_HWDT_PRINT_GREETING (1)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -995,7 +997,7 @@ STATIC void IRAM_MAYBE handle_hwdt(void) {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(DEBUG_ESP_HWDT_PRINT_GREETING)
|
#if DEBUG_ESP_HWDT_PRINT_GREETING
|
||||||
ETS_PRINTF("\n\nHardware WDT Stack Dump - enabled\n\n");
|
ETS_PRINTF("\n\nHardware WDT Stack Dump - enabled\n\n");
|
||||||
#else
|
#else
|
||||||
ETS_PRINTF("\n\n");
|
ETS_PRINTF("\n\n");
|
||||||
|
@ -92,6 +92,72 @@ Global ``.h`` file: ``LowWatermark.ino.globals.h``
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Separate production and debug build options
|
||||||
|
===========================================
|
||||||
|
|
||||||
|
If your production and debug build option requirements are different,
|
||||||
|
adding ``mkbuildoptglobals.extra_flags={build.debug_port}`` to
|
||||||
|
``platform.local.txt`` will create separate build option groups for
|
||||||
|
debugging and production. For the production build option group, the “C”
|
||||||
|
block comment starts with ``/*@create-file:build.opt@``, as previously
|
||||||
|
defined. For the debugging group, the new “C” block comment starts with
|
||||||
|
``/*@create-file:build.opt:debug@``. You make your group selection
|
||||||
|
through “Arduino->Tools->Debug port” by selecting or disabling the
|
||||||
|
“Debug port.”
|
||||||
|
|
||||||
|
Options common to both debug and production builds must be included in
|
||||||
|
both groups. Neither of the groups is required. You may also omit either
|
||||||
|
or both.
|
||||||
|
|
||||||
|
Reminder with this change, any old “sketch” with only a “C” block
|
||||||
|
comment starting with ``/*@create-file:build.opt@`` would not use a
|
||||||
|
``build.opt`` file for the debug case. Update old sketches as needed.
|
||||||
|
|
||||||
|
Updated Global ``.h`` file: ``LowWatermark.ino.globals.h``
|
||||||
|
|
||||||
|
.. code:: cpp
|
||||||
|
|
||||||
|
/*@create-file:build.opt:debug@
|
||||||
|
// Debug build options
|
||||||
|
-DMYTITLE1="\"Running on \""
|
||||||
|
-DUMM_STATS_FULL=1
|
||||||
|
|
||||||
|
//-fanalyzer
|
||||||
|
|
||||||
|
// Removing the optimization for "sibling and tail recursive calls" may fill
|
||||||
|
// in some gaps in the stack decoder report. Preserves the stack frames
|
||||||
|
// created at each level as you call down to the next.
|
||||||
|
-fno-optimize-sibling-calls
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*@create-file:build.opt@
|
||||||
|
// Production build options
|
||||||
|
-DMYTITLE1="\"Running on \""
|
||||||
|
-DUMM_STATS_FULL=1
|
||||||
|
-O3
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef LOWWATERMARK_INO_GLOBALS_H
|
||||||
|
#define LOWWATERMARK_INO_GLOBALS_H
|
||||||
|
|
||||||
|
#if defined(__cplusplus)
|
||||||
|
#define MYTITLE2 "Empty"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(__cplusplus) && !defined(__ASSEMBLER__)
|
||||||
|
#define MYTITLE2 "Full"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef DEBUG_ESP_PORT
|
||||||
|
// Global Debug defines
|
||||||
|
// ...
|
||||||
|
#else
|
||||||
|
// Global Production defines
|
||||||
|
// ...
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
Aggressively cache compiled core
|
Aggressively cache compiled core
|
||||||
================================
|
================================
|
||||||
|
|
||||||
|
@ -47,8 +47,6 @@ extern "C" {
|
|||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
void setup(void) {
|
void setup(void) {
|
||||||
WiFi.persistent(false); // w/o this a flash write occurs at every boot
|
|
||||||
WiFi.mode(WIFI_OFF);
|
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
delay(20); // This delay helps when using the 'Modified Serial monitor' otherwise it is not needed.
|
delay(20); // This delay helps when using the 'Modified Serial monitor' otherwise it is not needed.
|
||||||
Serial.println();
|
Serial.println();
|
||||||
@ -56,16 +54,20 @@ void setup(void) {
|
|||||||
Serial.println(F("The Hardware Watchdog Timer Demo is starting ..."));
|
Serial.println(F("The Hardware Watchdog Timer Demo is starting ..."));
|
||||||
Serial.println();
|
Serial.println();
|
||||||
|
|
||||||
|
#ifdef DEMO_THUNK
|
||||||
// This allows us to test dumping a BearSSL stack after HWDT.
|
// This allows us to test dumping a BearSSL stack after HWDT.
|
||||||
stack_thunk_add_ref();
|
stack_thunk_add_ref();
|
||||||
thunk_ets_uart_printf("Using Thunk Stack to print this line.\n\n");
|
thunk_ets_uart_printf("Using Thunk Stack to print this line.\n\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef DEMO_WIFI
|
||||||
// We don't need this for this example; however, starting WiFi uses a little
|
// We don't need this for this example; however, starting WiFi uses a little
|
||||||
// more of the SYS stack.
|
// more of the SYS stack.
|
||||||
WiFi.mode(WIFI_STA);
|
WiFi.mode(WIFI_STA);
|
||||||
WiFi.begin(ssid, password);
|
WiFi.begin(ssid, password);
|
||||||
Serial.println(F("A WiFi connection attempt has been started."));
|
Serial.println(F("A WiFi connection attempt has been started."));
|
||||||
Serial.println();
|
Serial.println();
|
||||||
|
#endif
|
||||||
|
|
||||||
// #define DEMO_NOEXTRA4K
|
// #define DEMO_NOEXTRA4K
|
||||||
#ifdef DEMO_NOEXTRA4K
|
#ifdef DEMO_NOEXTRA4K
|
||||||
|
@ -0,0 +1,51 @@
|
|||||||
|
/*@create-file:build.opt:debug@
|
||||||
|
// For this block to work, you must have
|
||||||
|
// `mkbuildoptglobals.extra_flags={build.debug_port}` in `platform.local.txt`
|
||||||
|
// Or move contents to the block with the signature "@create-file:build.opt@"
|
||||||
|
|
||||||
|
|
||||||
|
// Removing the optimization for "sibling and tail recursive calls" will clear
|
||||||
|
// up some gaps in the stack decoder report. Preserves stack frames created at
|
||||||
|
// each level as you call down to the next.
|
||||||
|
-fno-optimize-sibling-calls
|
||||||
|
|
||||||
|
|
||||||
|
// Adds a pointer toward the end of the stack frame that points to the beginning
|
||||||
|
// of the stack frame. The stack dump will annotate the line where it occurs
|
||||||
|
// with a `<` mark.
|
||||||
|
-fno-omit-frame-pointer
|
||||||
|
|
||||||
|
|
||||||
|
// Options for HWDT Stack Dump (hwdt_app_entry.cpp)
|
||||||
|
|
||||||
|
// Alter the UART serial speed used for printing the Hardware WDT reset stack
|
||||||
|
// dump. Without this option on an HWDT reset, the existing default speed of
|
||||||
|
// 115200 bps will be used. If you are using this default speed, you can skip
|
||||||
|
// this option. Note this option only changes the speed while the stack dump is
|
||||||
|
// printing. Prior settings are restored.
|
||||||
|
// -DDEBUG_ESP_HWDT_UART_SPEED=19200
|
||||||
|
// -DDEBUG_ESP_HWDT_UART_SPEED=74880
|
||||||
|
// -DDEBUG_ESP_HWDT_UART_SPEED=115200
|
||||||
|
// -DDEBUG_ESP_HWDT_UART_SPEED=230400
|
||||||
|
|
||||||
|
// HWDT Stack Dump defaults to print a simple introduction to let you know the
|
||||||
|
// tool is active and in the build. At power-on, this may not be viewable on
|
||||||
|
// some devices. Use the DEBUG_ESP_HWDT_UART_SPEED option above to improve.
|
||||||
|
// Or uncomment line below to turn off greeting
|
||||||
|
// -DDEBUG_ESP_HWDT_PRINT_GREETING=0
|
||||||
|
|
||||||
|
// Demos
|
||||||
|
-DDEMO_THUNK=1
|
||||||
|
// -DDEMO_NOEXTRA4K=1
|
||||||
|
-DDEMO_WIFI=1
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*@create-file:build.opt@
|
||||||
|
// -fno-optimize-sibling-calls
|
||||||
|
// -fno-omit-frame-pointer
|
||||||
|
|
||||||
|
// Demos
|
||||||
|
-DDEMO_THUNK=1
|
||||||
|
// -DDEMO_NOEXTRA4K=1
|
||||||
|
-DDEMO_WIFI=1
|
||||||
|
*/
|
@ -680,6 +680,7 @@ def parse_args():
|
|||||||
parser.add_argument('source_globals_h_fqfn', help="Source FQFN Sketch.ino.globals.h")
|
parser.add_argument('source_globals_h_fqfn', help="Source FQFN Sketch.ino.globals.h")
|
||||||
parser.add_argument('commonhfile_fqfn', help="Core Source FQFN CommonHFile.h")
|
parser.add_argument('commonhfile_fqfn', help="Core Source FQFN CommonHFile.h")
|
||||||
parser.add_argument('--debug', action='store_true', required=False, default=False)
|
parser.add_argument('--debug', action='store_true', required=False, default=False)
|
||||||
|
parser.add_argument('-DDEBUG_ESP_PORT', nargs='?', action='store', const="", default="", help='Add mkbuildoptglobals.extra_flags={build.debug_port} to platform.local.txt')
|
||||||
parser.add_argument('--ci', action='store_true', required=False, default=False)
|
parser.add_argument('--ci', action='store_true', required=False, default=False)
|
||||||
group = parser.add_mutually_exclusive_group(required=False)
|
group = parser.add_mutually_exclusive_group(required=False)
|
||||||
group.add_argument('--cache_core', action='store_true', default=None, help='Assume a "compiler.cache_core" value of true')
|
group.add_argument('--cache_core', action='store_true', default=None, help='Assume a "compiler.cache_core" value of true')
|
||||||
@ -721,6 +722,12 @@ def main():
|
|||||||
print_dbg(f"globals_name: {globals_name}")
|
print_dbg(f"globals_name: {globals_name}")
|
||||||
print_dbg(f"build_path_core: {build_path_core}")
|
print_dbg(f"build_path_core: {build_path_core}")
|
||||||
print_dbg(f"globals_h_fqfn: {globals_h_fqfn}")
|
print_dbg(f"globals_h_fqfn: {globals_h_fqfn}")
|
||||||
|
print_dbg(f"DDEBUG_ESP_PORT: {args.DDEBUG_ESP_PORT}")
|
||||||
|
|
||||||
|
if len(args.DDEBUG_ESP_PORT):
|
||||||
|
build_opt_signature = build_opt_signature[:-1] + ":debug@"
|
||||||
|
|
||||||
|
print_dbg(f"build_opt_signature: {build_opt_signature}")
|
||||||
|
|
||||||
if args.ci:
|
if args.ci:
|
||||||
# Requires CommonHFile.h to never be checked in.
|
# Requires CommonHFile.h to never be checked in.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user