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

Нужна помощь Ошибка линковки примера Mongoose

lsm

Разработчик Smart.js
Команда форума
У нас свободная страна и любят блокировать сайты по требованиям :)

У меня такое дело – находить ошибки. Мелочные, но которые влияют на общую работоспособность. А пока можно поставить 2+ за данный фреймворк.
PS: В Эклипcе у него беда – “много строчек” и без правки установок (расширения числа строк в файле для парсинга) он не обрабатывается. Зачем всё впихнуто в один файл?
А, вы к тому чтобы mongoose-os.com заблокировать? Требуйте. Что за детский сад.

В один файл (mongoose.c) впихнуто по тем же причинам почему и другие подобные проекты амальгамируют исходный код, например sqlite. The SQLite Amalgamation - тут написаны и причины амальгамации.
 

pvvx

Активный участник сообщества
А чего вы забеспокоились? Пиар вашей поделке порчу? :)
 

pvvx

Активный участник сообщества
Антиреклама тоже реклама. Не умеете пользоваться? :)

Амальгамирование – это не удобно для пользователей. В файле содержится много ненужного пользователю кода – для всех типов модулей и разбираться для “портирования” выходит сложнее. От этого наверно и нет “портирований” на другие модули.
 

lsm

Разработчик Smart.js
Команда форума
@pvvx , да ради Бога, тешьтесь :)

Насчет вашего мнения про амальгамированию - расскажите это все Ричарду Хиппсу, автору sqlite, самого распространенного DB движка на планете. Попортите и ему PR :)
 

pvvx

Активный участник сообщества
@pvvx , да ради Бога, тешьтесь :)

Насчет вашего мнения про амальгамированию - расскажите это все Ричарду Хиппсу, автору sqlite, самого распространенного DB движка на планете. Попортите и ему PR :)
Может быть так и сделаю, если буду его изучать или использовать и найду ошибки...

А - я понял! Вы хотели присоседиться к PR Ричарда Хиппса... Но получили уменьшение кол-ва "портирований" и распространения своего продукта. :)
Уже пошли ссылки на сторонние PR персоны, т.к. своего ничего нет и самим никак? :)
 
Последнее редактирование:

lsm

Разработчик Smart.js
Команда форума
Может быть так и сделаю, если буду его изучать или использовать и найду ошибки...

А - я понял! Вы хотели присоседиться к PR Ричарда Хиппса... Но получили уменьшение кол-ва "портирований" и распространения своего продукта. :)
Уже пошли ссылки на сторонние PR персоны, т.к. своего ничего нет и самим никак? :)
@pvvx перестаньте нести чушь.
 

pvvx

Активный участник сообщества
Вооб-ще то я пристал сдесь по простой дури – дайте нормальную OS с примерами для класса современных SoC, а не устаревших огрызков в виде ESP8266 не имеющих минимальной RAM для многих задач IoT. Ну нету ничего ни у кого. Следующий уровень OpenWRT, уже со своими требованиями к SoC (по частотам CPU ядер и объемов RAM, да потреблению) , а на текущие и выходящие ныне ничего не строится и никакой унификации интерфейсов API не ведется (может только закрыто, на кухнях, но не для пользователей). А уже пора. Но получаю ответ – гляди на PR какого-то чувака и про какую-то дурь :)
 

r44083

Member
По итогу - всё печально. Mongoose web server library не заводится у меня.
Хотя что я делаю не правильно, я так и не понял.

Может кто подскажет подходящий солюшн встраиваемого веб сервера?
 

pvvx

Активный участник сообщества
По итогу - всё печально. Mongoose web server library не заводится у меня.
Хотя что я делаю не правильно, я так и не понял.
Не прилинковали стандартные библиотеки и/или не исправили обращения к уже имеющимся в SDK процедурам, таким как printf с плавающей точкой.
Может кто подскажет подходящий солюшн встраиваемого веб сервера?
А списочек минимальных требований от так называемого "веб сервера" можно огласить?
 

r44083

Member
Вот требования:
  • ROM < 90 kB
  • RAM < 50 kB
  • Поддержка HTTP, AJAX (с коллбеками на C функции), 5 одновременных коннектов, вебсокеты, желательно наличие фичи авторизации и работы с файлами.
  • Простое и юзабельное API.

А пока займусь заменой обращений Mongoose к stdlib на ту что идёт с ESP
 
Последнее редактирование:

pvvx

Активный участник сообщества
  • ROM < 90 kB
Зависит от SDK и использованных в ней либ. Влиять на это почти нет возможностей.
  • RAM < 50 kB
