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

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

pvvx

Активный участник сообщества
RTL - это, конечно, здорово и перспективно, но проекта уровня вашей "свалки" для нее нет и неизвестно, будет ли в ближайшее время.
Как-бы основа (tcp-server) давно перетащена на RTL. Но пока не делал конфигурацию WiFi - надо переделывать многие переменные, а занят пока другим. SD карта на RTL работает хорошо (внутренний трансфер за 8 мегабайт в секунду, т.к. есть полноценный SDIOH контроллер для этого), web-диск от свалки тоже давно перетащен, работает и гадость spiffs (вставил по просьбам в RtlDuino)...
Код:
NetBIOS init, interface 0: 'ARTL871X',  1: 'SRTL871X'
ATTS: Test tcp_srv
Max retry connection 10, time waits 10 & 10, min heap size 14528
TCP_TST: server init on port 80
ATTC: Test tcp_client
TC: Max retry connection 3, time waits 5 & 5, min heap size 14528
srv[64665] 192.168.1.2:12345 [0] start client...
TCP_TST: client init = 0
WIFI initialized
srv[64665] 192.168.1.2:12345 [1] error -10
srv[64665] 192.168.1.2:12345 [1] Waiting next (1) reconnection 5000 ms...
srv[64666] 192.168.1.2:12345 [1] start client...
srv[64666] 192.168.1.2:12345 [1] error -10
srv[64666] 192.168.1.2:12345 [1] Waiting next (2) reconnection 5000 ms...
srv[64667] 192.168.1.2:12345 [1] start client...
srv[64667] 192.168.1.2:12345 [1] received, buffer 16 bytes
send 16
srv[64667] 192.168.1.2:12345 [1] received, buffer 32 bytes
send 32
srv[64667] 192.168.1.2:12345 [1] disconnect
ATLW
ATLW: Lwip pcb Info
TCP Server connections:
none
UDP pcbs:
flg:00  0.0.0.0:137     0.0.0.0:0       recv:0x10013249
flg:00  0.0.0.0:67      0.0.0.0:0       recv:0x10012e11
flg:00  0.0.0.0:55467   0.0.0.0:0       recv:0x1000e761
Active PCB states:
none
Listen PCB states:
Port 80|65528   flg:06  tmr:0x2f415057  LISTEN
TIME-WAIT PCB states:
none
[MEM] After do cmd, available heap 143984+16784
Свободных ресурсов у RTL8710AF с web-свалкой остается больше, по тому и не доделано - надо прикрутить что-нибудь интересное... Оставил пока на процессе прикручивания FTP для файловой системы...
HTTPS серверов на малых устройствах вообще не встречал. Может его и прикрутить? Там на сертификаты и TSL к каждому соединению пожирание памяти громадное, но для этого есть RTL8711AM с 2.5 мегабайтами встроенного RAM. Думаю, что многопользовательский HTTPS сервер не осилит и ESP-32S.
С RTOS в RTL-ах выходит хорошо - web-сервер работает в теневом режиме, отдельным процессом. Это требует другой интерфейс для обработки переменных - с очередями и т.д., что дает доп. преимущества.
На git web-свалки для ESP8266 код tcp-сервера уже исправленный - копируется из опытов с RTL8710. Проект web-свалки уже несколько месяцев получает обновления только за счет тестов на RTL871x. :) На RTL-ах отладка проще и больше средств.
А так проект web-свалки на ESP8266 уже практически закрыт(!)

На RTL-ах проблем вообще нет никаких - есть все исходники системы. Счас делаю доступ для низкого уровня WiFi - полных исходников не будет - не надо то пользователям, но будут ВСЕ заголовки всех процедур и переменных для доступа к ним. Регистры WiFi тоже есть. Исходники WiFi пользователям не требуются по причине сложности - чтобы поправить там что-то надо много чего иметь и мне лень делать полный "реверс"... Если серия rtl871x будет востребована в разных сферах, то скорее всего Raltek сам всё выложит, как это было всегда с прошлыми RTL-ами.
Чтобы выкинуть в свет все исходники к серии RTL871x Realtek необходимо вручную переписать все заголовки в *.cи *.hпосле создания автоматической системой – а кто это оплатит и займется (?) :)
 
Последнее редактирование:

Virtual

New member
небольшие исправления на 2 поста выше исправите?
еще -б конечно в питоновских скриптах правочку...
вида
Код:
---  tool_objcopy = "C:\\Espressif\\xtensa-lx106-elf\\bin\\xtensa-lx106-elf-objcopy.exe"
+++ tool_objcopy = os.getenv("XTENSA_TOOLS_ROOT") + "/xtensa-lx106-elf-objcopy"
но это похоже нать к венде адаптировать (расширение) //не факт
 

pvvx

