Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Can I use the binary compiled by Arduino IDE instead of ESP-IDF? (QEMU-51) #30

Closed
raspiduino opened this issue Jan 25, 2022 · 14 comments
Closed

Comments

@raspiduino
Copy link

Hello,
I know it's possible to run binary compiled with ESP-IDF using this fork of QEMU. And the Arduino IDE's support for ESP32 is based on the ESP-IDF framework.

So is it possible to run Arduino IDE's compiled binary on this QEMU? I tried the option Export compiled binary on Arduino IDE and then load the binary to QEMU as described, but it just output

==20167==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
Adding SPI flash device
qemu-system-xtensa: failed to read the initial flash content

Thanks in advance!

@igrr
Copy link
Member

igrr commented Jan 25, 2022

I think the binary exported by Arduino IDE only includes the application. You probably need to combine it with the bootloader and partition table binaries at correct offsets. The resulting file should be exactly 4 megabytes. Please check the wiki page for an example script which does this using dd commands.

@raspiduino
Copy link
Author

Can you provide me the link?

@igrr
Copy link
Member

igrr commented Jan 25, 2022

https://github.com/espressif/qemu/wiki/Home/6d464e83db0285059f53a078d9a1d3ad5aed5672#build-test-app

@raspiduino
Copy link
Author

raspiduino commented Jan 25, 2022

Hello,

Why the wiki I saw (by clicking to Wiki tab) and the Wiki link you sent me are so much different?

The wiki I saw by clicking to Wiki tab:
image

The wiki you sent me:
image

(I wonder if they are two version (old and new) of the wiki?)


OK let's come to the main problem:

After follow the instructions in the wiki, QEMU does not print out Hello World but instead stuck at

user@machine:~$ qemu-system-xtensa -nographic -machine esp32 -drive file=esp32.qemu.bin,if=mtd,format=raw
==20376==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
Adding SPI flash device
ets Jul 29 2019 12:21:46

rst:0x1 (POWERON_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DOUT, clock div:2
load:0x3fff0030,len:1184
load:0x40078000,len:12776
load:0x40080400,len:3032
entry 0x400805e4

and then nothing else print out!

Here are my steps:

  1. I use a simple piece of code that just print out Hello World to UART:
void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  Serial.println("Hello World");
}

void loop() {
  // put your main code here, to run repeatedly:

}

Board configure in Arduino IDE:

image

Then I built it by using Export compiled binary:


image

Build log:

C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.57.0_x86__mdqgnx93n4wtt\arduino-builder -dump-prefs -logger=machine -hardware C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.57.0_x86__mdqgnx93n4wtt\hardware -hardware C:\Users\USER\Documents\ArduinoData\packages -tools C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.57.0_x86__mdqgnx93n4wtt\tools-builder -tools C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.57.0_x86__mdqgnx93n4wtt\hardware\tools\avr -tools C:\Users\USER\Documents\ArduinoData\packages -built-in-libraries C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.57.0_x86__mdqgnx93n4wtt\libraries -libraries C:\Users\USER\Documents\Arduino\libraries -fqbn=esp32:esp32:esp32:PSRAM=disabled,PartitionScheme=default,CPUFreq=240,FlashMode=dout,FlashFreq=80,FlashSize=4M,UploadSpeed=921600,DebugLevel=none -ide-version=10819 -build-path C:\Users\USER\AppData\Local\Temp\arduino_build_60522 -warnings=none -build-cache C:\Users\USER\AppData\Local\Temp\arduino_cache_876638 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.mkspiffs.path=C:\Users\USER\Documents\ArduinoData\packages\esp32\tools\mkspiffs\0.2.3 -prefs=runtime.tools.mkspiffs-0.2.3.path=C:\Users\USER\Documents\ArduinoData\packages\esp32\tools\mkspiffs\0.2.3 -prefs=runtime.tools.xtensa-esp32-elf-gcc.path=C:\Users\USER\Documents\ArduinoData\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-97-gc752ad5-5.2.0 -prefs=runtime.tools.xtensa-esp32-elf-gcc-1.22.0-97-gc752ad5-5.2.0.path=C:\Users\USER\Documents\ArduinoData\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-97-gc752ad5-5.2.0 -prefs=runtime.tools.esptool_py.path=C:\Users\USER\Documents\ArduinoData\packages\esp32\tools\esptool_py\3.0.0 -prefs=runtime.tools.esptool_py-3.0.0.path=C:\Users\USER\Documents\ArduinoData\packages\esp32\tools\esptool_py\3.0.0 -verbose C:\Users\USER\Documents\Arduino\esp32test\esp32test.ino
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.57.0_x86__mdqgnx93n4wtt\arduino-builder -compile -logger=machine -hardware C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.57.0_x86__mdqgnx93n4wtt\hardware -hardware C:\Users\USER\Documents\ArduinoData\packages -tools C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.57.0_x86__mdqgnx93n4wtt\tools-builder -tools C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.57.0_x86__mdqgnx93n4wtt\hardware\tools\avr -tools C:\Users\USER\Documents\ArduinoData\packages -built-in-libraries C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.57.0_x86__mdqgnx93n4wtt\libraries -libraries C:\Users\USER\Documents\Arduino\libraries -fqbn=esp32:esp32:esp32:PSRAM=disabled,PartitionScheme=default,CPUFreq=240,FlashMode=dout,FlashFreq=80,FlashSize=4M,UploadSpeed=921600,DebugLevel=none -ide-version=10819 -build-path C:\Users\USER\AppData\Local\Temp\arduino_build_60522 -warnings=none -build-cache C:\Users\USER\AppData\Local\Temp\arduino_cache_876638 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.mkspiffs.path=C:\Users\USER\Documents\ArduinoData\packages\esp32\tools\mkspiffs\0.2.3 -prefs=runtime.tools.mkspiffs-0.2.3.path=C:\Users\USER\Documents\ArduinoData\packages\esp32\tools\mkspiffs\0.2.3 -prefs=runtime.tools.xtensa-esp32-elf-gcc.path=C:\Users\USER\Documents\ArduinoData\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-97-gc752ad5-5.2.0 -prefs=runtime.tools.xtensa-esp32-elf-gcc-1.22.0-97-gc752ad5-5.2.0.path=C:\Users\USER\Documents\ArduinoData\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-97-gc752ad5-5.2.0 -prefs=runtime.tools.esptool_py.path=C:\Users\USER\Documents\ArduinoData\packages\esp32\tools\esptool_py\3.0.0 -prefs=runtime.tools.esptool_py-3.0.0.path=C:\Users\USER\Documents\ArduinoData\packages\esp32\tools\esptool_py\3.0.0 -verbose C:\Users\USER\Documents\Arduino\esp32test\esp32test.ino
Using board 'esp32' from platform in folder: C:\Users\USER\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.6
Using core 'esp32' from platform in folder: C:\Users\USER\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.6
cmd /c if exist "C:\\Users\\USER\\Documents\\Arduino\\esp32test\\partitions.csv" copy /y "C:\\Users\\USER\\Documents\\Arduino\\esp32test\\partitions.csv" "C:\\Users\\USER\\AppData\\Local\\Temp\\arduino_build_60522\\partitions.csv"
cmd /c if not exist "C:\\Users\\USER\\AppData\\Local\\Temp\\arduino_build_60522\\partitions.csv" copy "C:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6\\tools\\partitions\\default.csv" "C:\\Users\\USER\\AppData\\Local\\Temp\\arduino_build_60522\\partitions.csv"
        1 file(s) copied.
