mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
Merge #19420
19420: cpu/esp32: use ets_printf instead of puts in startup r=maribu a=gschorcht ### Contribution description This PR provides a workaround that fixes the problem that restarting an application automatically after flashing it in download mode via USB Serial/JTAG doesn't work and requires a hard reset by pressing the RESET button before it starts. The reason that the application doesn't restart automatically after flashing it is that an exception occurs if `puts` or `printf` is called during startup before the first interrupt driven context switch in `thread_yield_higher`. The console seems to hange after bootloader: ``` EESP-ROM:esp32c3-api1-20210207 Build:Feb 7 2021 rst:0x15 (USB_UART_CHIP_RESET),boot:0xd (SPI_FAST_FLASH_BOOT) Saved PC:0x40380786 SPIWP:0xee mode:DIO, clock div:1 load:0x3fcd6100,len:0x6c load:0x403ce000,len:0x7ec load:0x403d0000,len:0x2170 entry 0x403ce000 Pro cpu up. ``` However, the system stucks in a exception/printf loop. ESP32-C3 and ESP32-S3 are affected. ### Testing procedure Flash a ESP32-C3 or ESP32-S3 board that don't have a USB-to-UART chip with reset logic on board, for example ``` BOARD=hip-badge make -j8 -C tests/shell flash ``` or ``` BOARD=esp32s3-pros3 make -j8 -C tests/shell flash ``` Connect a terminal to the the board. Without the PR, the console doesn't seem to work and the RESET button has to pressed explicitly to get it working. With the PR, the console should work. The problem can also be caused when using ``` dist/tools/esptools/espreset.py -p /dev/ttyACM0 ``` while connected with a terminal to the board. Without the PR, the console output stops after ``` ESP-ROM:esp32c3-api1-20210207 Build:Feb 7 2021 rst:0x15 (USB_UART_CHIP_RESET),boot:0xd (SPI_FAST_FLASH_BOOT) Saved PC:0x40380786 SPIWP:0xee mode:DIO, clock div:1 load:0x3fcd6100,len:0x6c load:0x403ce000,len:0x7ec load:0x403d0000,len:0x2170 entry 0x403ce000 Pro cpu up. ``` while it continues with the PR as following: ``` main(): This is RIOT! (Version: 2023.04-devel-713-gcb721-boards/ test_shell. > ``` ### Issues/PRs references Co-authored-by: Gunar Schorcht <gunar@schorcht.net>
This commit is contained in:
commit
71e5b2cb5e
@ -322,7 +322,7 @@ static NORETURN void IRAM system_init (void)
|
||||
LOG_STARTUP("Starting RIOT kernel on PRO cpu\n");
|
||||
esp_rom_uart_tx_wait_idle(CONFIG_ESP_CONSOLE_UART_NUM);
|
||||
#else
|
||||
puts("");
|
||||
ets_printf("\n");
|
||||
#endif
|
||||
kernel_init();
|
||||
UNREACHABLE();
|
||||
|
Loading…
Reference in New Issue
Block a user