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

Разработка ‘библиотеки’ малого webсервера на esp8266.

vad7

Active member
@pvvx, web_fini() только заполняет переменные, справа может быть только константа.
Это я разгубастился, думал щас, чтобы не писать обработку ini файла с парсингом переменных и не множить почти похожий код, использую web_fs_init.c....
Ну да ладно, доработаем, не впервой. :)
 

ls_serg

New member
Подкажите пожалуйста что не так и как исправить. При сборе прошивки "esp8266web-master" выдает ошибку:

upload_2016-3-23_3-0-46.png
При сборке "Hallo world" все ок, и проишивка проходит без проблем.
 

aloika

Active member

pvvx

Активный участник сообщества
Подкажите пожалуйста что не так и как исправить. При сборе прошивки "esp8266web-master" выдает ошибку:

Посмотреть вложение 1590
При сборке "Hallo world" все ок, и проишивка проходит без проблем.
Импортируйте проект, а не копируйте. В теме UDK описано и дано видео как это сделать.
 

ls_serg

New member
Импортируйте проект, а не копируйте. В теме UDK описано и дано видео как это сделать.
Именно так и делал. Перепробывал все что мог, И напрямую загружал файл с интернета в папку C:\Espressif\examples, и загружал файл esp8266web-0.6.0.tar.gz через File -> Import -> General -> Existing Project into Workspace в строке select arhive file выбирал C:\Espressif\examples\esp8266web-0.6.0.tar.gz и все тоже самое.
Может это чтото значит :
upload_2016-3-24_1-44-14.png
PATH (${MINGW_HOME}\bin;${MSYS_HOME}\bin;C:\Espressif\xtensa-lx106-elf\bin;C:\Python27) выделен желтым.
Поскольку в этом деле могу гордо назвать сябя "чайником" может это чтото значит:
upload_2016-3-24_1-47-10.png
Не пинайте но честно не знаю что с этим делать.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Исправил падение на некоторых функциях WEBFS (WEBFSSeek, WEBFSGetStartAddr)
Лежат здесь:
PowerMeter/webfs.c at master · vad7/PowerMeter · GitHub
PowerMeter/webfs.h at master · vad7/PowerMeter · GitHub
А где были "падения"?
Вы убрали проверку в REWIND перехода по смещению на адрес ниже начала текущего файла. В этом "падение"?
 
Последнее редактирование:

pvvx

Активный участник сообщества
Не пинайте но честно не знаю что с этим делать.
Скачиваете с git https://github.com/pvvx/esp8266web/archive/master.zip
Получаете файл esp8266web-master.zip. Разворачиваете его куда нибудь типа X:\X\esp8266web-master.
Открываете Eclipse. В меню File -> Import...-> General -> Existing Projects into Workspace -> Next -> Select room directory вписываете папку развернутого проекта (X:\X\esp8266web-master), ставите галку "Copy projects into workspace" и жмете "Finish".
Выбираете цель All в окне "Make Target" и проект транслируется.
 

ddv

New member
2pvvx
я вижу вы опять начали коммитить сюда esp8266web/webfs at master · pvvx/esp8266web · GitHub
но там пока только апплоадер. как автоматизировать апплод более менее понятно.

а вот по какому алгоритму собирается образ диска (WEBFS22.exe)? прямое гугление ничего не дало.. Это какой-то свой велосипед?
Наверняка просто в один поток склеиваются файлы через разделитель, ну и какие-то сжимаются...
Не заниматься же реверс-инижинирингом :)

ЗЫЖ если получиться - запушу к вам на гит.
 

pvvx

Активный участник сообщества
2pvvx
я вижу вы опять начали коммитить сюда esp8266web/webfs at master · pvvx/esp8266web · GitHub
но там пока только апплоадер. как автоматизировать апплод более менее понятно.

а вот по какому алгоритму собирается образ диска (WEBFS22.exe)? прямое гугление ничего не дало.. Это какой-то свой велосипед?
Наверняка просто в один поток склеиваются файлы через разделитель, ну и какие-то сжимаются...
Не заниматься же реверс-инижинирингом :)

ЗЫЖ если получиться - запушу к вам на гит.
Исходники программы изначально вложены в проект - esp8266web/WEBFS22.zip at master · pvvx/esp8266web · GitHub
Есть намерение сделать ещё изменения в структуре каталога и описателей файлов... Но пока не успел.
Прототипом является MPFS - была попытка их совмещения - использовал совместно с PIC24... Описание формата так-же дано esp8266web/webfs.c at master · pvvx/esp8266web · GitHub
Хотелось бы сделать сборщик на питоне - если есть желание помочь с этим - напишите в личку.
 
Последнее редактирование:

vad7

Active member
@pvvx, случайно не знаете, dns должна всегда запрос слать, не смотря на наличие в кэше валидного предыдущего запроса или это библиотека не дописана?

