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