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

Esp8266 at команды на русском

pvvx

Активный участник сообщества
Пояснение по поводу ошибки 'malloc assert!' в имеющихся прошивках, связанной с заполнением Heap при множественных соединениях:
Это проблема последнего [ACK] в HTTP протоколе, зависящая от того, кто инициировал закрытие [FIN], известная как TIME_WAIT на 60 сек и занятого порта. Подробное описание тут http://www.serverframework.com/asyn...tions-for-protocols-and-scalable-servers.html.
Но у нас, ошибка связана с тем, что во включенный в прошивку вариант стека lwip не встроено ограничение по захвату памяти. Это не дописано и приводит к трагическому концу 'malloc assert!' и перезагрузке модуля. Т.е. проблема не в Lwip, а у тех кто его конфигурировал. В памяти, на 60 сек, после после инициации закрытия соединения на каждый espconn_disconnect(...) остается структура размером около 200+ байт...
В итоге пользоваться espconn_disconnect(...) не стоит. Пусть соединение закрывает клиентская сторона :) Перед открытием нового соединения проверяйте system_get_free_heap_size()...
 
Последнее редактирование:

CHERTS

Moderator
Команда форума
Вообще можно попробовать собрать не lwip стек, а uIP - это тоже TCP стек для контроллеров от разработчика lwpi, но отличается от него минимизацией используемой памяти и в нем не используется динамическое выделение памяти. Жаль, что Espressif не утруждается выкладыванием исходников актуальных версий библиотек, сообщество бы быстрее исправляло в них баги.
 

pvvx

Активный участник сообщества
Вообще можно попробовать собрать не lwip стек, а uIP - это тоже TCP стек для контроллеров от разработчика lwpi, но отличается от него минимизацией используемой памяти и в нем не используется динамическое выделение памяти. Жаль, что Espressif не утруждается выкладыванием исходников актуальных версий библиотек, сообщество бы быстрее исправляло в них баги.
Lwip работает нормально. Ошибки в надстройке от Espressif, в espconn. Основная - в закрытии соединения - потере события disconnect, установке таймера и проверке по нему уже несуществующего pcb в lwip-е с итоговым падением в нирвану :)
В Lwip-е и всём стороннем, что не связано с Espressif ошибок пока не обнаружил. Не пользуйтесь процедурами от Espressif и всё будет Ok. Если всё же необходимо использовать их, то проверяйте все входные параметры и логику обращения к ним, до их вызова. Иначе как и их писатель, будете говорить, что иногда, по не понятным причинам, просто перекомпиляция исправила ошибку :) Распределение переменных в памяти встало по другому и их "месево" "протектед" теперь не вызывает при затирании друг другом. :) Они, Espressif, при этом, ещё за мультизадачку взялись o_O
От этого возникают и множественные ошибки у писателей следующих надстроек на SDK от Espressif. К примеру, spi_flash_read(...) не может работать с не кратными 4-м параметрами... Т.е. считать пару байт с произвольного адреса Flash не выйдет. Необходима надстройка, проверяющая и корректирующая четность адресов и разворачивающая запрос на несколько обращений к spi_flash_read со своими буферами или собственная процедура... Это самый простой случай.
 
Последнее редактирование:

CHERTS

Moderator
Команда форума
Ошибки в надстройке от Espressif, в espconn. Основная - в закрытии соединения - потере события disconnect, установке таймера и проверке по нему уже несуществующего pcb в lwip-е с итоговым падением в нирвану :)
А у тебя получилось с этим побороться? Какие исправления в исходниках сделал, можешь выложить?
 

pvvx

Активный участник сообщества
Поборол, без исправлений, простым обращением к процедурам lwip, без espconn.

Выложить исходники пока не могу. Проект большой и много недоделанного, а там всё заточено на работу со встроенным WEB-HTTP сервером, а не на AT. Примеры работы с входящим в SDK lwip1.4.0 есть у самого Lwip: http://download.savannah.gnu.org/releases/lwip/
 
Последнее редактирование:

CHERTS

Moderator
Команда форума
Поборол, без исправлений, простым обращением к процедурам lwip, без espconn.
Уххх, подход конечно верный, но новичкам это сложно. Было бы правильнее исправить espconn.c если дело в нем и отрапортавать в Espressif об ошибке, а то так воз и ныне там будет всегда, так ошибки и перетекают из одной версии в другую без исправлений.
 

pvvx

Активный участник сообщества
Espressif об этом наверняка знает, т.к. начал проект на мультизадачке и там, в либах, уже нет espconn...
Проблемы с исправлением описаны там: http://esp8266.ru/forum/threads/bagi-i-nedosmotry-v-sdk-ot-espressif.21/
Прибавьте туда неограниченный захват памяти TIME_WAIT стеком Lwip и получите, что необходимо всё переписывать по новому. Новичкам и дана рекомендация - не писать никаких надстроек на SDK от Espressif - он пока очень сырой и всё написанное будет необходимо переписывать, когда выйдет более менее стабильная версия.
 
Последнее редактирование:

NeoroN

Member
пичаль. Я тоже заметил косяки с памятью. Надеюсь к весне они исправят некоторые косяки.
 

PerryMZ

New member
Подскажите какая AT комаднда поволяет посмотреть список сохраненных точек доступа?
 
Сверху Снизу