• Система автоматизации с открытым исходным кодом на базе 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 на помойку.
 
Последнее редактирование:
Сверху Снизу