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

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

r44083

Member
А пример из нашей репы собирается и работает?

mongoose/examples/ESP8266_RTOS at master · cesanta/mongoose · GitHub
Во время билда происходит ошибка (похоже он не может найти бинарь esp_init_data_default.bin). Хотя путь к ESP8266-RTOS-SDK-1.50 прописан верно и все стандартные бинари лежат в папке bin.
Код:
D:\mongoose-master\examples\ESP8266_RTOS>make fw.zip
Makefile:141: warning: overriding commands for target `clean'
F:/electronics/sw/lib/ESP8266-RTOS-SDK-1.50/Makefile:312: warning: ignoring old commands for target
`clean'
process_begin: CreateProcess(NULL, /usr/local/bin/fw_meta* create_manifest --platform=esp8266 --name
=mongoose_example "--build_info={\"build_version\": \"1.0\", \"build_id\": \"test\"}" --staging_dir=
.output --output=.output/manifest.json iram:addr=0,src=/eagle.flash.bin irom:addr=0x20000,src=/eagle
.irom0text.bin sysparams:addr=0x7e000,type=sys_params,src=F:/electronics/sw/lib/ESP8266-RTOS-SDK-1.5
0/bin/esp_init_data_default.bin, ...) failed.
make (e=2): Не удается найти указанный файл.
make: *** [fw.zip] Error 2
 
Последнее редактирование:

lsm

Разработчик Smart.js
Команда форума
Попробуйте собрать используя build.sh скрипт. Обновите репо. Вот лог моей успешной сборки на linux и на Macos.

Вот linux. Обратите внимание, я беру бранч "dev".

Код:
$ uname -a
Linux foo.x86_64 #1 SMP Mon Aug 29 23:29:40 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
$  git clone -b dev https://github.com/cesanta/mongoose.git
$ cd mongoose/examples/ESP8266_RTOS/
$ sh build.sh
...
  fw.zip built. Use "mos flash fw.zip" to flash.
Вот MacOS.

Код:
$ uname -a
Darwin medved.local 14.5.0 Darwin Kernel Version 14.5.0: Tue Sep  1 21:23:09 PDT 2015; root:xnu-2782.50.1~1/RELEASE_X86_64 x86_64
$ git clone -b dev https://github.com/cesanta/mongoose.git
$ cd mongoose/examples/ESP8266_RTOS/
$ sh build.sh
...
  fw.zip built. Use "mos flash fw.zip" to flash.
[/code]

Для сборки не нужен SDK. Нужен установленный git и docker.
Попробуйте, должно все собраться. Следующий шаг - использовать SDK на вашей машине а не тот который в docker image запакован. И после этого - использовать ваш Makefile.
 

pvvx

Активный участник сообщества
@par а что именно привлекательным казалось?
Отвечу, за par, может совпадет:
Привлекательного в поддержке Java на устройстве только то, что позволяет создать “жесткую” (неизменяемую) прошивку, а все модификации описывать в подгружаемых с файловой системы файлах. Но т.к. у ESP беда c ресурсами для обслуживания нормальной файловой системы, то широкое использование данного метода построения устройств на них не всегда оптимально. Только редкие случаи, где у системы есть особая нужда в расширенной файловой системе для выполняемых задач...
Т.е. в качестве обработчика каких-то скриптов. Больше смысла встраивание интерпретаторов в мало-ресурсную систему не имеют.
 
Последнее редактирование:
  • Like
Реакции: lsm

lsm

Разработчик Smart.js
Команда форума
Также просмотрел последние коммиты в репо с Mongoose и нашел вот такое изменение Makefile:
Да, все верно.

По gcc_sdk - в докере сидит вот это GitHub - cesanta/esp-open-sdk: Free and open (as much as possible) integrated SDK for ESP8266 chips
А это есть GitHub - jcmvbkbc/crosstool-NG: crosstool-NG with support for Xtensa плюс некоторые патчи, все в коммит логе.
 

r44083

Member
А почему бы не использовать libgcc, которая идёт вместе с RTOS_SDK?
Это значительно облегчит интеграцию и поддержку.
 

pvvx

Активный участник сообщества
@r44083 - по вашему запросу в моем профиле по поводу "помощи по иненграции Mongoose веб сервера в мой пустой проект на RTOS_SDK":
Платно, на народных темах и с открытыми исходными кодами я запросов не принимаю.
-----
Если взять пример из mongoose-os/fw/examples/c_http at master · cesanta/mongoose-os · GitHub
И сделать как там написано, то всё собирается за раз.
git clone GitHub - cesanta/mongoose-os: Mongoose OS - an open source Operating System for the Internet of Things. Supported microcontrollers: ESP32, ESP8266, STM32, TI CC3200. Amazon AWS IoT integrated. Code in C or JavaScript.
Ok
cd mongoose-os/fw/examples/c_http
Ok
Далее просто скопировал mos.exe в папку mongoose-os\fw\examples\c_http\
и запустил mos build --arch esp8266 >log.txt
log.txt:
Код:
Connecting to http://mongoose.cloud, user test
Uploading sources (1394 bytes)
Success, built c_http/esp8266 version 1.0 (20170505-130116/???).
Firmware saved to build\fw.zip
Оно сохранило и лог компиляции в mongoose-os\fw\examples\c_http\build\build.log
Какая используется версия SDK ESP8266 он отмалчивается, но RTOS_SDK не считаю нужным вообще на ESP8266.
Ничего в системе специального не ставил.
Уточните, что вы имеете под понятием "иненграции Mongoose веб сервера в мой пустой проект".

