• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Ошибки при сборке примеров в UDK

nikolz

Well-known member
К сожалению, описанный мною пример унификации makefile работает лишь в старой версии UDK.
По причине нововведений примеры будут другие, пока не сделал.
 

nikolz

Well-known member
Вопрос по UDK
Правильно ли я понял, что с созданием копии примеров в отдельную папку в каталоге ESP8266 изменения в них теперь не появляются в исходных примерах и теперь два экземпляра примеров исходных , первый в Вашем zip UDK второй в examples, и третий изменяемый в папке examples/ESP8266. Верно?
---------------------
Поясните , плиз, в чем смысл создание такого количества копий.
Спасибо.
 

nikolz

Well-known member
модернизация makefile
для новой сборки UDK надо написать
ROOT =../../..
 

CHERTS

Moderator
Команда форума
Так как данный UDK предназначен исключительно для программирования ESP8266, то разумно сделать каталог driver один для всех примеров.
т е если мы написали драйвер для SPI то он одинаковый для всех примеров . И зачем же держать кучу его копий и каждый раз транслировать?
Более того, если будет создан новый драйвер, еще лучше, то заменив старый один раз, мы обновим его во всех примерах.
Таким образом, можно создавать библиотеку лучших драйверов переферии eSP8266 и не плодить множество уродов.
Разумно, но не логично. Потому, что по моему мнению - каждый пример прошивки в UDK должен быть самодостаточный и не зависеть от каких-то общих каталогов библиотек, общих Makefile (как кто-то уже предлагал сделать) и т.п. Должна быть одна зависимость - от Espressif SDK. Именно по этой же причине у меня в UDK собрано куча версий Espressif SDK, потому, что некоторые примеры собираются только с определенной версией SDK.
Да такой подход сложнее поддерживать, но он по моему мнению оправдан.
Каталог examples - это примеры, они не претендуют на звание готовых решений, это примеры реализации тех или иных возможностей ESP8266, да в них есть ошибки, если Вы включите вместо -Werror опцию -Wall, то увидите огромную кучу warning предупреждений компилятора, которых в нормально написанной программе быть не должно, но они есть в силу неидеальности примеров.

UDK в первую очередь предназначен для быстрого старта в разработке прошивок для ESP, именно для этого там собрана актуальная документация, которая может пригодиться разработчику, компилятор (увы тоже не идеальный, gdb я так и не могу собрать), собрана коллекция примеров и утилит.

В UDK есть ошибки, я не спорю на этот счет, ошибок не супер много, но и не 1-2 - есть над чем поработать, есть ошибки и в примерах, в последней Beta версии от 24.05.2016 я пробежался по всем примерам, все что не собиралось и можно было исправить в сжатые сроки - я исправил, для тестирования я проверил последний UDK 2.1.0 Beta от 24.05.2016 на 2 ПК, на рабочем и дома, все примеры за исключением 1 собираются. Скорее всего я проведу ревизию и удалю из примеров все громоздкие проекты, типа nodemcu-firmware, esp_mesh_sdk_*, ESP8266_Relay_Board, EspLightNode, esp_mqtt, esphttpd, rboot т.к. они развиваются как самостоятельные проекты на github.com и нет смысла их тащить в UDK, но это еще под вопросом.

Те ошибки о которых Вы говорите и пишите nikolz в стабильных UDK v2.0.9 и ранее могут иметь место, т.к. я должным образом не проверил сборку всех примеров перед релизом. Но, эти ошибки я постараюсь устранить в новой версии (2.1.0), в старых версиях UDK я их устранять не буду - это бессмысленно, новые версии для того и публикуются что в них устраняются ошибки старых релизов. Вы же пытаетесь понять и исправить ошибки в какой-то старой версии UDK и я не пойму для чего Вам это старьё нужно, скажите пожалуйста?

Ну и напоследок видео сборки всех примеров, комп у меня слабенький, поэтому сборка заняла аж 30 минут, смотрите вначале конфигурацию системы, потом мотайте на 31 минуту чтобы сразу увидеть результат.
Система на работе: Win 7 Prof x64, Eclipse Mars.1, UDK 2.1.0 Beta от 24.05.2016
Система дома: Win 7 Prof x64, Eclipse Mars.1, UDK 2.1.0 Beta от 24.05.2016
То есть софт весь одинаковый.
Ошибок сборки всего 5 и все они связана с примеров esp_mesh_sdk_app_light
Предупреждений 4 и они связаны с примером rboot и esphttpd
Я повторил сборку 2 раза и дома и на работе с очисткой (меню Project -> Clean...), галка Build Automatically снята , количество ошибок неизменно.
 
Последнее редактирование:

CHERTS

Moderator
Команда форума
Похоже, что компилятор неправильно парсит плавающие числа. Похоже, что проблема в mpfr.
Максим, почему я не могу повторить эту ошибку? У меня все нормально собирается с последним UDK 2.1.0 Beta от 24.05.2016, старые зарелизеные ранее UDK меня сейчас не волнуют.
 

CHERTS

