• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Вопросы по esptools.exe

SpLab

New member
А где Вы берете эту esptool-ck.exe? На гитхабе https://github.com/tommie/esptool-ck эта утилита не обновлялась 3 месяца, а функционал заливки бинарника в железо у них стоит только в ToDo. Да и несчастная esptool.py: в Вашей сборке она тоже немного отличается от того что на гитхабе. Вообще я смотрю утилит для загрузки сообщество полно наплодило, лучше бы собрались и одну какую-нибудь нормально допилили, и лучше бы это было что-то подобное esptool-ck.exe, т.к. она хоть на си, а эти все питоны пусть на бэкенде серверов работают, там где им и положено работать.
 

CHERTS

Moderator
Команда форума
несчастная esptool.py: в Вашей сборке она тоже немного отличается от того что на гитхабе.
Отличается потому что я её немного модифицировал, а мой pull request в офф.репо не приняли, так что мои доработки остаются сугубо у меня.
 

SpLab

New member
Вот ведь бардак развели на гитхабе. По моей ссылке походу проект похоронили и начали новый репозиторий. А ведь гугл выдает именно репозиторий по моей ссылке.
Кстати судя по исходникам они этот баг не фиксили. Но это легкго пофиксить, в том числе и в esptool.py. Жалко не дружу с английским, а то писанул бы им о баге и как с ним бороться.
 

pvvx

Активный участник сообщества
https://github.com/igrr/esptool-ck/blob/master/espcomm/espcomm.c
int espcomm_start_flash(uint32_t size, uint32_t address) - никакой коррекции.
Ныне занят очень и помочь ничем глобальным не могу. Есть время только по 15 минут, когда устаю от другой задачи, в качестве отвлечения :) Позже или сами...
 
Последнее редактирование:

CHERTS

Moderator
Команда форума
https://github.com/igrr/esptool-ck/blob/master/espcomm/espcomm.c
int espcomm_start_flash(uint32_t size, uint32_t address) - никакой коррекции.
Ныне занят очень и помочь ничем глобальным не могу. Есть время только по 15 минут, когда устаю от другой задачи, в качестве отвлечения :) Позже или сами...
Лично меня проблема избыточной перезаписи не беспокоит, я переписываю все последовательно и сразу. Так что подождем, может автор сам исправит.
 

SpLab

New member
Я могу проверить все известные загрузчики, время есть, только подскажите чем снимать дамп с памяти.
 

pvvx

Активный участник сообщества
Лично меня проблема избыточной перезаписи не беспокоит, я переписываю все последовательно и сразу. Так что подождем, может автор сам исправит.
Беда и у вас - при перезаписи "всей прошивки" два раза стираются начальные сектора flash. Дырку протрет быстрее, при частой отладке...
Я могу проверить все известные загрузчики, время есть, только подскажите чем снимать дамп с памяти.
python.exe esptool.py -p COM6 -b 230400 read_flash 0 0x80000 fullflash.bin
----
Кое как исправленная esptool.py путем копирования и вставки кусков из flash_download_tool_python2.6_wxpython2.8_release_v0.9.3.1_141118 (но минимум стирания = 2 сектора)
 

Вложения

Последнее редактирование:

SpLab

New member
Испытуемые: 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 секторов соответственно.
 
Последнее редактирование:

pvvx

Активный участник сообщества
......
и возможно FLASH_DOWNLOAD_TOOLS, но в обеих из-за погрешности округления стирается всеже больше, например там где достаточно стереть 2 или 18 будет стираться 4 и 20 секторов соответственно.
Дык код по вычислению размера стирания в той esptool.py я вставил из FLASH_DOWNLOAD_TOOLS_v0.9.3.1_141118 по которой Espressif отрапортовал, что всё исправлено :)
Я там ничего своего не менял. Тупо заменил кусок и концовку (а то орала, а теперь два вопроса в двух квадратах рисует :) ) и всё...
esptool-ck.exe тоже не удалось испытать по причине обнаруженной в нем ошибки (пакет синхронизации от ESP приходит в восьмикратном повторении, а esptool-ck.exe анализирует только первый пакет и сразу пытается начать прошивать и в буфере приема оказывается мусор от остатков пакета синхронизации, на что прога говорит что не получен ответ и отваливается. Возможно на более высоких скоростях это может не проявляться.)
её уже "чинили" от этой ошибки - указано в git...
 
Последнее редактирование:

SpLab

New member
её уже "чинили" от этой ошибки - указано в git...
Я взял exe-шник из сборки DevKIT'a - видимо оказалась старая версия
....
Я тут час голову ломал почему же все-таки в поправленном Вами путем копипаста esptool.py при попытке записать 1,5 сектора стирается аж 4, хотя по логике должно стираться только 2. Несколько раз писал и читал, думал может я ошибся - нет все так и есть. Я вообще не знаю питон, но ошибка закралась в строчке 244, там
area_len = _size
а нужно сделать так:
area_len = int(_size)
Ох уж мне эти языки с автоматической типизацией переменных. В общем переменная area_len дальше в вычислениях должна участвовать как целая величина, а она была дробной. От этого кол-во секторов для стирания округляясь в большую сторону увеличивалось на +1 и становилось нечетным, а далее делалось кратным двум и вуаля: +2 сектора стирается в довесок.
 
  • Like
Реакции: TRO

pvvx

Активный участник сообщества
Я взял exe-шник из сборки DevKIT'a - видимо оказалась старая версия
....
А я думаю, что просто не дочинили.
----
Поправил 244. Вложил.
Запись в 0x0A000 clear_eep.bin (12288 байта = 3 сектора), стирает до:

http://192.168.4.1/web.cgi?hexdmpb0x4020dff0=32
4020dff0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
4020e000: 7b 66 69 6c 6c 53 74 79 6c 65 3a 27 23 66 66 66 {fillStyle:'#fff


т.е. до четного числа секторов (иначе похоже не скорректировать было).
Как кривая и временная затычка пойдет.
Код:
Entering bootloader...
Connecting...
Erasing flash...
head: 3 ;total: 3
erase size : 8192
Writing at 0x0000cc00... (100 %)

Leaving...
☺♠
Вот эти рожицы "☺♠ " тоже скопированы из кода Espressif :) Они выводятся в 287 строке по приколу, для забавы.... Жалко что там возврат не 0x07 - пищали бы ещё... :)
 

Вложения

SpLab

New member
Попробовал последний esptool-ck.exe - таже фигня - на низких скоростях не работает. Они походу анализируют только первый пакет из восьми (ответ на пакет синхронизации), плюс что-то намудрили с таймаутами - проскакивает то один пакет, то несколько, а затем в ответ на пакет стирания приходит мусор из оставшихся пакетов синхронизации. На более высоких скоростях видимо успеют проскочить все 8 пакетов прежде чем прога выдаст команду на стирание.
И кстати на гитхабе я не нашел чтобы была правка по этой проблеме, там только что-то по таймаутам правили.
 

Stanislav_labs

New member
Господа приветствую !
Подскажите , существует ли возможность залить 16 метровую FS ? Как я понял стандартный esptool не льет больше 4m .. Какие варианты ? Пересобрать Esptool ?
Заранее благодарен
 
Сверху Снизу