Detecting libraries used...
"C:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\tools\\xtensa-esp32-elf-gcc\\1.22.0-97-gc752ad5-5.2.0/bin/xtensa-esp32-elf-g++" -DESP_PLATFORM "-DMBEDTLS_CONFIG_FILE=\"mbedtls/esp_config.h\"" -DHAVE_CONFIG_H -DGCC_NOT_5_2_0=0 -DWITH_POSIX "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/config" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/app_trace" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/app_update" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/asio" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/bootloader_support" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/bt" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/coap" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/console" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/driver" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/efuse" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp-tls" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp32" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp_adc_cal" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp_event" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp_http_client" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp_http_server" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp_https_ota" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp_https_server" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp_ringbuf" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp_websocket_client" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/espcoredump" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/ethernet" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/expat" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/fatfs" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/freemodbus" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/freertos" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/heap" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/idf_test" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/jsmn" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/json" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/libsodium" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/log" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/lwip" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/mbedtls" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/mdns" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/micro-ecc" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/mqtt" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/newlib" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/nghttp" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/nvs_flash" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/openssl" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/protobuf-c" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/protocomm" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/pthread" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/sdmmc" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/smartconfig_ack" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/soc" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/spi_flash" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/spiffs" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/tcp_transport" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/tcpip_adapter" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/ulp" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/unity" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/vfs" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/wear_levelling" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/wifi_provisioning" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/wpa_supplicant" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/xtensa-debug-module" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp-face" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp32-camera" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp-face" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/fb_gfx" -std=gnu++11 -Os -g3 -Wpointer-arith -fexceptions -fstack-protector -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -mlongcalls -nostdlib -w -Wno-error=maybe-uninitialized -Wno-error=unused-function -Wno-error=unused-but-set-variable -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-unused-but-set-parameter -Wno-missing-field-initializers -Wno-sign-compare -fno-rtti -c -w -x c++ -E -CC -DF_CPU=240000000L -DARDUINO=10819 -DARDUINO_ESP32_DEV -DARDUINO_ARCH_ESP32 "-DARDUINO_BOARD=\"ESP32_DEV\"" "-DARDUINO_VARIANT=\"esp32\"" -DESP32 -DCORE_DEBUG_LEVEL=0 "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6\\cores\\esp32" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6\\variants\\esp32" "C:\\Users\\USER\\AppData\\Local\\Temp\\arduino_build_60522\\sketch\\esp32test.ino.cpp" -o nul
Generating function prototypes...
"C:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\tools\\xtensa-esp32-elf-gcc\\1.22.0-97-gc752ad5-5.2.0/bin/xtensa-esp32-elf-g++" -DESP_PLATFORM "-DMBEDTLS_CONFIG_FILE=\"mbedtls/esp_config.h\"" -DHAVE_CONFIG_H -DGCC_NOT_5_2_0=0 -DWITH_POSIX "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/config" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/app_trace" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/app_update" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/asio" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/bootloader_support" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/bt" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/coap" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/console" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/driver" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/efuse" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp-tls" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp32" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp_adc_cal" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp_event" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp_http_client" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp_http_server" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp_https_ota" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp_https_server" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp_ringbuf" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp_websocket_client" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/espcoredump" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/ethernet" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/expat" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/fatfs" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/freemodbus" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/freertos" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/heap" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/idf_test" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/jsmn" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/json" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/libsodium" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/log" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/lwip" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/mbedtls" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/mdns" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/micro-ecc" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/mqtt" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/newlib" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/nghttp" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/nvs_flash" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/openssl" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/protobuf-c" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/protocomm" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/pthread" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/sdmmc" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/smartconfig_ack" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/soc" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/spi_flash" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/spiffs" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/tcp_transport" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/tcpip_adapter" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/ulp" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/unity" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/vfs" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/wear_levelling" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/wifi_provisioning" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/wpa_supplicant" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/xtensa-debug-module" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp-face" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp32-camera" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp-face" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/fb_gfx" -std=gnu++11 -Os -g3 -Wpointer-arith -fexceptions -fstack-protector -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -mlongcalls -nostdlib -w -Wno-error=maybe-uninitialized -Wno-error=unused-function -Wno-error=unused-but-set-variable -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-unused-but-set-parameter -Wno-missing-field-initializers -Wno-sign-compare -fno-rtti -c -w -x c++ -E -CC -DF_CPU=240000000L -DARDUINO=10819 -DARDUINO_ESP32_DEV -DARDUINO_ARCH_ESP32 "-DARDUINO_BOARD=\"ESP32_DEV\"" "-DARDUINO_VARIANT=\"esp32\"" -DESP32 -DCORE_DEBUG_LEVEL=0 "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6\\cores\\esp32" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6\\variants\\esp32" "C:\\Users\\USER\\AppData\\Local\\Temp\\arduino_build_60522\\sketch\\esp32test.ino.cpp" -o "C:\\Users\\USER\\AppData\\Local\\Temp\\arduino_build_60522\\preproc\\ctags_target_for_gcc_minus_e.cpp"
"C:\\Program Files\\WindowsApps\\ArduinoLLC.ArduinoIDE_1.8.57.0_x86__mdqgnx93n4wtt\\tools-builder\\ctags\\5.8-arduino11/ctags" -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives "C:\\Users\\USER\\AppData\\Local\\Temp\\arduino_build_60522\\preproc\\ctags_target_for_gcc_minus_e.cpp"
Compiling sketch...
"C:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\tools\\xtensa-esp32-elf-gcc\\1.22.0-97-gc752ad5-5.2.0/bin/xtensa-esp32-elf-g++" -DESP_PLATFORM "-DMBEDTLS_CONFIG_FILE=\"mbedtls/esp_config.h\"" -DHAVE_CONFIG_H -DGCC_NOT_5_2_0=0 -DWITH_POSIX "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/config" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/app_trace" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/app_update" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/asio" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/bootloader_support" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/bt" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/coap" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/console" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/driver" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/efuse" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp-tls" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp32" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp_adc_cal" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp_event" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp_http_client" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp_http_server" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp_https_ota" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp_https_server" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp_ringbuf" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp_websocket_client" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/espcoredump" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/ethernet" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/expat" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/fatfs" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/freemodbus" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/freertos" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/heap" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/idf_test" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/jsmn" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/json" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/libsodium" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/log" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/lwip" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/mbedtls" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/mdns" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/micro-ecc" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/mqtt" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/newlib" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/nghttp" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/nvs_flash" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/openssl" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/protobuf-c" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/protocomm" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/pthread" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/sdmmc" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/smartconfig_ack" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/soc" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/spi_flash" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/spiffs" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/tcp_transport" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/tcpip_adapter" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/ulp" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/unity" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/vfs" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/wear_levelling" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/wifi_provisioning" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/wpa_supplicant" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/xtensa-debug-module" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp-face" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp32-camera" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp-face" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/fb_gfx" -std=gnu++11 -Os -g3 -Wpointer-arith -fexceptions -fstack-protector -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -mlongcalls -nostdlib -w -Wno-error=maybe-uninitialized -Wno-error=unused-function -Wno-error=unused-but-set-variable -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-unused-but-set-parameter -Wno-missing-field-initializers -Wno-sign-compare -fno-rtti -MMD -c -DF_CPU=240000000L -DARDUINO=10819 -DARDUINO_ESP32_DEV -DARDUINO_ARCH_ESP32 "-DARDUINO_BOARD=\"ESP32_DEV\"" "-DARDUINO_VARIANT=\"esp32\"" -DESP32 -DCORE_DEBUG_LEVEL=0 "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6\\cores\\esp32" "-IC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6\\variants\\esp32" "C:\\Users\\USER\\AppData\\Local\\Temp\\arduino_build_60522\\sketch\\esp32test.ino.cpp" -o "C:\\Users\\USER\\AppData\\Local\\Temp\\arduino_build_60522\\sketch\\esp32test.ino.cpp.o"
Compiling libraries...
Compiling core...
Using precompiled core: C:\Users\USER\AppData\Local\Temp\arduino_cache_876638\core\core_d7995b1530d8419c10d4acd5a26fd4f0.a
Linking everything together...
"C:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\tools\\xtensa-esp32-elf-gcc\\1.22.0-97-gc752ad5-5.2.0/bin/xtensa-esp32-elf-gcc" -nostdlib "-LC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/lib" "-LC:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/ld" -T esp32_out.ld -T esp32.project.ld -T esp32.rom.ld -T esp32.peripherals.ld -T esp32.rom.libgcc.ld -T esp32.rom.spiram_incompatible_fns.ld -u esp_app_desc -u ld_include_panic_highint_hdl -u call_user_start_cpu0 -Wl,--gc-sections -Wl,-static -Wl,--undefined=uxTopUsedPriority -u __cxa_guard_dummy -u __cxx_fatal_exception -Wl,--start-group "C:\\Users\\USER\\AppData\\Local\\Temp\\arduino_build_60522\\sketch\\esp32test.ino.cpp.o" "C:\\Users\\USER\\AppData\\Local\\Temp\\arduino_cache_876638\\core\\core_d7995b1530d8419c10d4acd5a26fd4f0.a" -lgcc -lesp_websocket_client -lwpa2 -ldetection -lesp_https_server -lwps -lhal -lconsole -lpe -lsoc -lsdmmc -lpthread -llog -lesp_http_client -ljson -lmesh -lesp32-camera -lnet80211 -lwpa_supplicant -lc -lmqtt -lcxx -lesp_https_ota -lulp -lefuse -lpp -lmdns -lbt -lwpa -lspiffs -lheap -limage_util -lunity -lrtc -lmbedtls -lface_recognition -lnghttp -ljsmn -lopenssl -lcore -lfatfs -lm -lprotocomm -lsmartconfig -lxtensa-debug-module -ldl -lesp_event -lesp-tls -lfd -lespcoredump -lesp_http_server -lfr -lsmartconfig_ack -lwear_levelling -ltcp_transport -llwip -lphy -lvfs -lcoap -lesp32 -llibsodium -lbootloader_support -ldriver -lcoexist -lasio -lod -lmicro-ecc -lesp_ringbuf -ldetection_cat_face -lapp_update -lespnow -lface_detection -lapp_trace -lnewlib -lbtdm_app -lwifi_provisioning -lfreertos -lfreemodbus -lethernet -lnvs_flash -lspi_flash -lc_nano -lexpat -lfb_gfx -lprotobuf-c -lesp_adc_cal -ltcpip_adapter -lstdc++ -Wl,--end-group -Wl,-EL -o "C:\\Users\\USER\\AppData\\Local\\Temp\\arduino_build_60522/esp32test.ino.elf"
"C:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\tools\\esptool_py\\3.0.0/esptool.exe" --chip esp32 elf2image --flash_mode dout --flash_freq 80m --flash_size 4MB -o "C:\\Users\\USER\\AppData\\Local\\Temp\\arduino_build_60522/esp32test.ino.bin" "C:\\Users\\USER\\AppData\\Local\\Temp\\arduino_build_60522/esp32test.ino.elf"
esptool.py v3.0-dev
"C:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/gen_esp32part.exe" -q "C:\\Users\\USER\\AppData\\Local\\Temp\\arduino_build_60522/partitions.csv" "C:\\Users\\USER\\AppData\\Local\\Temp\\arduino_build_60522/esp32test.ino.partitions.bin"
"C:\\Users\\USER\\Documents\\ArduinoData\\packages\\esp32\\tools\\xtensa-esp32-elf-gcc\\1.22.0-97-gc752ad5-5.2.0/bin/xtensa-esp32-elf-size" -A "C:\\Users\\USER\\AppData\\Local\\Temp\\arduino_build_60522/esp32test.ino.elf"
Sketch uses 204454 bytes (15%) of program storage space. Maximum is 1310720 bytes.
Global variables use 13416 bytes (4%) of dynamic memory, leaving 314264 bytes for local variables. Maximum is 327680 bytes
  1. Build the binary for QEMU:
    In the directory C:\\Users\\USER\\AppData\\Local\\Temp\\arduino_build_60522 there are:

    image

    Open a Linux shell (WSL if you wonder), I ran:
