# Debug Config — opt-in logging and diagnostics. # # Production is the default. Pass this conf to get the full debug experience: # # west build -b rak4631 zephcore --pristine -- \ # -DEXTRA_CONF_FILE="boards/common/debug.conf" # # # With repeater role: # west build -b rak4631 zephcore --pristine -- \ # -DEXTRA_CONF_FILE="boards/common/repeater.conf;boards/common/debug.conf" # ========== Core debug features ========== CONFIG_LOG=y CONFIG_ASSERT=y CONFIG_THREAD_NAME=y # SEGGER RTT is OFF by default: it costs 4,280 bytes of RAM (a 4 KB up-buffer # plus control block) and is unusable without a debug probe, which most people # do not have. Logs reach a plain serial terminal over USB CDC regardless — # see the backend note below. Measured on meshtracker_x1: 1.8 % of total RAM # on a build that sits near 92 %. # # With a J-Link attached, turn it back on for that build only: # -DCONFIG_USE_SEGGER_RTT=y -DCONFIG_LOG_BACKEND_RTT=y \ # -DCONFIG_SEGGER_RTT_BUFFER_SIZE_UP=4096 # Halt-and-inspect on fatal faults instead of the production reboot-on-fatal # (prj.conf sets CONFIG_ZEPHCORE_RESET_ON_FATAL_ERROR=y). A debugger needs the # core stopped at the fault with a stack dump, not rebooted out from under it. CONFIG_ZEPHCORE_RESET_ON_FATAL_ERROR=n # ========== Log tuning ========== # ZephCore BLE modules at INF level (connection lifecycle, pairing, TX/RX). CONFIG_ZEPHCORE_BLE_LOG_LEVEL_INF=y # Deferred logging — non-blocking so BLE/LoRa timing is not disturbed. CONFIG_LOG_BUFFER_SIZE=8192 CONFIG_LOG_PROCESS_TRIGGER_THRESHOLD=1 CONFIG_LOG_PROCESS_THREAD_STACK_SIZE=2048 # No backend is selected here, deliberately. Zephyr's Kconfig.uart is # "default y if !SHELL_BACKEND_SERIAL" and ZephCore never enables the serial # shell backend, so CONFIG_LOG_BACKEND_UART is already on in every build — and # on the boards whose chosen console is a cdc_acm_uart (nRF52 with native USB, # e.g. meshtracker_x1, promicro_lr2021, t1000_e) that means logs come out of the # USB CDC port with no J-Link and no extra flags. # # The comment that used to sit here claimed "RTT backend only — no UART backend # on nRF52", which was never true: this file has never set # CONFIG_LOG_BACKEND_UART=n, so it described an intent it did not implement. # The stated worry — uart_poll_out() stalling when the USB host disconnects — # does not apply in deferred mode, where the log thread does the blocking, not # the mesh or radio threads. # ========== Radio diagnostics ========== # Verify the SX126x warm-start retention list survives duty-cycle sleeps. # Prints "retention[install]" once at boot, then warns if a duty-cycled packet # was received at the wrong Rx gain — the silent -3 dB failure that a broken # retention list produces. Two SPI reads per received packet, so debug only. CONFIG_ZEPHCORE_LORA_RETENTION_DEBUG=y # Silence noisy subsystems CONFIG_CFB_LOG_LEVEL_ERR=y