Самому HTTP-Web требуется только буфер на строку приема и передачи. Если принять ограничение в 512 байт, то получаем 1 килобайт на время активности (обработки запроса-ответа) и структуру управления соединением (на время соединения). Если соединение обслуживается одно - то это всё. Если 5-ть, то к 6 кило :)
Всё остальное буферизирует LwIP.
  • Поддержка HTTP, AJAX (с коллбеками на C функции), 5 одновременных коннектов, желательно наличие фичи авторизации и работы с файлами.
Авторизация - это простое base64encode/base64decode и поиск в строке запроса указания пароля...
AJAX подразумевает передачу переменных к Web в GET/POST, а так-же в куки и мультидата. Вам все варианты надо? Никакого парсинга в выдаваемых файлах AJAX не подразумевает. Это уже SSI или PHP или ...
  • Простое и юзабельное API.
Это есть в самом SDK любого MCU.
--------
Если вы посмотрите на пример mongoose/user_main.c at master · cesanta/mongoose · GitHub
То увидите, что никакого Web он для ESP8266 не содержит. Только простой socket с нашлепкой и разговор о web в Mongoose OS не идет. Приделали события открытия и закрытия socket-а - на этом всё.
В Arduino IDE и то более развитый сервис для примитивного подобия web.
--------
По поводу файловой системы.
Обычно, все дети, используют SPIFFS. Но у него проблемы при большой дефрагментации и открытых одновременно нескольких файлах - открытие файла занимает более секунды на ESP8266 и не годится для web и тем более AJAX, т.к. AJAX ориентировано на интерактивную работу с пользователем, а не с машиной которая может и подождать несколько секунд до открытия файла...
Либы SD с FAT (без 32 :)) на ESP ещё тормознее.
--------
Берете проект ESPHTTPD - в нем есть всё что вы описали и ничего более лишнего.
 
Последнее редактирование:

lsm

Разработчик Smart.js
Команда форума
Если вы посмотрите на пример mongoose/user_main.c at master · cesanta/mongoose · GitHub
То увидите, что никакого Web он для ESP8266 не содержит. Только простой socket с нашлепкой и разговор о web в Mongoose OS не идет. Приделали события открытия и закрытия socket-а - на этом всё.
В Arduino IDE и то более развитый сервис для примитивного подобия web.
Это наглое вранье, @pvvx . Идите к черту с этой темы. Ваши сообщения буду удалять.

Mongoose OS по умолчанию запускает веб сервер. Имеет клиента и для http и для websocket.
Вот видео:

Встроенный веб сервер Mongoose OS

Пример создания RPC сервиса и вызова его через serial, http, websocket, и mqtt протоколы:
Mongoose OS
 

lsm

Разработчик Smart.js
Команда форума
Разобрались с линковкой?

FYI, Mongoose OS использует esp-open-sdk , который использует newlib C библиотеку:

GitHub - jcmvbkbc/newlib-xtensa
 
Последнее редактирование:

r44083

Member
Нет, это я удалил.
Разобрались с линковкой?
Ещё нет. Я нашел что многие прототипы функций, фигурирующих в ошибках линковки типа "undefined reference to `snprintf'" - объявлены в ESP8266_SDK/include/espressif/esp_lib.c
Интересно, что линковщик не может найти их имплементацию.
Прилинковывание библиотеки libc не помогло.
Сейчас попробую использовать newlib.
 

r44083

Member
Заметил что когда я убираю из флагов линковки "-nostdlib", то такого множества ошибок уже не возникает. Но линковка также проходит с ошибками:
Код:
e:/soft/1-ready/sublimetext/xtensa-lx106-elf/bin/../lib/gcc/xtensa-lx106-elf/5.1.0/../../../../xtensa-lx106-elf/bin/ld.exe: cannot find crt1-sim.o: No such file or directory
e:/soft/1-ready/sublimetext/xtensa-lx106-elf/bin/../lib/gcc/xtensa-lx106-elf/5.1.0/../../../../xtensa-lx106-elf/bin/ld.exe: cannot find _vectors.o: No such file or directory
 

par

New member
Такая же ерунда была в прошлом году. Примеры с сайта не запускались. Прочитал про smart.js загорелся идеей...уж очень привлекательной казалась. но что-то много сырого было тогда. писал в форум. И все без внятного ответа. Бросил... Только времени убил много - это жаль. Все же на С++ оказалось комфортнее жить. Год спустя страшно даже пробовать снова.
 

lsm

Разработчик Smart.js
Команда форума
Такая же ерунда была в прошлом году. Примеры с сайта не запускались. Прочитал про smart.js загорелся идеей...уж очень привлекательной казалась.
@r44083 не Mongoose OS хочет запустить, а голый веб сервер, и не линкуются функции stdlib.

@par а что именно привлекательным казалось?
 
Сверху Снизу