Активный участник сообщества
небольшие исправления на 2 поста выше исправите?
еще -б конечно в питоновских скриптах правочку...
вида
Код:
---  tool_objcopy = "C:\\Espressif\\xtensa-lx106-elf\\bin\\xtensa-lx106-elf-objcopy.exe"
+++ tool_objcopy = os.getenv("XTENSA_TOOLS_ROOT") + "/xtensa-lx106-elf-objcopy"
но это похоже нать к венде адаптировать (расширение) //не факт
Ничего исправлять под Пингвина не буду. Просто не до этого ныне... Сказано же - проект практически закрыт. ESP8266 умер в мраке ошибок SDK от китайцев в Espressif.
Если хотите исправлений - необходимо принять обязанности по дальнейшей поддержке.
 

Virtual

New member
на 2 поста выше не под .... а явные косяки
очепятка и уровень проверки gcc
 

Virtual

New member
а хочется ж поддеть ;)
Код:
-                       hspi_master_init(0x07070300,1000000)); // 8 bit addr, 8 bit cmd, CS none, SPI MODE 3, SETUP + no HOLD, 1 MHz
+                       hspi_master_init(0x07070300,1000000); // 8 bit addr, 8 bit cmd, CS none, SPI MODE 3, SETUP + no HOLD, 1 MHz
не со зла просто в глаза бросилось.

PS как говорит мой очень хороший друг: "копипаст не только ракеты роняет"

PSPS и да гугл говорит:
ошибку
error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]
словите сразу, как только, кто нить под венду соберет более менее новый gcc
 
Последнее редактирование:

pvvx

Активный участник сообщества
разобрался почто папка ovls не собиралась, нужно в папке ovls в мэйкфайл добавить
Код:
-fno-strict-aliasing
(вероятно этот параметр в компиляторе под Вин уже по дефолту)
+минимум 1 опечатка.
Стоит -Wall, -Wstrict-aliasing так-же не ругается.
При разном уровне оптимизации strict-aliasing не вылазит. Возможно спутали с C++.
Это по поводу:
а хочется ж поддеть ;)
:)
+ Хто будет делать новый GCC на устаревший SoC ? :) Для ESP-32S ? - Ещё смешнее.
Тут годами бились чтобы сделали оптимизацию по указателям...
Оптимизации в других сегментах для GCC, кроме данных вообще нет и наверно не предвидится для xtensa. Всё это называется - пользуйтесь коммерческими клонами GCC. :p
SDK на ESP8266 странcлирован китайцами вообще с отключенными всеми варнингами. Используется: Xtensa Compiler Version 11.0.2.20150501312885 c опциями, которые можно посмотреть в любой либе идущей к SDK...
Если включить варнинги, то там сотни не инициализированных переменных и указателей. Им всё равно как это будет работать у пользователей, т.к. проверяется исключительно только в строгой последовательности исполнения их единственного примера IoT_Demo :) Остальные ошибки не принимаются.
В Arduino для ESP8266 буфер окна вывода переполняется варнингами, если включить оповещения вывода трансляции. Тот кто это натворил теперь пишет базовое ПО на ESP-32S. В связи с этим готовящееся ПО для ESP-32S можно смело назвать: "Халтурщики всех стран объединяйтесь!".:)
А я не проф.программист и претензии не принимаю. :p Поломать что, разобрать - это другой вопрос...
 
Последнее редактирование:

Virtual

New member
ну gcc то у нас логично что разный и про
Код:
-fno-strict-aliasing
гугл подсказал мол в крайних версиях GCC вылезло, и помогло.
 
Последнее редактирование:

aloika

Active member
Проект web-свалки уже несколько месяцев получает обновления только за счет тестов на RTL871x.
Т.е. в нынешнем виде проект более стабильный, чем ~полгода назад (SDK 1.5.2)? Или с уверенностью говорить об этом нельзя?

И, конечно, лично я очень жду веб-свалку на RTL, готов в меру сил способствовать ее скорейшему появлению.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Т.е. в нынешнем виде проект более стабильный, чем ~полгода назад (SDK 1.5.2)? Или с уверенностью говорить об этом нельзя?
Стабильнее. Но у меня сейчас, на тестовых модулях прошита она-же с SDK 1.5.4 + последний патч. А в git лежит c SDK 2.0 + патч. Различия SDK 2+ в большем объеме ненужных нам кодов - оптимизация такая у китайцев :)
И, конечно, лично я очень жду веб-свалку на RTL, готов в меру сил способствовать ее скорейшему появлению.
Скорее всего это будет немного позже. У меня на очереди есть несколько личных производственных проектов и там везде требуется web-сервер. Вариантов исполнения более трех - от малого устройства до большого сервера. Возможно в один из вариантов пойдет RTL - ещё четко не определился. Но это не ESP и для мелкосерийного производства данный модуль годится на 100% из-за своей стабильности и наличия всех исходников. Скорее всего пойдет в варианте конфигуратора, отладчика для сервисного обслуживания в составе другого оборудования. Т.е. не для постоянной работы с включенным WiFi. На производствах в России WiFi пока не используется, на то есть множество причин, в основном юридических...
У RTL есть NFC и можно использовать активацию WiFi только по нему, на время настройки и для диагностики оборудования.
 
Последнее редактирование:

pvvx

