Испытуемые: esptool.py исправленная pvvx, esptool.py из DevKIT, NodeMCU flasher.
Делаю четыре пробы прошивки бинарными файлами размером: 1 сектор, 1,5 сектора, 1 блок, 1блок + 1,5 сектора, т.е. 4096, 6144, 65536, 71680 байт соответственно. Файлы пишутся с адреса 0x20000 (адрес выбран для возможности считывания дампа веб-сервером от pvvx, это незанятая область в прошивке). Все проверенные утилиты пишут ровно столько сколько должны, а вот стирают по разному.
esptool.py исправленная pvvx:
1 сектор: стирает 2 сектора!
1,5 сектора: стирает 4 сектора!
1 блок: стирает неизвестно сколько (один блок или меньше), вывод esptool.py говорит о стирании 32768 байт!
1 блок + 1,5 сектора: стирает 20 секторов! вывод esptool.py говорит о стирании 40960 байт!
esptool.py из DevKIT:
1 сектор: стирает 2 сектора
1,5 сектора: стирает 4 сектора!!!
1 блок: стирает 2 блока
1 блок + 1,5 сектора: стирает 34 сектора (2 блока + 2 сектора)!
NodeMCU flasher:
1 сектор: стирает 4 сектора!
1,5 сектора: стирает 4 сектора!
1 блок: стирает 2 блока
1 блок + 1,5 сектора: стирает 34 сектора (2 блока + 2 сектора)!
P.S. Моя отладочная плата в силу некоторых технических ограничений поддерживает скорость UART 38400 и ниже. По этой причине не удалось испытать FLASH_DOWNLOAD_TOOLS_v0.9.3.1 (там скорость выбирается 115200 и выше), а esptool.py из его исходников отказался работать автономно от программы. esptool-ck.exe тоже не удалось испытать по причине обнаруженной в нем ошибки (пакет синхронизации от ESP приходит в восьмикратном повторении, а esptool-ck.exe анализирует только первый пакет и сразу пытается начать прошивать и в буфере приема оказывается мусор от остатков пакета синхронизации, на что прога говорит что не получен ответ и отваливается. Возможно на более высоких скоростях это может не проявляться.) XTCOM_UTIL.exe тоже не проверил - честно говоря надоело уже.
P.P.S. Т.о. не одна из утилит не стирает правильно, минимально лишнего затирает только esptool.py исправленная pvvx и возможно FLASH_DOWNLOAD_TOOLS, но в обеих из-за погрешности округления стирается всеже больше, например там где достаточно стереть 2 или 18 будет стираться 4 и 20 секторов соответственно.