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