Hi PlatformIO: I have been successful in flashing firmware on my ESP32 WROOM 32E using the Arduino enviroment on PlatformIO. I am uploading over the Program (UART) port on an ESP-PROG board. Now I would like to create a Python script to flash firmware on new devices for production.
I tried to use esptool.py to flash the firmware.bin that PlatformIO produces. I quickly found that there is also a bootloader that needs to be flashed. Even worse, the protocol seems to be a function of board-build.partitions, and I use different board-builds on different projects.
Is there a description somewhere of the flash protocol using esptool.py including the bootloader and other partitions needed? Is there another simple way to do it? (The ESP Flash Download Tool seems limited.) Or is this part of a secret sauce that is never talked about?
Using pio run once to build the firmware (or once for every environment with -e) and pio run -t nobuild -t upload is not enough? By using -t nobuild, PIO will directly jump to uploading the built firmware with the right parameters without compiling first.
Of course, a different approach would be to just do a verbose upload with pio run -e <env> -v -t upload to see the exactesptool.py invocation. Then just copy that into a shell script and execute it. As long as your partition table doesn’t dynmically change, that is sufficient and efficient.
Is there documentation on the nobuild CLI feature?
I have an extra_scripts = pre:myscript.py which runs before each build and it even runs with the nobuild option. Is there a way to change this so it ONLY runs pre: build? Is there a way for my script.py to know whether this is a build or nobuild?
At this point, I took @maxgerhardt’s suggestion (Thank You) and ran a verbose upload and extracted the esptool.py command line and this works a treat. It is a really long command line !