Активный участник сообщества
почему?, если не секрет.
почему у вас 1.5.4
По одной причине - в SDK2.0 всё то-же самое, но напихано слишком много лишнего и никогда не используемого кода. Это такая китай-фича - во все SDK вставлено куча лишнего - "в придачу", чтобы не лезло в 512 килобайт Flash и вы купили новый модуль. Более как продать чипы на ali Espressif их девать некуда.
 

Virtual

New member
я так понял отдельной ветки по SDK1.5.4 нет?
и правки что появляются ручками переносить?
 

pvvx

Активный участник сообщества
я так понял отдельной ветки по SDK1.5.4 нет?
и правки что появляются ручками переносить?
Либы не очень то и перенесете, а вот "правки" на всё остальное - это без проблем. В sdk_config.h есть переключение:
#define DEF_SDK_VERSION 1540 // 2000
Раз уж связались с Espressif - соизвольте жувать их бяку :)
Пишите им на сайт - пусть делают нормальный SDK, с возможностью выбора используемых компонентов.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Ладно - вот директория либ для свалки с SDK 154. Но надо менять #define DEF_SDK_VERSION 1540
lib154.zip
 

Virtual

New member
увы используется
облом сразу случился на на минимум 2х хидерах

#include <stdlib.h>
#include <string.h>
Это инклуды из либ компилятора, а не из SDK.
...
ща поковырялся в
Unofficial Development Kit for Espressif ESP8266 (c) by CHERTS.
это заголовки от SDK! но не факт что у вас именно они подцепятся
C:\Espressif\xtensa-lx106-elf\xtensa-lx106-elf\include\

в коде
#include <stdlib.h>
#include <string.h>
#include <math.h>
местами уже убрано | закомменчено, но местами осталось!
убрал все упоминания - основное собралось, кроме
USE_SNTP
ибо там используется
#include <time.h>
(тоже хидер прилетает с сдк, да еще он точно платформозависим.)

PS виндовый UDK уже скомпилен и в нем уже внутри лежит SDK от Espressif
а линуховый собрался из исходников, соответственно сразу и увидел эти зависимости.
 

pvvx

Активный участник сообщества
ща поковырялся в
Unofficial Development Kit for Espressif ESP8266 (c) by CHERTS.
это заголовки от SDK! но не факт что у вас именно они подцепятся
C:\Espressif\xtensa-lx106-elf\xtensa-lx106-elf\include\

в коде
#include <stdlib.h>
#include <string.h>
#include <math.h>
местами уже убрано | закомменчено, но местами осталось!
убрал все упоминания - основное собралось, кроме
USE_SNTP
ибо там используется
#include <time.h>
(тоже хидер прилетает с сдк, да еще он точно платформозависим.)

PS виндовый UDK уже скомпилен и в нем уже внутри лежит SDK от Espressif
а линуховый собрался из исходников, соответственно сразу и увидел эти зависимости.
Я не отвечаю за UDK - там и так всё повырезано, что связано с платформами... Берите старую версию UDK.

По поводу либ:
Да и пофиг. Всё равно китайские либы сделаны ужасно - китайцы не понимают как собрать библиотеку, чтобы при трансляции в выходной код не вставлялось куча неиспользуемых процедур и переменных в конкретном проекте пользователя. Т.е. у них нет никакой оптимизации. Espressif - этим уже всё сказано :)
 

Virtual

New member
Ладно - вот директория либ для свалки с SDK 154. Но надо менять #define DEF_SDK_VERSION 1540
lib154.zip
а это зачем? :) у вас на GIT очень удачно сделаны "срезы" репозитория ;)
Releases · pvvx/esp8266web · GitHub
и последний релиз как раз то что нужно.

Я не отвечаю за UDK
я не про UDK а про meSDK. упоминание этих заголовков, приводит к тому что в старом UDK у людей могут прицепится хидеры от сдк что чревато.

имхо нать вытирать все упоминания из кода и перетащить в meSDK time.h (точнее только то что от него требуется)
 

pvvx

Активный участник сообщества
а это зачем? :) у вас на GIT очень удачно сделаны "срезы" репозитория ;)
Releases · pvvx/esp8266web · GitHub
и последний релиз как раз то что нужно.
А после него были сделаны другие добавки и изменения :) Например доступ к TSF для синхронизации...
я не про UDK а про meSDK. упоминание этих заголовков, приводит к тому что в старом UDK у людей могут прицепится хидеры от сдк что чревато.
Как они прицепятся, если нет ссылок туда? :confused:
Ну и нафига всё это?
Тут лучше сразу начинать учить китайцев из Espressif хоть вставке __attribute__((weak)), а не писать в PDF к SDK - надо обязательно вставить свою процедуру user_rf_cal_sector_set() и т.д. :)
И ещё по поводу оптимизации линкера - GCC к данному процу убогий и многое не поддерживает. Надо начинать с этого. Оптимизации использования регистр +смешение так и не сделано, как и многое другое.
И т.к. грабли со всех сторон - тут проще выкинуть ESP8266 на помойку.
 
Последнее редактирование:
Сверху Снизу