Moderator
Команда форума
как убрать предупреждения:
Invalid project path: Include path not found (C:\Espressif\ESP8266_RTOS_SDK\include\udhcp). esp8266-ir-remote pathentry Path Entry Problem
Invalid project path: Include path not found (C:\Espressif\ESP8266_RTOS_SDK\include\udhcp). esp_rtos_sdk_example pathentry Path Entry Problem
Invalid project path: Include path not found (C:\Espressif\ESP8266_RTOS_SDK\include\udhcp). esp_rtos_sdk_example_2 pathentry Path Entry Problem
redeclaration of memory region `irom0_0_seg' esphttpd line 1, external location: c:\espressif\xtensa-lx106-elf\xtensa-lx106-elf\bin\ld.exe:ldscript_memspecific.ld C/C++ Problem
Удалите в Eclipse в настройках проекта неправильно заданные пути
 

jcmvbkbc

New member
Максим, почему я не могу повторить эту ошибку? У меня все нормально собирается с последним UDK 2.1.0 Beta от 24.05.2016, старые зарелизеные ранее UDK меня сейчас не волнуют.
Я тоже не могу. Место в gcc откуда выдаётся эта ошибка вызывает mpfr для конвертирования строки в плавающее число, отсюда мой предварительный вывод.
 

nikolz

Well-known member
Разумно, но не логично. Потому, что по моему мнению - каждый пример прошивки в UDK должен быть самодостаточный и не зависеть от каких-то общих каталогов библиотек, общих Makefile (как кто-то уже предлагал сделать) и т.п. Должна быть одна зависимость - от Espressif SDK. Именно по этой же причине у меня в UDK собрано куча версий Espressif SDK, потому, что некоторые примеры собираются только с определенной версией SDK.
Да такой подход сложнее поддерживать, но он по моему мнению оправдан.
Каталог examples - это примеры, они не претендуют на звание готовых решений, это примеры реализации тех или иных возможностей ESP8266, да в них есть ошибки, если Вы включите вместо -Werror опцию -Wall, то увидите огромную кучу warning предупреждений компилятора, которых в нормально написанной программе быть не должно, но они есть в силу неидеальности примеров.

UDK в первую очередь предназначен для быстрого старта в разработке прошивок для ESP, именно для этого там собрана актуальная документация, которая может пригодиться разработчику, компилятор (увы тоже не идеальный, gdb я так и не могу собрать), собрана коллекция примеров и утилит.

В UDK есть ошибки, я не спорю на этот счет, ошибок не супер много, но и не 1-2 - есть над чем поработать, есть ошибки и в примерах, в последней Beta версии от 24.05.2016 я пробежался по всем примерам, все что не собиралось и можно было исправить в сжатые сроки - я исправил, для тестирования я проверил последний UDK 2.1.0 Beta от 24.05.2016 на 2 ПК, на рабочем и дома, все примеры за исключением 1 собираются. Скорее всего я проведу ревизию и удалю из примеров все громоздкие проекты, типа nodemcu-firmware, esp_mesh_sdk_*, ESP8266_Relay_Board, EspLightNode, esp_mqtt, esphttpd, rboot т.к. они развиваются как самостоятельные проекты на github.com и нет смысла их тащить в UDK, но это еще под вопросом.

Те ошибки о которых Вы говорите и пишите nikolz в стабильных UDK v2.0.9 и ранее могут иметь место, т.к. я должным образом не проверил сборку всех примеров перед релизом. Но, эти ошибки я постараюсь устранить в новой версии (2.1.0), в старых версиях UDK я их устранять не буду - это бессмысленно, новые версии для того и публикуются что в них устраняются ошибки старых релизов. Вы же пытаетесь понять и исправить ошибки в какой-то старой версии UDK и я не пойму для чего Вам старые нужно, скажите пожалуйста?

Ну и напоследок видео сборки всех примеров, комп у меня слабенький, поэтому сборка заняла аж 30 минут, смотрите вначале конфигурацию системы, потом мотайте на 31 минуту чтобы сразу увидеть результат.
Система на работе: Win 7 Prof x64, Eclipse Mars.1, UDK 2.1.0 Beta от 24.05.2016
Система дома работе: Win 7 Prof x64, Eclipse Mars.1, UDK 2.1.0 Beta от 24.05.2016
То есть софт весь одинаковый.
Ошибок сборки всего 5 и все они связана с примеров esp_mesh_sdk_app_light
Предупреждений 4 и они связаны с примером rboot и esphttpd
Я повторил сборку 2 раза и дома и на работе с очисткой (меню Project -> Clean...), галка Build Automatically снята , количество ошибок неизменно.
---------------------
Добрый день,
Вы все сделали замечательно.
Я просто пытаюсь сделать это удобно в применении и проще в сопровождении.
Вы же сами указали, что сопровождать сложно.
Но зачем же тогда отказываться от более легкого сопровождения, если затрат на это не возникает?
теперь про ваше видение, что Ваш UDK - это просто старт.
По-моему мнению, Вы преуменьшаете значение UDK. Это не просто старт, а вполне нормальный продукт для разработки на нем приложений для ESP.
именно поэтому, я предлагаю двигаться дальше - в сторону законченных приложений и отлаженных модулей для ESP.
Проблема в том, что при выходе новой сборки UDK, любые изменения в примерах или созданые новых надо сначала выносить из сборки, так как Вы все удаляете, потов вносить и при этом править makefile если вы что-то добавили (как сейчас сделали еще каталог в каталоге)
 

CHERTS

Moderator
Команда форума
Я просто пытаюсь сделать это удобно в применении и проще в сопровождении.
Вы же сами указали, что сопровождать сложно.
Вы можете клонировать UDK с моего репа на github к себе, внести правки и реструктуризацию как на ваш взгляд будет правильно и сделать pull request на добавление изменений в UDK, я проверю все и если изменения будут действительно полезны и удобны то приму их.

Проблема в том, что при выходе новой сборки UDK, любые изменения в примерах или созданые новых надо сначала выносить из сборки, так как Вы все удаляете,
По-моему - это не проблема UDK, это проблема конкретных людей - зачем свой проект вести в C:\Espressif\examples\ ? Это же бред. Ведите проекты в отдельной папке, так надежней в 100 раз.
 

nikolz

Well-known member
c:/Espressif/xtensa-lx106-elf/bin/xtensa-lx106-elf-gcc -Os -Wall -Wno-pointer-sign -fno-tree-ccp -mno-target-align -mno-serialize-volatile -foptimize-register-move -Wundef -Wpointer-arith -Werror -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -DICACHE_FLASH -DPBUF_RSV_FOR_WLAN -DLWIP_OPEN_SRC -DEBUF_LWIP -I ./include -I ../include -I ../../include -I C:/ESP8266_test/esp8266web-master/include -I C:/ESP8266_test/esp8266web-master/app/include -o .output/eagle/obj/fost02.o -c fost02.c
fost02.c: In function 'ReadHMS':
fost02.c:230:12: error: floating constant truncated to zero [-Werror=overflow]
T.d=((float)(T.ul))*0.005 - PTATD1; //calc. Temperature from ticks to [C] 36.92 0.3
^
fost02.c:230:12: error: floating constant truncated to zero [-Werror=overflow]
fost02.c:234:12: error: floating constant truncated to zero [-Werror=overflow]
RH.d=(float)(RH.ul)*0.5;
^
fost02.c:236:12: error: floating constant truncated to zero [-Werror=overflow]
RH.d=(T.d-25.0)*(0.01+0.00008*RH.d)-0.0000028*RH.d*RH.d+0.0405*RH.d-4.0;
^
fost02.c:236:12: error: floating constant truncated to zero [-Werror=overflow]
fost02.c:236:12: error: floating constant truncated to zero [-Werror=overflow]
fost02.c:236:12: error: floating constant truncated to zero [-Werror=overflow]
попробуйте обновить это:
5. Скачиваем (84Mb) набор моих скриптов для автоматизации установки доп.модулей для MinGW.
Возможно, что автор туда по умолчанию чего-то добавляет и у тех кто ставит все нормально, а у тех кто обновляет сборку получается эта проблема
 

Alex

Member
попробуйте обновить это:
5. Скачиваем (84Mb) набор моих скриптов для автоматизации установки доп.модулей для MinGW.
Возможно, что автор туда по умолчанию чего-то добавляет и у тех кто ставит все нормально, а у тех кто обновляет сборку получается эта проблема
Не помогло.:(
 

nikolz

Well-known member
Добрый день,
Предлагаю такую модернизацию makefile для примеров с текущей версией SDK
makefile из примера перемещается в C:\Espressif\
А в примерах размещается makefile следующего содержания:
ROOT =../../../
include $(ROOT)makefile
------------

В результате любые изменения в make делаются один раз в C:\Espressif\makefile
---------------------

В основном маке можно заменить C:\Espressif\ на $(ROOT).
 

nikolz

Well-known member
Вопрос.
В некоторых примерах в мейк используется
SDK_TOOLS ?= c:/Espressif/utils
в других
SDK_TOOLS ?= c:/Espressif/utils/ESP8266
в чем разница? Если разницы нет, то какой смысл заложен в создании дубля в каталоге ESP8266?
Спасибо
 

CHERTS

Moderator
Команда форума
5. Скачиваем (84Mb) набор моих скриптов для автоматизации установки доп.модулей для MinGW.
Возможно, что автор туда по умолчанию чего-то добавляет и у тех кто ставит все нормально, а у тех кто обновляет сборку получается эта проблема
Нет, я туда ничего не добавляют, в архиве кэш файлов mingw для оффлайн установки, учитывая что mingw периодически обновляет пакеты, то мой архив не совсем актуальный и все равно с инета что то будет скачиваться.
 

luke

New member
Выяснил, что в UDK GCC не допускает дробные константы. т е 10.25 или 10.25f или 10.25F вызывает ошибку floating constant truncated to zero [-Werror=overflow]
Имею аналогичную ошибку при использовании UDK Version 2.1.0 Beta of 24.05.2016 вместо Version 2.0.9 of 02.12.2015 в Sming под Windows 7 SP1 c MinGW64.
 
Сверху Снизу