Issue with creating BIN files

I have created software on ESP32 in PlatformIO, when I upload it using upload in PlatformIO it all works fine. When I try to upload the generated BIN files via ESP Download Tool then the 2nd Serial Port in ESP does not work. What could be the reason? Everything else works.

Without a minimal example (code + platformio.ini) as well as how you use “the ESP Download Tool” to upload the firmware.bin, and possible other files like partitions.bin, bootloader etc., with their exact upload addresses, we can’t help much.

Unfortunately, I can not upload the source code - confidentiality agreement requirements and in addition, the code has more than 5000 lines in many files. Below I upload the settings from the platformio.ini file and a screenshot from the ESP Download Tool

platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200
monitor_filters = esp32_exception_decoder
upload_speed = 115200
board_build.f_flash = 40000000L
lib_deps =
adafruit/Adafruit MCP23017 Arduino Library@^2.3.0
jeremycole/I2C Temperature Sensors derived from the LM75@^1.0.3

Okay. The uppercase X in addess constants like 0X1000 seems suspicous but I’ll let it slip.

Now let’s compare all of these settings with what PlatformIO uses. Use the project task Advanced → Verbose Upload, to obtain the exact invocation that burns all firmware files to your board, and post it here.

I checked what PlatformIO sends and tested the same files in ESP Download Tool, but to no avail, still UART does not work.

If all addresses and files match (and I also see it matches DIO + 40MHz), it might just be that the ESP32 needs a reset (powercycle or press of the reset button) so that it starts running the written firmware? That’s what is doing with --after hard_reset.

If that still fails, you should look if there isn’t any bootloader output that might hint at an issue. Usually at 115200 baud, at the hardware UART0 pins, that is output.

It doesn’t change anything, it always resets the device after programming, nothing more than the standard chip startup information appears on the UART0 port

Does it also not work when you create the most minimal possible blinky firmware.bin and related files?