Китайцы выложили новую версию Open source LWIP 1.5.2:
Open source LWIP for ESP8266_NONOS_SDK_V1.5.2 - ESP8266 Developer Zone
 
Последнее редактирование:

pvvx

Активный участник сообщества
@pvvx, случайно не знаете, dns должна всегда запрос слать, не смотря на наличие в кэше валидного предыдущего запроса или это библиотека не дописана?
DNS_TABLE_SIZE = 4 (кэш четыре записи).
Китайцы выложили новую версию Open source LWIP 1.5.2:
Open source LWIP for ESP8266_NONOS_SDK_V1.5.2 - ESP8266 Developer Zone
Изменения от SDK 1.4.0:
1) в использовании phy_get_rand() для назначения порта в tcp.c
2) перемещении pcb->nrtx = 0; в tcp_process() tcp_in.c
3) путаница с if/else в udp_input() udp.c
Остальное - возня с espconn.
 
  • Like
Реакции: vad7

vad7

Active member
DNS_TABLE_SIZE = 4 (кэш четыре записи).
Ну да, только оно его не использует, каждый раз по новой запрос идет. Вот думал может так и надо.
Дописал проверку.

Я вот думаю, стоит ли беспокоиться о переполнении буфера в web_int_callback?
tcp_puts() не проверяет переполнение, она конечно в web_int_callback() понемногу вставляет, но все же.
 

pvvx

Активный участник сообщества
Ну да, только оно его не использует, каждый раз по новой запрос идет. Вот думал может так и надо.
Дописал проверку.

Я вот думаю, стоит ли беспокоиться о переполнении буфера в web_int_callback?
tcp_puts() не проверяет переполнение, она конечно в web_int_callback() понемногу вставляет, но все же.
А стоит ли беспокоиться о перегрузке по производительности? Это примерно то-же самое и выбирается середина.
У вас были или наблюдаются переполнения буфера ответа по TCP? В местах, где это возможно, стоят проверки. И вывод больших сообщений осуществляется поблочно по другому, уже встроенному алгоритму... main_loop() не работает :)
 
Последнее редактирование:

vad7

Active member
У вас были или наблюдаются переполнения буфера ответа по TCP?
Да это относительно легко достичь - вывод html страницы больше размера буфера (сколько он там, 2-3 кило?) и где-то на этой границе вывод переменных. Причем у вас это может вообще не проявиться, если переменные на этой границе не используются, а у кого-то через раз глючить будет.
 

pvvx

Активный участник сообщества
Да это относительно легко достичь - вывод html страницы больше размера буфера (сколько он там, 2-3 кило?) и где-то на этой границе вывод переменных. Причем у вас это может вообще не проявиться, если переменные на этой границе не используются, а у кого-то через раз глючить будет.
Вы что-то путаете из-за подхода main_loop() - в сотый раз - такого здесь не применяется - никто не льет в буфер сразу весь файл или весь выходной поток, если он более 128 бaйт. Минимальный буфер всего 128 байт (проверяется при передаче запроса на разбор переменной) и всё справляется. :) Вывод может идти хоть итерациями по 1 байту (минимальная единица информации в данном деле). Для организации блочного вывода там существуют calback-и... Когда буфер наберется под оптимум передачи пакета TCP он и отправляется. Так-же на вход обработки по началу выделяется не 128 байт, а гораздо больше и этот размер доступен для процедуры обработки чтобы заполнить весь буфер за раз, но в процессе циклического исполнения поблочного вывода наличие свободных 128 байт в буфере передачи указывает всего на возможность повтора заданной итерации вывода, до прерывания этого цикла освобождением буфера с помощью передачи по TCP с подтверждением возможности отсылки следующей порции информации и опять циклического исполнения calback вывода в буфер............ И так пока calback не снимется, указав что отработал вывод своих 100500 байт.
 
Последнее редактирование:

vad7

Active member
@pvvx, а, вот нашел:
while((web_conn->msgbufsize - web_conn->msgbuflen >= SCB_SEND_SIZE)
Значит нужно убедиться, чтобы web_int_callback() не писал больше SCB_SEND_SIZE.
Это уже проще.
Ну вот разобрались, и дело не в маин лупе, а в хреновом описании, точнее в его отсутствии :)
Добавлю ремарку к функции....
 

pvvx

Активный участник сообщества
@pvvx, а, вот нашел:
while((web_conn->msgbufsize - web_conn->msgbuflen >= SCB_SEND_SIZE)
Значит нужно убедиться, чтобы web_int_callback() не писал больше SCB_SEND_SIZE.
Это уже проще.
Ну вот разобрались, и дело не в маин лупе, а в хреновом описании, точнее в его отсутствии :)
Добавлю ремарку к функции....
А это что? while((web_conn->msgbufsize - web_conn->msgbuflen >= SCB_SEND_SIZE) - это и есть самая подробная документация. :)
Просто надо научиться читать. А опечатки там наверняка есть. Но пока не проявлялись.
Нужен редактор, а его нет. :)
 
Сверху Снизу