Using memory register to disable ROM messages out UART0 doesn't work

MikeMyhre
Posts: 36
Joined: Sat Nov 05, 2022 3:32 am

Using memory register to disable ROM messages out UART0 doesn't work

Postby MikeMyhre » Fri Jan 13, 2023 9:31 pm

IDF Version 4.4.3-dirty
Product: ESP32-s3-wroom
Problem: Unable to disable ROM Log to UART 0 using register address.

Expected Test Result: ROM messages should stop being printed out UART0 after the CNTL_STORE4 register bit is set. Messages should still be printed out USB. The register overrides both the EFuse and GPIO settings.

Actual Result: ROM Messages continue to be printed over UART 0

Steps to reproduce:
Step 1: Start new project with the following code:

Code: Select all

#define RRTAG "RESET_REASON"

void app_main(void)
{
	configure_led();

	switch( esp_reset_reason() ) {
    case ESP_RST_DEEPSLEEP:
    	ESP_LOGI(RRTAG,"DEEP SLEEP");
    	break;
    case ESP_RST_WDT:
    	ESP_LOGI(RRTAG,"WDT");
    	break;
    case ESP_RST_TASK_WDT:
    	ESP_LOGI(RRTAG,"Task WDT");
    	break;
    case ESP_RST_INT_WDT:
    	ESP_LOGI(RRTAG,"INT WDT");
    	break;
    case ESP_RST_PANIC:
    	ESP_LOGI(RRTAG,"PANIC");
    	break;
    case ESP_RST_POWERON:
    	ESP_LOGI(RRTAG,"POWERON");
    	boot_count = 0;
    	break;
    case ESP_RST_UNKNOWN:
    	ESP_LOGI(RRTAG,"Unknown");
    	break;
    case ESP_RST_SW:
    	ESP_LOGI(RRTAG,"Software");
    	break;
    default:
    	ESP_LOGI(RRTAG,"Code: %d",esp_reset_reason());
    	break;
    }
	boot_count++;
    ESP_LOGI("boot", "Boot count: %d", boot_count);

    if( boot_count == 1 ) {
    	esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_SLOW_MEM, ESP_PD_OPTION_ON);
    	esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_FAST_MEM, ESP_PD_OPTION_ON);
    	uint32_t val = REG_SET_BIT(RTC_CNTL_STORE4_REG, RTC_DISABLE_ROM_LOG);
    	ESP_LOGI("ROM_LOG","CNTL_STORE4_REG: 0x%04X - 0x%X",RTC_CNTL_STORE4_REG,val);
    	printf("Restarting and preserving RTC\n");
    	esp_restart();
    }
    REG_SET_BIT(RTC_CNTL_STORE4_REG, RTC_DISABLE_ROM_LOG);

	printf("Start of main\n");
    while( 1 ) {
        vTaskDelay( pdMS_TO_TICKS(1000) );
        printf("Log Message\n");
    }
Step 2: View data on UART0 which should be silent after the REG_SET_BIT(...) command.

As described in technical manual table 8-3:
techManual8-3.jpg
techManual8-3.jpg (57.1 KiB) Viewed 1946 times

Who is online

Users browsing this forum: No registered users and 100 guests