fix(nvs_console): use esp_stdio for console peripheral init

This commit is contained in:
sonika.rathi
2026-07-27 14:16:13 +02:00
parent 8550997ada
commit ab894caac3
3 changed files with 12 additions and 33 deletions
+6 -2
View File
@@ -13,9 +13,13 @@ This example can run on any ESP32 family development board.
The example can be configured through `menuconfig`: The example can be configured through `menuconfig`:
1. Enable/disable command history storage (`CONFIG_CONSOLE_STORE_HISTORY`) 1. Enable/disable command history storage (`CONFIG_CONSOLE_STORE_HISTORY`)
2. Configure UART parameters 2. Select the console channel under **Component config → ESP-STDIO → Channel for console output**
(UART0 by default, or **USB Serial/JTAG** / **USB CDC** on supported chips)
3. Configure console prompt color settings 3. Configure console prompt color settings
On chips with USB Serial/JTAG, set the channel to **USB Serial/JTAG Controller**,
connect the USB cable to that interface, then monitor that port.
## How to Use ## How to Use
### Build and Flash ### Build and Flash
@@ -26,7 +30,7 @@ Build the project and flash it to the board, then run monitor tool to view seria
idf.py -p PORT flash monitor idf.py -p PORT flash monitor
``` ```
(Replace PORT with the name of the serial port to use.) (Replace PORT with the serial port that matches the console channel selected above.)
### Console Commands ### Console Commands
@@ -1,6 +1,6 @@
idf_component_register(SRCS "nvs_console_main.c" idf_component_register(SRCS "nvs_console_main.c"
"console_settings.c" "console_settings.c"
REQUIRES cmd_nvs cmd_system esp_driver_uart fatfs REQUIRES cmd_nvs cmd_system esp_stdio fatfs
INCLUDE_DIRS ".") INCLUDE_DIRS ".")
# Create a NVS image from the contents of the `nvs_data` CSV file # Create a NVS image from the contents of the `nvs_data` CSV file
@@ -1,5 +1,5 @@
/* /*
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD * SPDX-FileCopyrightText: 2025-2026 Espressif Systems (Shanghai) CO LTD
* *
* SPDX-License-Identifier: Unlicense OR CC0-1.0 * SPDX-License-Identifier: Unlicense OR CC0-1.0
*/ */
@@ -10,9 +10,7 @@
#include "esp_system.h" #include "esp_system.h"
#include "esp_log.h" #include "esp_log.h"
#include "esp_console.h" #include "esp_console.h"
#include "esp_vfs_dev.h" #include "esp_stdio.h"
#include "driver/uart.h"
#include "driver/uart_vfs.h"
#include "linenoise/linenoise.h" #include "linenoise/linenoise.h"
#include "argtable3/argtable3.h" #include "argtable3/argtable3.h"
#include "console_settings.h" #include "console_settings.h"
@@ -30,34 +28,11 @@ void initialize_console_peripheral(void)
fflush(stdout); fflush(stdout);
fsync(fileno(stdout)); fsync(fileno(stdout));
/* Install UART / USB Serial/JTAG / USB CDC driver based on menuconfig */
ESP_ERROR_CHECK(esp_stdio_install_io_driver());
/* Disable buffering on stdin */ /* Disable buffering on stdin */
setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdin, NULL, _IONBF, 0);
/* Minicom, screen, idf_monitor send CR when ENTER key is pressed */
uart_vfs_dev_port_set_rx_line_endings(CONFIG_ESP_CONSOLE_UART_NUM, ESP_LINE_ENDINGS_CR);
/* Move the caret to the beginning of the next line on '\n' */
uart_vfs_dev_port_set_tx_line_endings(CONFIG_ESP_CONSOLE_UART_NUM, ESP_LINE_ENDINGS_CRLF);
/* Configure UART */
const uart_config_t uart_config = {
.baud_rate = CONFIG_ESP_CONSOLE_UART_BAUDRATE,
.data_bits = UART_DATA_8_BITS,
.parity = UART_PARITY_DISABLE,
.stop_bits = UART_STOP_BITS_1,
#if CONFIG_IDF_TARGET_ESP32 || CONFIG_IDF_TARGET_ESP32S2
.source_clk = UART_SCLK_REF_TICK,
#else
.source_clk = UART_SCLK_XTAL,
#endif
};
/* Install UART driver for interrupt-driven reads and writes */
ESP_ERROR_CHECK(uart_driver_install(CONFIG_ESP_CONSOLE_UART_NUM,
256, 0, 0, NULL, 0));
ESP_ERROR_CHECK(uart_param_config(CONFIG_ESP_CONSOLE_UART_NUM, &uart_config));
/* Tell VFS to use UART driver */
uart_vfs_dev_use_driver(CONFIG_ESP_CONSOLE_UART_NUM);
} }
void initialize_console_library(const char *history_path) void initialize_console_library(const char *history_path)