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

Вопрос А кому-нибудь удалось собрать из примера esphttpd с возможностью OTA?

Slacky

Member
Плата - Wemos D1 mini 4 мегами на борту.

Я как ни старался, ничего не получается. Заливать он просит или user2.bin или *.ota. При заливке user2.bin плата просто зависает и сбрасывается по wdt, но потом уже и не грузится. Пишет такое -

Код:
2nd boot version : 1.7(5d6f877)
SPI Speed : 40MHz
SPI Mode : QIO
SPI Flash Size & Map: 32Mbit(1024KB+1024KB)
jump to run user2 @ 101000

Fatal exception 0(IllegalInstructionCause):
epc1=0x40211371, epc2=0x00000000, epc3=0x00000000, excvaddr=0x00000000, depc=0x00000000
А если не исключение, то error magic!

Если же залить *.ota, то файл прекрасно заливается, но прошивка не меняется, после сброса работает то, что было до заливки.

Может кто пнет в нужную сторону?

Спасибо.
 

Slacky

Member
Не понятно что и как Вы заливаете.
Но возможно не залит файл параметров WIFI. В новую плату надо залить один раз.
При сборке получается три файла - *.user1.bin, *.user2.bin и *.ota. Собственно два последних и пытаюсь залить через форму, которая лежит в html/flash.

Можно для тупых более развернуто - что такое "файл параметров WiFi" ?

Плата запускается в STA режиме, подключается к роутеру. На страничку сервера можно зайти по адресу 192.168.100.20 ...
 

Slacky

Member
еще есть файл esp_init_data_default.bin - он грузится в последние сектора адрес зависит от объема флеш и содержит параметры для WIFI
Про это я знаю.

Код:
### Flash size 32Mbit-C1: 1024KB+1024KB
    boot_v1.2+.bin              0x00000
    user1.2048.new.5.bin        0x01000
    esp_init_data_default.bin   0x3fc000 (optional)
    blank.bin                   0xfe000 & 0x3fe000
Но тогда в makefile.ota ошибка. Потому что при таких настройках

Код:
BLANKPOS=$$(printf 0x%X $$(($(ESP_SPI_FLASH_SIZE_K)*512-0x2000)))
INITDATAPOS=$$(printf 0x%X $$(($(ESP_SPI_FLASH_SIZE_K)*512-0x4000)))
blank.bin и esp_init_data_default.bin заливается по адресам

Код:
c:/Espressif/utils/ESP8266/esptool.exe --port COM6 --baud 921600 write_flash --flash_freq 40m --flash_mode qio --flash_size 32m-c1 0x1FE000 c:/Espressif/ESP8266_SDK/bin/blank.bin 0x1FC000 c:/Espressif/ESP8266_SDK/bin/esp_init_data_default.bin
 

Slacky

Member
----------------------
esp_init_data_default.bin надо залить один раз загрузчиком.
При загрузке OTA его грузить не надо.
Но один раз загрузить надо обязательно в новую ESP так как в ней обычно старое SDK.
Ну в общем сходу повторить не удалось, пришлось почитать, как строится загрузка и с какого адреса. В принципе все правильно, user2.bin пытается стартовать с 101000. Останется только понять, куда сервер грузит прошивку и прочее.

Вопрос после прочтения доков - что за файл master_device_key.bin?
 

Slacky

Member
В общем немного разобрался в принципе заливки файлов. Но все равно не до конца.

Во-первых. Если у вас на борту флеш 4 мега, то нужно дорабатывать makefile.ota и
Код:
CgiUploadFlashDef uploadParams = {}
в user_main.c, так как там все заточено на 512 мег.

Далее. У него или ошибка в коде или я не разобрался. Если нужно заливать user2.bin то он льется по адресу 0x1000 всегда, а это приводи к краху системы. Правильно при user2.bin заливается только файл *.ota.

А вот если нужно залить user1.bin, то уже к краху приводит заливка файла *.ota, а файл user1.bin прекрасно заливается.

Но все равно, обновления заливаются только два раза, т.е. первый раз для user2.bin, второй раз для user1.bin,. А вот третья попытка заливки user2.bin приводит к исключению.
Код:
 ets Jan  8 2013,rst cause:2, boot mode:(3,6)

load 0x40100000, len 2592, room 16
tail 0
chksum 0xf3
load 0x3ffe8000, len 764, room 8
tail 4
chksum 0x92
load 0x3ffe82fc, len 676, room 4
tail 0
chksum 0x22
csum 0x22

2nd boot version : 1.7(5d6f877)
SPI Speed : 40MHz
SPI Mode : QIO
SPI Flash Size & Map: 32Mbit(1024KB+1024KB)
jump to run user2 @ 101000

Fatal exception 28(LoadProhibitedCause):
epc1=0x4021ebf7, epc2=0x00000000, epc3=0x00000000, excvaddr=0x00000000, depc=0x00000000
 

Kitaro

New member
Добрый день. Извините, что я так врываюсь, а при сборке примера у Вас не бьіло ошибки
mingw32-make.exe: *** No rule to make target 'libesphttpd/mkupgimg/', needed by 'libesphttpd/mkupgimg/mkupgimg'. Зупинка.
 
Сверху Снизу