user@machine:/mnt/c/Users/USER/AppData/Local/Temp/arduino_build_60522$ dd if=/dev/zero bs=1024 count=4096 of=esp32.qemu.bin
4096+0 records in
4096+0 records out
4194304 bytes (4.2 MB, 4.0 MiB) copied, 0.145199 s, 28.9 MB/s
user@machine:/mnt/c/Users/USER/AppData/Local/Temp/arduino_build_60522$ dd if=bootloader_dout_40m.bin bs=1 seek=$((0x1000)) of=esp32.qemu.bin conv=notrunc
17088+0 records in
17088+0 records out
17088 bytes (17 kB, 17 KiB) copied, 0.583094 s, 29.3 kB/s
user@machine:/mnt/c/Users/USER/AppData/Local/Temp/arduino_build_60522$ dd if=esp32test.ino.partitions.bin bs=1 seek=$((0x8000)) of=esp32.qemu.bin conv=notrunc
3072+0 records in
3072+0 records out
3072 bytes (3.1 kB, 3.0 KiB) copied, 0.117866 s, 26.1 kB/s
user@machine:/mnt/c/Users/USER/AppData/Local/Temp/arduino_build_60522$ dd if=esp32test.ino.bin bs=1 seek=$((0x10000)) of=esp32.qemu.bin conv=notrunc
204576+0 records in
204576+0 records out
204576 bytes (205 kB, 200 KiB) copied, 8.40457 s, 24.3 kB/s