Судя по надписи "SDK ver: %s compiled @ Jul 19 2016 17:58:40" в полученном бинарнике - это NON_OS_SDK.
 
Последнее редактирование:
  • Like
Реакции: lsm

pvvx

Активный участник сообщества
Перечитал тему с нуля и нашел только это:
Но я не хочу и не могу тянуть весь Mongoose фреймворк/OC. Нужен только вебсервер.
Т.е. вам надо вырезать из интерпретатора только куски кода, отвечающие за Web-HTTP сервер?
При сборке "интерпретаторов" линковщик плохо разбирается "с лишним кодом", т.к. там запросы на всё, что затронуто в исходниках и исключить "лишний код" он не может.
Уточняйте конкретнее, что вам нужно и что можно исключить - возможно авторы сами вас направят или сделают облегченную версию. Но пока как-то слабо представляется, как после исключения части кода OS вообще заработает Web, ориентированный на запросы к этой OS :)
Наверно вам надо отключить SSL либу - это проще...
 

lsm

Разработчик Smart.js
Команда форума
Какая используется версия SDK ESP8266 он отмалчивается, но RTOS_SDK не считаю нужным вообще на ESP8266.
Да, используется non-OS SDK:

Код:
docker images | grep 66
docker.cesanta.com/esp8266-build       2.0.0-1.5.0-r4      682ad2ca5f9b        6 weeks ago         721.6 MB
Версия 2.0.0-1.5.0-r4 . Можно внутрь докера посмотреть что у него там конкретно:
Код:
$ docker run -it docker.cesanta.com/esp8266-build:2.0.0-1.5.0-r4 bash
root@2042cf1e7619:/# ls -l /opt/Espressif/
total 12
lrwxrwxrwx  1 user user   31 Mar 12 05:16 ESP8266_NONOS_SDK -> /opt/Espressif/esp-open-sdk/sdk
drwxr-xr-x 17 user user 4096 Mar 12 05:16 ESP8266_RTOS_SDK
drwxr-xr-x  3 user user 4096 Mar 12 05:16 crosstool-NG
drwxr-xr-x 11 user user 4096 Mar 12 05:16 esp-open-sdk
 

lsm

Разработчик Smart.js
Команда форума
У нас есть:

1. Mongoose Web Server. На гитхабе - проект cesanta/mongoose . Это просто голая библиотека с HTTP сервером и клиентом.

2. Mongoose OS. На гитхабе - проект cesanta/mongoose-os . Это фреймворк для создания прошивок. Частью его является Mongoose Web Server, но в дополнение к нему - много других обвесок, флешер, движок JS, файловая система, OTA, RPC, и тд. Идея Mongoose OS в том чтобы предоставить одинаковую среду и API на разных платформах, и API дать как на C, так и пробросить C API в JavaScript для прототипирования и простеньких задач.

Получить функциональность веб сервера можно используя оба проекта. Для обоих примеров есть сборка на докере - выше я дал пример для (1), а pvvx показал для (2).

@r44083 получилось собрать прошивку хотя бы одним способом?
 
Последнее редактирование:

r44083

Member
У нас есть:

1. Mongoose Web Server. На гитхабе - проект cesanta/mongoose . Это просто голая библиотека с HTTP сервером и клиентом.

2. Mongoose OS. На гитхабе - проект cesanta/mongoose-os . Это фреймворк для создания прошивок. Частью его является Mongoose Web Server, но в дополнение к нему - много других обвесок, флешер, движок JS, файловая система, OTA, RPC, и тд. Идея Mongoose OS в том чтобы предоставить одинаковую среду и API на разных платформах, и API дать как на C, так и пробросить C API в JavaScript для прототипирования и простеньких задач.

Получить функциональность веб сервера можно используя оба проекта. Для обоих примеров есть сборка на докере - выше я дал пример для (1), а pvvx показал для (2).

@r44083 получилось собрать прошивку хотя бы одним способом?
Получилось собрать mongoose-os как описал выше @pvvx
 

r44083

Member
@lsm, можите выложить тут саму стандартную библиотеку, которая запакована в докере? Попробую её прилинковать что бы таки собрать Mongoose web library.
 
Сверху Снизу