ESP32 E' possibile dirottare i log su una UART diversa da UART0?

Sono alle prese con un ESP32 che dovrebbe utilizzare la UART0 per scambiare pacchetti dati formattati secondo un protocollo personalizzato. L'ESP32 è parte di un sistema più grande e quindi non è possibile utilizzare altre interfacce seriali. Per programmare utilizzo il framework arduino attraverso VSCode e PlatformIO, e ho provato a configurare i log settando

build_flags = -DCORE_DEBUG_LEVEL=0

Tuttavia continuano ad uscire fuori dei log di errore (ad esempio quelli relativi alla libreria ArduinoNVS) che compromettono la comunicazione tra ESP32 e il sistema. Vi domando

  1. Come faccio ad eliminare tutti i messaggi di log, anche quelli di errore che escono da alcune librerie?
  2. E' possibile dirottare i log su un'altra interfaccia seriale che non sia la UART0 non avendo a disposizione la configurazione tramite menuconfig?

Attendo consigli.

Nel file esp32-hal-log.h vengono definite alcune macro che servono per il logging, puoi provare ad alterare quelle, sempre che la libreria di cui parli le usi... :roll_eyes:

Ciao, Ale.

Le macro che sono definite in esp32-hal-log.h non fanno riferimento all'hardware utilizzato. Utilizzano la log_printf che se non sbaglio è definita in esp32-hal-uart.c e che a sua volta utilizza la ets_printf dopo la quale mi perdo.

Ho provato a cercare nei vari sdkconfig.h e ho trovato la

#define CONFIG_ESP_CONSOLE_UART_NUM 0

così ho provato ad aggiungere al build_flags di PlatformIO

build_flags =
	-DCORE_DEBUG_LEVEL=0
	-DCONFIG_ESP_CONSOLE_UART_NUM=1

senza però avere i risultati sperati: i log escono ancora sulla UART0.

Altri consigli?

Con l'SDK ufficiale ESP-IDF si può fare piuttosto semplicemente usando lo specifico tool idf.py menuconfig il quale va a modificare il file sdkconfig (senza estensione .h)

Non ho mai approfondito più di tanto il core ESP32 per Arduino, ma ho visto che ciascun tipo di microcontrollore ha il suo sdkconfig (ed il suo sdkconfig.h)

Ad esempio questo è il contenuto del file sdkconfig dove do dovuto spostare i messaggi di debug sulla UART 1 rimappando anche i GPIO usati. Prova a modificare il file sdkconfig

# CONFIG_ESP_CONSOLE_UART_DEFAULT is not set
# CONFIG_ESP_CONSOLE_USB_CDC is not set
# CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG is not set
CONFIG_ESP_CONSOLE_UART_CUSTOM=y
# CONFIG_ESP_CONSOLE_NONE is not set
# CONFIG_ESP_CONSOLE_SECONDARY_NONE is not set
CONFIG_ESP_CONSOLE_SECONDARY_USB_SERIAL_JTAG=y
CONFIG_ESP_CONSOLE_UART=y
CONFIG_ESP_CONSOLE_MULTIPLE_UART=y
# CONFIG_ESP_CONSOLE_UART_CUSTOM_NUM_0 is not set
CONFIG_ESP_CONSOLE_UART_CUSTOM_NUM_1=y
CONFIG_ESP_CONSOLE_UART_NUM=1
CONFIG_ESP_CONSOLE_UART_TX_GPIO=35
CONFIG_ESP_CONSOLE_UART_RX_GPIO=36
CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200

Probabilmente devi disattivare il CONFIG_ESP_CONSOLE_UART_DEFAULT oltre a specificare il numero "custom"

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.