The file bootloader_dout_40m.bin came from arduino-esp32 repo and I wonder if I used the correct version.

  1. Run QEMU
qemu-system-xtensa -nographic -machine esp32 -drive file=esp32.qemu.bin,if=mtd,format=raw

And the result:

user@machine:~$ qemu-system-xtensa -nographic -machine esp32 -drive file=esp32.qemu.bin,if=mtd,format=raw
==20376==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
Adding SPI flash device
ets Jul 29 2019 12:21:46

rst:0x1 (POWERON_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DOUT, clock div:2
load:0x3fff0030,len:1184
load:0x40078000,len:12776
load:0x40080400,len:3032
entry 0x400805e4

P/S: Nothing else output, but QEMU eats nearly all my CPU (Is it not work or too slow?)
image

What am I doing wrong here? Thanks in advance!

@igrr
Copy link
Member

igrr commented Jan 25, 2022

Why the wiki I saw (by clicking to Wiki tab) and the Wiki link you sent me are so much different?

The latest version of the wiki was updated to use esptool.py for generation of flash binary image. This is easier than using dd, in most cases. However since you are using Arduino IDE, you don't have the flash_args file (it's generated by IDF build system). So I gave you a link to an earlier version of the Wiki which had that dd based script.

It looks like you are using 1.0.6 version of arduino-esp32 core to test this. I suspect that something in the way that version of the core works with UART interface is not compatible with QEMU. It seems that arduino-esp32 version 2.0.x fixes this issue.
However there's currently another issue with arduino-esp32 reported in #26. It's already fixed in the master branch of arduino-esp32, but not part of any release yet. If you try building the sketch with the master branch of arduino-esp32, i think it should work. Alternatively, wait for the next arduino-esp32 release which will include the above mentioned fix.

@raspiduino
Copy link
Author

Ok I will try to clone the latest source in arduino-esp32 repo and try again.

Thanks for the information and I will post a comment here when I have something new.

@raspiduino
Copy link
Author

raspiduino commented Jan 26, 2022

Okay I switched to Ubuntu (not WSL anymore) and install latest arduino-esp32 board from package_esp32_dev_index.json.

Board setting:
image

After using Export compiled binary, it showed some log. But it's too long for pasting here so I attached as arduinoide.txt

Or you can find it on Github Gist here

In the directory /tmp/arduino_build_171810/:

user@ubuntu:/tmp/arduino_build_171810$ ls
build_opt.h          hello_world.ino.bootloader.bin  includes.cache  sketch
build.options.json   hello_world.ino.elf             libraries
core                 hello_world.ino.map             partitions.csv
hello_world.ino.bin  hello_world.ino.partitions.bin  preproc
user@ubuntu:/tmp/arduino_build_171810$

I modified the script make-flash-img.sh to use for this purpose:

