Баги/глюки/проблемы в каком-то конкретном примере из пакета Sming

anakod

Moderator
Команда форума
pvvx, хотел, но в таком случае не хватает места в RAM (там совсем уже в притык). Возможно можно поколдовать над секциями оффициальной библиотеки и все получится.
Хотя, конечно, опенсорс решение было бы лучше :(
 

anakod

Moderator
Команда форума
Продолжаю проводить тесты.

С включенным WDT:
14:10
14:11
14:12
14:13
14:14
14:15
14:16
14:17
14:18
ў„*«P*VЎЎET©«ґҐT«ЄK©ҐµZU+UZЄЄUTўґT[0B]µЄЄ«ЕЄ[15]TQTҐQQ©©jPUU”©µµ*Ґ…ўьZTҐ([15]EЉЄ«ЄQXU%µ(…[14]ЄЄЕ[14]QBЄµЁUU©µµ*±[15]еZTҐ([15]ҐЁЄj*QVUEuў…[14]ЄЄЕV(BЄµЁUQBµ*Y[15]еZTҐЁUQ”TЄj*QVЄҐZV…[14]VЄе
mode : sta(18:fe:34:9c:4d:3a)
add if0
scandone
0:1
add 0
aid 4
pm open phy_2,type:2 0 0
cnt

connected with NetworkName, channel 3
dhcp client start...
0:2
ip:192.168.1.141,mask:255.255.255.0,gw:192.168.1.1
0:3
0:4
0:5
0:6
0:7

С выключенным:
14:10
14:11
14:12
14:13
14:14
14:15
14:16
14:17
14:18
14:19
why 102400 1 877956092 1163908620
14:20
14:21
beacon timeout
rm match
pm close 7 0 0/1153914126
14:22
14:23
14:24
14:25
14:26
14:27
14:28
14:29
14:30
.....
.....
19:10
19:11
19:12
19:13
19:14
19:15
19:16
scandone
19:17
add 0
aid 4
pm open phy_2,type:2 0 0
cnt

connected with NetworkName, channel 3
dhcp client start...
19:18
19:19
ip:192.168.1.141,mask:255.255.255.0,gw:192.168.1.1
19:20
19:21
19:22
19:23

В середине часть выброшена, причем похоже счетчик исправно работал все это время, но в UART ничего не отдавалось, и вообще казалось что модуль завис.
1. Как такое может быть? Даже теоретически
2. Есть ли возможность понять что значит "why 102400 1 877956092 1163908620" и др.? Декомпилировать что-нибудь и посмотреть?

Код тестовой программы. Абсолютный минимум:

Код:
long xtime = 0;
LOCAL void ICACHE_FLASH_ATTR hello_cb(void *arg)
{
    ets_wdt_disable();
    xtime++;
    ets_uart_printf("%d:%d\r\n", xtime / 60, xtime % 60);
}

void user_init(void)
{
    system_timer_reinit();
    // Configure the UART
    uart_init((UartBautRate)74880, (UartBautRate)74880);

    // Set up a timer to send the message
    // os_timer_disarm(ETSTimer *ptimer)
    os_timer_disarm(&hello_timer);
    // os_timer_setfn(ETSTimer *ptimer, ETSTimerFunc *pfunction, void *parg)
    os_timer_setfn(&hello_timer, (os_timer_func_t *)hello_cb, (void *)0);
    // void os_timer_arm(ETSTimer *ptimer,uint32_t milliseconds, bool repeat_flag)
    os_timer_arm(&hello_timer, DELAY, 1);
}
 

anakod

Moderator
Команда форума
P.S. Нашел в бинарнике "why %u %u %u %u". Но что туда, блин, передается? И главное когда и зачем это происходит?
(Это из libpp.a)
 

anakod

Moderator
Команда форума
Не пробовали устранять Open LWIP library, а взять базовый lwip-1.4.0 из IoT SDK 0.9.5 и вырезанной espconn?
Главная проблема Sming успешно решена, отдельное спасибо pvvx, его совет оказался очень полезен. Последние дни я пошагово изучал различия Open LWIP и оригинального из сборки Эспрессиф и нашел критическое различие приводящее к перезагрузке.
https://github.com/kadamski/esp-lwip/pull/6

Проблема с периодической перезагрузкой успешно решена.
 

pvvx

Активный участник сообщества
Последние дни я пошагово изучал различия Open LWIP и оригинального из сборки Эспрессиф и нашел критическое различие приводящее к перезагрузке.
У Эспрессиф ещё вставлены кривые патчи в LwIP (вышедшие позже выхода базового релиза 1.4.0 и взятые типа с фрорума), которые сначала овобождат память, а потом лезут туда (так их вписал китай-програмер, оставив комент там на китайском). Спасает то, что это не RTOS и нет частых прерываний с перераспределением памяти...
 

anakod

Moderator
Команда форума
Согласен у них местами вообще непойми что в коде твориться. Если подскажете где это место с патчем, я проверю не попало ли оно случайно в библиотеку Open ESP LWIP.

Что касается того патча о котором я писал выше - он необходим, потому что в оригинальной реализации таймер банально переполняется через 15 минут и никаких проверок на этот случай не предусмотрено.
 

pvvx

Активный участник сообщества
Согласен у них местами вообще непойми что в коде твориться. Если подскажете где это место с патчем, я проверю не попало ли оно случайно в библиотеку Open ESP LWIP.
Они не столь нужные (исправления вроде касаются очень активной работы стека, что у нас не наблюдается). Я так и не понял, что вы называете Open ESP LWIP. По этому ничего конкретного сказать не могу. Если это https://github.com/kadamski/esp-lwip, то различий много т.к. Lwip 1.4.1.

В последних версиях своих тестов я использую liblwip.a (SDK 1.0.1b1) разобрав, выкинув лишнее (чтобы память RAM не жрало на ненужное) и собрав обратно newlwip.bat:
Код:
del libmlwip.a
md lwip.lib
cd lwip.lib
C:\Espressif\xtensa-lx106-elf\bin\xtensa-lx106-elf-ar x ..\liblwip.a
@rem delete sockets.o api_lib.o api_msg.o err.o netbuf.o netdb.o netifapi.o tcpip.o def.o mem.o stats.o sys.o sys_arch.o autoip.o inet.o ip_frag.o
@rem замена на свои dhcpserver.o
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 ..
Работает почему-то тормознее, памяти (RAM) берет больше, чем при исходниках от 0.9.4...
Для выкидывания espconn надо заткнуть вызов процедуры espconn_init(); в startup() из app_main.c в libmain.a... Просто вписать в свой код void espconn_init(viod) {}.
 
Последнее редактирование:
В примере Meteo_control при сборке выходит ошибка
Description Resource Path Location Type
Method 'prettyPrintTo' could not be resolved configuration.cpp /MeteoControl/app line 67 Semantic Error
 

anakod

Moderator
Команда форума
pvvx, да я именно про https://github.com/kadamski/esp-lwip
Не совсем понял про батник пересборки. Он как-то работает без этих частей или Вы заменяете их своими?

Климатехник, странно у меня собирается. А Вы где смотрите? Надо смотреть окошко Console, все остальное не важно.
 

Tohakrat

New member
В примере DHT22 данные с датчика читаются только если установить work_pin gpio14. Так и не понял почему.
А вот в примере BMP180 все как в файле Wire.h - gpio2 и gpio0.
Использую ESP8266-012
 
Последнее редактирование:

anakod

Moderator
Команда форума
Tohakrat, это крайне странно т.к. я на 14 пине никогда не тестировал, но все работало корректно, примеры проверены на железе.
 
Вообщем ситуация такова:Тестирую пример HttpServer_Ajax.Было замечено,что буквально каждые 3-4 минуты,модуль перезагружается,тем самым при последующем подключение,присваивается с разным IP адресом,что крайне неудобно каждый раз запускать терминал,что бы посмотреть IP адрес.Тут уже бесуловно надо ему присваивать статический IP.Также иногда при небольшом простое,открытой странице допустим,не выполняются Ajax запросы.Надо иногда перезагрузить страницу,либо поменять частоту процессора.
 
Последнее редактирование:

anakod

Moderator
Команда форума
Тестирую пример HttpServer_Ajax.Было замечено,что буквально каждые 3-4 минуты,модуль перезагружается
Нужен полный лог. Тестируется стандартный пример или что-то изменено? (у меня подобных проблем не наблюдается)

модуль перезагружается,тем самым при последующем подключение,присваивается с разным IP адресом,что крайне неудобно каждый раз запускать терминал,что бы посмотреть IP адрес
Очень странно, DHCP должен привязать выбранный IP к этому MAC адресу и использовать его повторно. Причины смены IP вероятно в роутере.
Статический IP добавим.
 

pvvx

Активный участник сообщества
Тестируется стандартный пример или что-то изменено?
Тестируется стандартный пример,ничего не изменял.
Вот лог когда идет обращение к серверу
~TCP connection
onAccept state: 0 K=0
Free heap size=22976, K=0
+TCP connection
timeout updating: 70 -> 90
Tcp Server onClient
-TCP connection
onReadyToSendData: 3
path=/ajax/input
Host === 192.168.1.104
parsed
Request: GET, nodata
TCP received: 476 bytes
onReadyToSendData: 1
response sendHeader
TCP connection send: 17 (17)
TCP connection send: 19 (19)
TCP connection send: 32 (32)
TCP connection send: 2 (2)
response sendBody
TCP connection send: 66 (66)
Stream completed
TCP connection closing
~TCP connection
-TCP connection
А это когда нет обращения к серверу,сокет закрыт,тоесть браузер закрыт,переодически появляется это,замечено что буквально каждые 5 минут:
connected with TP-LINK, channel 3
dhcp client start...
ip:192.168.1.104,mask:255.255.255.0,gw:192.168.1.1
rm match
reconnect
scandone
add 0
aid 4
cnt

connected with TP-LINK, channel 3
dhcp client start...
ip:192.168.1.104,mask:255.255.255.0,gw:192.168.1.1
 
Последнее редактирование:

anakod

Moderator
Команда форума
Судя по логу похоже что на это время теряется WiFi соединение. Но почему это может происходить? На других примерах подобного вывода в лог не наблюдается?
 
Судя по логу похоже что на это время теряется WiFi соединение
Странно то,что пока страница открыта,ни каких разъединений нет,работает часами.Как только закрываю страницу,ждет ровно 5 минут и начинается перезагрузка
 
Сверху Снизу