• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Общие баги/глюки/проблемы в пакете Sming

AnonymUser

New member
знаний и опыта...с эклипсом как то давно не сложилось
но не суть же чем шить,если бинарники собраны без ошибок и шьется без ошибок?
 

pvvx

Активный участник сообщества
https://github.com/anakod/esp-lwip/blob/esp8266-1.4.1/our/eagle_lwip_if.c имеет 2 ошибки-недочета.
Не сохраняет state->myif = myif, а так-же адрес queue (обоих веток - там одна для AP, другая для ST), похоже использующийся при закрытии softap для освобождения памяти (пока не найден где используются, т.к. берутся по смещению...).
Короче пока ваш OpenLwIP неполноценен и несовместим с примененным SDK :(
Ещё китайцы изменили конфиг LwIP. Что-то вроде выставили опцию LWIP_AUTOIP или LWIP_ARP, но переписали netif_set_link_up() добавив etharp_request() и т.д........
Т.е. размер структуры и поля struct netif поехали, по сравнению с исходниками из SDK 0.9.4 к которым адаптирован ваш OpenLwIP.
Используйте китайский liblwip.a с выкинутыми лишними частями -
newlwip.bat:
Код:
del libmlwip.a
md lwip.lib
cd lwip.lib
C:\Espressif\xtensa-lx106-elf\bin\xtensa-lx106-elf-ar x ..\liblwip.a
C:\Espressif\xtensa-lx106-elf\bin\xtensa-lx106-elf-ar ru ..\libmlwip.a dhcp.o dns.o init.o memp.o netif.o pbuf.o tcp.o tcp_in.o tcp_out.o timers.o udp.o icmp.o igmp.o inet_chksum.o ip.o ip_addr.o etharp.o raw.o
cd ..
rd /q /s lwip.lib
Или ищите что за ??? в данном файле:
 

Вложения

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

anakod

Moderator
Команда форума
прошиваю их с помощью nodemcu flasher по соответсвуюющих адресах и все...от примера ничего и не видно...
А выбрать цель "flash" в Eclipse пробовали?

pvvx, спасибо за развернутый комментарий, а в каком случае будет проявляться эта ошибка? Вы уверен что остальные патчи примененные в этой сборке не закрывают проблему? Дело в том что после последнего фикса больше ни одной проблемы связанной с LWIP я не встречал.

UPD Кажется понял, eagle_lwip_if используется опцианально и в моем случае, насколько понимаю, он не задействован (используется Espressif'ский)
https://github.com/kadamski/esp-lwip/blob/esp8266-1.4.1/Makefile-local.mk#L2
 

pvvx

Активный участник сообщества
Вы уверен что остальные патчи примененные в этой сборке не закрывают проблему? Дело в том что после последнего фикса больше ни одной проблемы связанной с LWIP я не встречал.
Я тоже подключал LwIP с другими полями структуры netif. На первый взгляд работало, но на первый... При этом ничего из других либ у меня вообще не включено. Портятся первые пакеты, т.к. это инициализация.
А вам бы надо проверить - не оставляет ли не освобожденную память при включении/отключении AP и ST. По логике указатель на queue запоминается, наверно, но там китайцы, для освобождения памяти при закрытии. При закрытии AP в коде очень много освобождений памяти по указателям фиг знает от куда (берутся по разным смещениям и я этот кусок ещё не разбирал)
Проверить сложно - если приходящие пакеты бьются в пару местах, то большинстве случаев использования их в текущих приложениях это будет не заметно... Всё это дает нестандартные глюки и определить сразу сложно.
 
Последнее редактирование:

Dr. Morg

New member
Обновился до 1.0.7, перестал работать залитый в модуль проект. На старой версии Sming собирается и работает нормально.

После успешной загрузки в модуль в консоли тишина, даже крякозябры не пробегают... Если передёрнуть питание модуля, то немного крякозябр свалится в консоль, но на этом всё заканчивается.
10:15:55 **** Build of configuration Default for project ESP_HTTP_Server ****
mingw32-make.exe -f C:/Sming-master/ESP_HTTP_Server/Makefile flash
ЋиЁЎЄ : ЌҐ г¤ Ґвбп ©вЁ Їа®жҐбб "termite.exe".
c:/Espressif/utils/esptool.exe -p COM2 -b 115200 write_flash 0x00000 out/firmware/eagle.flash.bin 0x9000 out/firmware/eagle.irom0text.fs.bin
Entering bootloader...
Connecting...
Erasing flash...
head: 10 ;total: 10
erase size : 20480

Writing at 0x00000000... (2 %)
Writing at 0x00000400... (5 %)
Writing at 0x00000800... (8 %)
Writing at 0x00000c00... (10 %)
вырезано
Writing at 0x0003fc00... (100 %)

Leaving...

10:16:27 Build Finished (took 32s.36ms)
 

Dr. Morg

New member
@anakod,
eagle.flash.bin - 36,9 КБ (37 840 байт)
eagle.irom0text.bin - 203 КБ (207 975 байт)
eagle.irom0text.fs.bin - 219 КБ (224 359 байт)
 

JustACat

Moderator
Команда форума
Dr. Morg, makefile не забыли поменять? anakod забыл упомянуть (как мне кажется), что makefile от старой версии Sming не подходит к новой, и собранные и прошитые проекты в таком виде не работают :) Сам с этим столкнулся...
В общем, сравните сами makefile от старой и от новой версии - там несколько различий в параметрах + адрес сдвинут заливки, емнип.
 

Dr. Morg

New member
@JustACat, у меня со старый Makefile даже проект не собрался - вагон ошибок выдал.
Подсунул Makefile из нового, проект стал компилироваться, но после загрузки в модуль - тишина... :(
 

JustACat

Moderator
Команда форума
Dr. Morg, ну, нужно чтобы все по чистому было, может какие хвосты от старого остаются (clean делали)? Что-то пересекается? Может UDK старый (а с ним и SDK)?

Update: Кстати, а может UDK новый? =) У меня собирается (и работает) все на UDK предпоследнем... На последнем еще не пробовал...
 
Последнее редактирование:

JustACat

Moderator
Команда форума
Dr. Morg, последний раз прямо вчера. 095 уже сильно устарела... Там спор уже между 1.0.1 бетой и не бетой...
 

Dr. Morg

New member
@JustACat, месяц всего прошёл, как я ставил Espressif-ESP8266-DevKit-v2.0.0-x86 :eek::)
Обновляюсь до последней версии, похоже, в этом и причина всех бед :)
 

Dr. Morg

New member
@JustACat, увы, но похоже, что проблема не в UDK/SDK,- после обновления до 2.0.3 всё равно Sming 1.0.7 не работает после загрузки в ESP :(
Собираю в старом Sming,- всё загружается и прекрасно работает...
 

anakod

Moderator
Команда форума
Dr. Morg, похоже что первый файл слишком большой и не влазит в секцию iram. Вы не заняли всю память лишними IRAM_ATTR? Что в самом коде?
 

Dr. Morg

New member
@anakod, IRAM_ATTR вообще не использую, в коде веб-сервер и немного JSON.

Ещё я поторопился на счёт "всё загружается и прекрасно работает",- в модуль загружается, да, но модуль после ресета в вечный ребут уходит с новым UDK/SDK и старым Sming:
ets Jan 8 2013,rst cause:4, boot mode:(3,1)

wdt reset
load 0x40100000, len 32328, room 16
tail 8
chksum 0x02
load 0x3ffe8000, len 3416, room 0
tail 8
chksum 0x7a
load 0x3ffe8d60, len 14272, room 0
tail 0
chksum 0x35
csum 0x35
sl+TCP connection
timeout updating: 70 -> 65535
Server timeout updating: 40 -> 90
+TCP connection
timeout updating: 70 -> 65535
Server timeout updating: 40 -> 900
+TCP connect

Station configuration was updated to: CallSF
Set AP configuration in background
Display start
 

Dr. Morg

New member
@anakod, новый UDK и старый Sming, пример Basic Wi-Fi:
Hello friendly world! :)
Set AP configuration in background
Station configuration was updated to: CallSF
mode : sta(18:fe:34:a0:f0:01) + softAP(1a:fe:34:a0:f0:01)
add if0
dhcp server start:(ip:192.168.2.1,mask:255.255.255.0,gw:192.168.2.1)
add if1
bcn 100
READY!
1073691192 1afe1a0f01
AP configuration was updated on system ready event
scandone
scandone
WiFi: , OPEN
WiFi: GuestAP, WPA_WPA2_PSK
WiFi: HP-Print-ef-LaserJet 400 MFP, WPA2_PSK
WiFi: sf, WPA_WPA2_PSK
WiFi: HP-Print-d9-LaserJet 400 MFP, WPA2_PSK
WiFi: RTL8186-default, OPEN
WiFi: CallSF, WPA2_PSK
scan completed: 7 found
reconnect
scandone
reconnect
scandone
reconnect
scandone
reconnect
scandone
reconnect
scandone
reconnect
scandone
reconnect
scandone
reconnect

Update:
UDK 2.0.3 + Sming 1.0.7 этот же пример:
Fatal exception (28):CЎЌ=0x40001800, epc2=0x00000000, epc3=0x00000000, excvaddr=0x1d44ce7c, depc=0x00000000
Fatal exception (28):
epc1=0x40001800, epc2=0x00000000, epc3=0x00000000, excvaddr=0x1d44ce7c, depc=0x00000000
Fatal exception (28):
epc1=0x40001800, epc2=0x00000000, epc3=0x00000000, excvaddr=0x1d44ce7c, depc=0x00000000
Fatal exception (28):
epc1=0x40001800, epc2=0x00000000, epc3=0x00000000, excvaddr=0x1d44ce7c, depc=0x00000000
Fatal exception (28):
epc1=0x40001800, epc2=0x00000000, epc3=0x00000000, excvaddr=0x1d44ce7c, depc=0x00000000
Fatal exception (28):
epc1=0x40001800, epc2=0x00000000, epc3=0x00000000, excvaddr=0x1d44ce7c, depc=0x00000000
Fatal exception (28):
epc1=0x40001800, epc2=0x00000000, epc3=0x00000000, excvaddr=0x1d44ce7c, depc=0x00000000
Fatal exception (28):
epc1=0x40001800, epc2=0x00000000, epc3=0x00000000, excvaddr=0x1d44ce7c, depc=0x00000000
Fatal exception (28):
epc1=0x40001800, epc2=0x00000000, epc3=0x00000000, excvaddr=0x1d44ce7c, depc=0x00000000
Fatal exception (28):
epc1=0x40001800, epc2=0x00000000, epc3=0x00000000, excvaddr=0x1d44ce7c, depc=0x00000000
Fatal exception (28):
epc1=0x40001800, epc2=0x00000000, epc3=0x00000000, excvaddr=0x1d44ce7c, depc=0x00000000
Fatal exception (28):
epc1=0x40001800, epc2=0x00000000, epc3=0x00000000, excvaddr=0x1d44ce7c, depc=0x00000000
 
Сверху Снизу