user@ubuntu:/tmp/arduino_build_171810$ cat make-flash-img.sh 
#!/usr/bin/env bash
set -e
arg_projname=$1
arg_flashimg=$2

if [ -z "$1" -o -z "$2" ]; then
    echo "Usage: make-flash-img.sh app_name flash_img_file"
    exit 1
fi

dd if=/dev/zero bs=1024 count=4096 of=${arg_flashimg}
dd if=${arg_projname}.bootloader.bin bs=1 seek=$((0x1000)) of=${arg_flashimg} conv=notrunc
dd if=${arg_projname}.partitions.bin bs=1 seek=$((0x8000)) of=${arg_flashimg} conv=notrunc
dd if=${arg_projname}.bin bs=1 seek=$((0x10000)) of=${arg_flashimg} conv=notrunc
user@ubuntu:/tmp/arduino_build_171810$ ./make-flash-img.sh hello_world.ino hello_world.bin
4096+0 records in
4096+0 records out
4194304 bytes (4,2 MB, 4,0 MiB) copied, 0,0680444 s, 61,6 MB/s
17248+0 records in
17248+0 records out
17248 bytes (17 kB, 17 KiB) copied, 0,236782 s, 72,8 kB/s
3072+0 records in
3072+0 records out
3072 bytes (3,1 kB, 3,0 KiB) copied, 0,0411267 s, 74,7 kB/s
228432+0 records in
228432+0 records out
228432 bytes (228 kB, 223 KiB) copied, 2,08783 s, 109 kB/s
user@ubuntu:/tmp/arduino_build_171810$ ls
build_opt.h         hello_world.bin                 hello_world.ino.elf             includes.cache     partitions.csv
build.options.json  hello_world.ino.bin             hello_world.ino.map             libraries          preproc
core                hello_world.ino.bootloader.bin  hello_world.ino.partitions.bin  make-flash-img.sh  sketch
user@ubuntu:/tmp/arduino_build_171810$ 

Run it with QEMU:

user@ubuntu:/tmp/arduino_build_171810$ qemu-system-xtensa -nographic -machine esp32 -drive file=hello_world.bin,if=mtd,format=raw
==23286==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
Adding SPI flash device
ets Jul 29 2019 12:21:46

rst:0x1 (POWERON_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DOUT, clock div:1
load:0x3fff0030,len:1284
load:0x40078000,len:12836
load:0x40080400,len:3032
entry 0x400805e4
ets Jul 29 2019 12:21:46

rst:0x7 (TG0WDT_SYS_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DOUT, clock div:1
load:0x3fff0030,len:1284
load:0x40078000,len:12836
ets Jul 29 2019 12:21:46

rst:0x7 (TG0WDT_SYS_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DOUT, clock div:1
load:0x3fff0030,len:1284
load:0x40078000,len:12836
load:0x40080400,len:3032
entry 0x400805e4
ets Julets Jul 29 2019 12:21:46

rst:0x7 (TG0WDT_SYS_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DOUT, clock div:1
load:0x3fff0030,len:1284
load:0x40078000,len:12836
load:0x40080400,len:3032
entry 0x400805e4
ets Jul 29 2019 12:21:46

rst:0x7 (TG0WDT_SYS_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DOUT, clock div:1
load:0x3fff0030,len:1284
load:0x40078000,len:12836
load:0x40080400,len:3032
entry 0x400805e4
ets Jul 29 2019 12:21:46

rst:0x7 (TG0WDT_SYS_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DOUT, clock div:1
load:0x3fff0030,len:1284
load:0x40078000,len:12836
load:0x40080400,len:3032
entry 0x400805e4
ets Jul 29 2019 12:21:46

rst:0x7 (TG0WDT_SYS_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DOUT, clock div:1
load:0x3fff0030,len:1284
load:0x40078000,len:12836
load:0x40080400,len:3032
entry 0x400805e4
ets Jul 29 2019 12:21:46

rst:0x7 (TG0WDT_SYS_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DOUT, clock div:1
load:0x3fff0030,len:1284
load:0x40078000,len:12836
load:0x40080400,len:3032
entry 0x400805e4
ets Jul 29 2019 12:21:46

rst:0x7 (TG0WDT_SYS_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DOUT, clock div:1
load:0x3fff0030,len:1284
load:0x40078000,len:12836
load:0x40080400,len:3032
entry 0x400805e4
E (84004) task_wdt: Task watchdog got triggered. The following tasks did not reset the watchdog in time:
E (84004) task_wdt:  - IDLE (CPU 0)
E (84004) task_wdt: Tasks currently running:
E (84004) task_wdt: CPU 0: main
E (84004) task_wdt: CPU 1: ipc1
E (84004) task_wdt: Aborting.

abort() was called at PC 0x400d7091 on core 0


Backtrace:0x40082dfd:0x3ffbe7800x400879f1:0x3ffbe7a0 0x4008c2f9:0x3ffbe7c0 0x400d7091:0x3ffbe840 0x40084079:0x3ffbe860 0x4008676d:0x3ffbd210 0x4008682c:0x3ffbd230 0x4008694c:0x3ffbd250 0x400d1dfc:0x3ffbd270 0x400d16d2:0x3ffbd2b0 0x400d1644:0x3ffbd2d0 0x400ebf30:0x3ffbd300 




ELF file SHA256: 0000000000000000

Rebooting...
ets Jul 29 2019 12:21:46

rst:0xc (SW_CPU_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DOUT, clock div:1
load:0x3fff0030,len:1284
load:0x40078000,len:12836
load:0x40080400,len:3032
entry 0x400805e4
ets Jul 29 2019 12:21:46

rst:0x8 ets Jul 29 2019 12:21:46

rst:0x7 (TG0WDT_SYS_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DOUT, clock div:1
load:0x3fff0030,len:1284
load:0x40078000,len:12836
load:0x40080400,len:3032
entry 0x400805e4
ets Jul 29 2019 12:21:46

rst:0x7 (TG0WDT_SYS_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DOUT, clock div:1
load:0x3fff0030,len:1284
load:0x40078000,len:12836
load:0x40080400,len:3032
entry 0x400805e4
ets Jul 29 2019 12:21:46

rst:0x7 (TG0WDT_SYS_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DOUT, clock div:1
load:0x3fff0030,len:1284
load:0x40078000,len:12836
load:0x40080400,len:3032
entry 0x400805e4
E (99124) task_wdt: Task watchdog got triggered. The following tasks did not reset the watchdog in time:
E (99124) task_wdt:  - IDLE (CPU 0)
E (99124) task_wdt: Tasks currently running:
E (99124) task_wdt: CPU 0: main
E (99124) task_wdt: CPU 1: ipc1
E (99124) task_wdt: Aborting.

abort() was called at PC 0x400d7091 on core 0


Backtrace:0x40082dfd:0x3ffbe7800x400879f1:0x3ffbe7a0 0x4008c2f9:0x3ffbe7c0 0x400d7091:0x3ffbe840 0x40084079:0x3ffbe860 0x400867f4:0x3ffbd210 0x4008682c:0x3ffbd230 0x4008694c:0x3ffbd250 0x400d1dfc:0x3ffbd270 0x400d16d2:0x3ffbd2b0 0x400d1644:0x3ffbd2d0 0x400ebf30:0x3ffbd300 




ELF file SHA256: 0000000000000000

Rebooting...
ets Jul 29 2019 12:21:46

rst:0xc (SW_CPU_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DOUT, clock div:1
load:0x3fff0030,len:1284
load:0x40078000,len:12836
load:0x40080400,len:3032
entry 0x400805e4
QEMU: Terminated
user@ubuntu:/tmp/arduino_build_171810$ 

It stuck in a forever loop until I press CTRL+A and then X to quit QEMU.

Is the part

rst:0x7 (TG0WDT_SYS_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DOUT, clock div:1
load:0x3fff0030,len:1284
load:0x40078000,len:12836
load:0x40080400,len:3032
entry 0x400805e4
E (99124) task_wdt: Task watchdog got triggered. The following tasks did not reset the watchdog in time:
E (99124) task_wdt:  - IDLE (CPU 0)
E (99124) task_wdt: Tasks currently running:
E (99124) task_wdt: CPU 0: main
E (99124) task_wdt: CPU 1: ipc1
E (99124) task_wdt: Aborting.

abort() was called at PC 0x400d7091 on core 0


Backtrace:0x40082dfd:0x3ffbe7800x400879f1:0x3ffbe7a0 0x4008c2f9:0x3ffbe7c0 0x400d7091:0x3ffbe840 0x40084079:0x3ffbe860 0x400867f4:0x3ffbd210 0x4008682c:0x3ffbd230 0x4008694c:0x3ffbd250 0x400d1dfc:0x3ffbd270 0x400d16d2:0x3ffbd2b0 0x400d1644:0x3ffbd2d0 0x400ebf30:0x3ffbd300 




ELF file SHA256: 0000000000000000

Rebooting...

interesting for you?

@raspiduino
Copy link
Author

After setting the option Core Debug Version to Verbose, I got:

user@ubuntu:/tmp/arduino_build_171810$ qemu-system-xtensa -nographic -machine esp32 -drive file=hello_world.bin,if=mtd,format=raw
==23740==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
Adding SPI flash device
ets Jul 29 2019 12:21:46

rst:0x1 (POWERON_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DOUT, clock div:1
load:0x3fff0030,len:1284
load:0x40078000,len:12836
load:0x40080400,len:3032
entry 0x400805e4
[   930][D][esp32-hal-cpu.c:211] setCpuFrequencyMhz(): PLL: 480 / 2 = 240 Mhz, APB: 80000000 Hz
ets Jul 29 2019 12:21:46

rst:0x7 (TG0WDT_SYS_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DOUT, clock div:1
load:0x3fff0030,len:1284
load:0x40078000,len:12836
load:0x40080400,len:3032
entry 0x400805e4
ets Jul 29 2019 12:21:46

rst:0x7 (TG0WDT_SYS_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DOUT, clock div:1
load:0x3fff0030,len:1284
load:0x40078000,len:12836
load:0x40080400,len:3032
entry 0x400805e4
[  1167][D][esp32-hal-cpu.c:211] setCpuFrequencyMhz(): PLL: 480 / 2 = 240 Mhz, APB: 80000000 Hz
ets Jul 29 2019 1ets Jul 29 2019 12:21:46

rst:0x7 (TG0WDT_SYS_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DOUT, clock div:1
load:0x3fff0030,len:1284
load:0x40078000,len:12836
load:0x40080400,len:3032
entry 0x400805e4
ets Jul 29 2019 12:21:46

rst:0x7 (TG0WDT_SYS_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DOUT, clock div:1
load:0x3fff0030,len:1284
load:0x40078000,len:12836
load:0x40080400,len:3032
entry 0x400805e4
[  1035][D][esp32-hal-cpu.c:211] setCpuFrequencyMhz(): PLL: 480 / 2 = 240 Mhz, APB: 80000000 Hz
ets Jul 29 2019 12:21:46
ets Jul 29 2019 12:21:46

rst:0x7 (TG0WDT_SYS_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DOUT, clock div:1
load:0x3fff0030,len:1284
load:0x40078000,len:12836
load:0x40080400,len:3032
entry 0x400805e4
[  1225][D][esp32-hal-cpu.c:211] setCpuFrequencyMhz(): PLL: 480 / 2 = 240 Mhz, APB: 80000000 Hz
E (30581) task_wdt: Task watchdog got triggered. The following tasks did not reset the watchdog in time:
E (30581) task_wdt:  - IDLE (CPU 0)
E (30581) task_wdt: Tasks currently running:
E (30581) task_wdt: CPU 0: main
E (30581) task_wdt: CPU 1: ipc1
E (30581) task_wdt: Aborting.

abort() was called at PC 0x400d7445 on core 0


Backtrace:0x40082dfd:0x3ffbe7800x400879f1:0x3ffbe7a0 0x4008c2f9:0x3ffbe7c0 0x400d7445:0x3ffbe840 0x40084079:0x3ffbe860 0x400d21b3:0x3ffbd250 0x400d178a:0x3ffbd2b0 0x400d16fc:0x3ffbd2d0 0x400ec31c:0x3ffbd300 




ELF file SHA256: 0000000000000000

Rebooting...

@igrr
Copy link
Member

igrr commented Jan 26, 2022

@raspiduino thanks for trying this out, sorry it didn't work as expected! Seems like you are using version 2.0.2 which still has the issue reported in #26. It is fixed in arduino-esp32 master branch (installable via git) but is not in any release yet.
I'll try this with the master branch of arduino-esp32 and let you know whether it actually works in QEMU...

@raspiduino
Copy link
Author

I tried the latest source from git repo, but it still:

user@ubuntu:/tmp/arduino_build_130815$ qemu-system-xtensa -nographic -machine esp32 -drive file=hello_world.bin,if=mtd,format=raw
==54624==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases!
Adding SPI flash device
ets Jul 29 2019 12:21:46

rst:0x1 (POWERON_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DOUT, clock div:1
load:0x3fff0030,len:1184
load:0x40078000,len:12804
ho 0 tail 12 room 4
load:0x40080400,len:3032
entry 0x400805e4
[  3047][D][esp32-hal-cpu.c:211] setCpuFrequencyMhz(): PLL: 480 / 2 = 240 Mhz, APB: 80000000 Hz
ets Jul 29 2019 12:21:46

rst:0x7 (TG0WDT_SYS_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DOUT, clock div:1
load:0x3fff0030,len:1184
load:0x40078000,len:12804
ho 0 tail 12 room 4
load:0x40080400,len:3032
entry 0x400805e4
ets Jul 29 2019 12:21:46

rst:0x7 (TG0WDT_SYS_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DOUT, clock div:1
load:0x3fff0030,len:1184
load:0x40078000,len:12804
ho 0 tail 12 room 4
load:0x40080400,len:3032
entry 0x400805e4
[  3426][D][esp32-hal-cpu.c:211] setCpuFrequencyMhz(): PLL: 480 / 2 = 240 Mhz, APB: 80000000 Hz
ets Jul 29 2019 12:21:46

rst:0x7 (TG0WDT_SYS_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
ets Jul 29 2019 12:21:46

rst:0x7 (TG0WDT_SYS_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DOUT, clock div:1
load:0x3fff0030,len:1184
load:0x40078000,len:12804
ho 0 tail 12 room 4
load:0x40080400,len:3032
entry 0x400805e4
[  2959][D][esp32-hal-cpu.c:211] setCpuFrequencyMhz(): PLL: 480 / 2 = 240 Mhz, APB: 80000000 Hz
ets Jul 29 2019 12:21:46

rst:0x7 (TG0WDT_SYS_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DOUT, clock div:1
load:0x3fff0030,len:1184
load:0x40078000,len:12804
ho 0 tail 12 room 4
load:0x40080400,len:3032
entry 0x400805e4
[  3217][D][esp32-hal-cpu.c:211] setCpuFrequencyMhz(): PLL: 480 / 2 = 240 Mhz, APB: 80000000 Hz
ets Jul 29 2019 12:21:46

rst:0x7 (TG0WDT_SYS_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DOUT, clock div:1
load:0x3fff0030,len:1184
load:0x40078000,len:12804
ho 0 tail 12 room 4
load:0x40080400,len:3032
entry 0x400805e4
[  3140][D][esp32-hal-cpu.c:211] setCpuFrequencyMhz(): PLL: 480 / 2 = 240 Mhz, APB: 80000000 Hz
E (116719) task_wdt: Task watchdog got triggered. The following tasks did not reset the watchdog in time:
E (116719) task_wdt:  - IDLE (CPU 0)
E (116719) task_wdt: Tasks currently running:
E (116719) task_wdt: CPU 0: main
E (116719) task_wdt: CPU 1: ipc1
E (116719) task_wdt: Aborting.

abort() was called at PC 0x400d778d on core 0


Backtrace:0x40082e21:0x3ffbe79c |<-CORRUPTED




ELF file SHA256: 0000000000000000

Rebooting...

@raspiduino
Copy link
Author

Hello,
From #26 thinksilicon said that:

I've successfully used the emulator for running some PlatformIO/Arduino sketches. PlatformIO used IDF v3.3.5.

So does that mean I can go back to IDF 3.3.5 as a temporary fix?

igrr pushed a commit that referenced this issue Aug 2, 2022
Include the qtest reproducer provided by Alexander Bulekov
in https://gitlab.com/qemu-project/qemu/-/issues/542.
Without the previous commit, we get:

  $ make check-qtest-i386
  ...
  Running test tests/qtest/intel-hda-test
  AddressSanitizer:DEADLYSIGNAL
  =================================================================
  ==1580408==ERROR: AddressSanitizer: stack-overflow on address 0x7ffc3d566fe0
      #0 0x63d297cf in address_space_translate_internal softmmu/physmem.c:356
      #1 0x63d27260 in flatview_do_translate softmmu/physmem.c:499:15
      #2 0x63d27af5 in flatview_translate softmmu/physmem.c:565:15
      #3 0x63d4ce84 in flatview_write softmmu/physmem.c:2850:10
      #4 0x63d4cb18 in address_space_write softmmu/physmem.c:2950:18
      #5 0x63d4d387 in address_space_rw softmmu/physmem.c:2960:16
      #6 0x62ae12f2 in dma_memory_rw_relaxed include/sysemu/dma.h:89:12
      #7 0x62ae104a in dma_memory_rw include/sysemu/dma.h:132:12
      #8 0x62ae6157 in dma_memory_write include/sysemu/dma.h:173:12
      #9 0x62ae5ec0 in stl_le_dma include/sysemu/dma.h:275:1
      #10 0x62ae5ba2 in stl_le_pci_dma include/hw/pci/pci.h:871:1
      #11 0x62ad59a6 in intel_hda_response hw/audio/intel-hda.c:372:12
      #12 0x62ad2afb in hda_codec_response hw/audio/intel-hda.c:107:5
      #13 0x62aec4e1 in hda_audio_command hw/audio/hda-codec.c:655:5
      #14 0x62ae05d9 in intel_hda_send_command hw/audio/intel-hda.c:307:5
      #15 0x62adff54 in intel_hda_corb_run hw/audio/intel-hda.c:342:9
      #16 0x62adc13b in intel_hda_set_corb_wp hw/audio/intel-hda.c:548:5
      #17 0x62ae5942 in intel_hda_reg_write hw/audio/intel-hda.c:977:9
      #18 0x62ada10a in intel_hda_mmio_write hw/audio/intel-hda.c:1054:5
      #19 0x63d8f383 in memory_region_write_accessor softmmu/memory.c:492:5
      #20 0x63d8ecc1 in access_with_adjusted_size softmmu/memory.c:554:18
      #21 0x63d8d5d6 in memory_region_dispatch_write softmmu/memory.c:1504:16
      #22 0x63d5e85e in flatview_write_continue softmmu/physmem.c:2812:23
      #23 0x63d4d05b in flatview_write softmmu/physmem.c:2854:12
      #24 0x63d4cb18 in address_space_write softmmu/physmem.c:2950:18
      #25 0x63d4d387 in address_space_rw softmmu/physmem.c:2960:16
      #26 0x62ae12f2 in dma_memory_rw_relaxed include/sysemu/dma.h:89:12
      #27 0x62ae104a in dma_memory_rw include/sysemu/dma.h:132:12
      #28 0x62ae6157 in dma_memory_write include/sysemu/dma.h:173:12
      #29 0x62ae5ec0 in stl_le_dma include/sysemu/dma.h:275:1
      #30 0x62ae5ba2 in stl_le_pci_dma include/hw/pci/pci.h:871:1
      #31 0x62ad59a6 in intel_hda_response hw/audio/intel-hda.c:372:12
      #32 0x62ad2afb in hda_codec_response hw/audio/intel-hda.c:107:5
      #33 0x62aec4e1 in hda_audio_command hw/audio/hda-codec.c:655:5
      #34 0x62ae05d9 in intel_hda_send_command hw/audio/intel-hda.c:307:5
      #35 0x62adff54 in intel_hda_corb_run hw/audio/intel-hda.c:342:9
      #36 0x62adc13b in intel_hda_set_corb_wp hw/audio/intel-hda.c:548:5
      #37 0x62ae5942 in intel_hda_reg_write hw/audio/intel-hda.c:977:9
      #38 0x62ada10a in intel_hda_mmio_write hw/audio/intel-hda.c:1054:5
      #39 0x63d8f383 in memory_region_write_accessor softmmu/memory.c:492:5
      #40 0x63d8ecc1 in access_with_adjusted_size softmmu/memory.c:554:18
      #41 0x63d8d5d6 in memory_region_dispatch_write softmmu/memory.c:1504:16
      #42 0x63d5e85e in flatview_write_continue softmmu/physmem.c:2812:23
      #43 0x63d4d05b in flatview_write softmmu/physmem.c:2854:12
      #44 0x63d4cb18 in address_space_write softmmu/physmem.c:2950:18
      #45 0x63d4d387 in address_space_rw softmmu/physmem.c:2960:16
      #46 0x62ae12f2 in dma_memory_rw_relaxed include/sysemu/dma.h:89:12
      qemu#47 0x62ae104a in dma_memory_rw include/sysemu/dma.h:132:12
      #48 0x62ae6157 in dma_memory_write include/sysemu/dma.h:173:12
      ...
  SUMMARY: AddressSanitizer: stack-overflow softmmu/physmem.c:356 in address_space_translate_internal
  ==1580408==ABORTING
  Broken pipe
  Aborted (core dumped)

Signed-off-by: Philippe Mathieu-Daudé <[email protected]>
Acked-by: Thomas Huth <[email protected]>
Message-Id: <[email protected]>
Signed-off-by: Thomas Huth <[email protected]>
@igrr
Copy link
Member

igrr commented Aug 3, 2022

I have verified that QEMU can be used to emulate binaries produced with Arduino IDE, using arduino-esp32 core v2.0.4.

  1. Compiled the application for ESP32 Dev module, 4MB flash size, DIO flash mode.
  2. "Export compiled binary" from the Sketch menu of the IDE
  3. Go to the directory where the sketch was built (should be visible in the log output) and create a merged binary using esptool (modify the command to match your sketch name):
    esptool.py --chip esp32 \
      merge_bin --flash_mode dio --flash_size 4MB --fill-flash-size 4MB --output merged.bin \
      0x1000 test_qemu.ino.bootloader.bin \
      0x8000 test_qemu.ino.partitions.bin \
      0x10000 test_qemu.ino.bin
    
  4. Run QEMU:
    qemu-system-xtensa -nographic -machine esp32 \
      -drive file=merged.bin,if=mtd,format=raw \
      -global driver=timer.esp32.timg,property=wdt_disable,value=true
    

The final line is important, we have to disable the Timer Group watchdog emulation, otherwise it will trigger during the boot process. This is because the boot process for an Arduino sketch is notably slower in QEMU than on a real chip. Note that there is also some delay between setup and loop execution, I haven't looked into this further. After some time both setup and loop output should be visible.

@igrr igrr closed this as completed Aug 3, 2022
@github-actions github-actions bot changed the title Can I use the binary compiled by Arduino IDE instead of ESP-IDF? Can I use the binary compiled by Arduino IDE instead of ESP-IDF? (QEMU-51) Aug 3, 2022
@raspiduino
Copy link
Author

Thanks! I will try this as soon as I can.

@tobozo
Copy link

tobozo commented Apr 13, 2023

Hi! I made a github action out of this:

https://github.com/tobozo/esp32-qemu-sim

I'm still struggling with psram though, apparently you can can't set CONFIG_SPIRAM_SPEED_40M from Arduino IDE and none of the settings I tried got it detected.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants