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

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

nikolz

Well-known member
Вы предлагаете мне ковырять чужой код (rboot, nodemcu) с целью доведения его до идеала? Простите, но это не входит в мои планы, мне проще тогда оставить 1 пример helloworld. Вы этого хотите? Для чего вся эта полемика? Вы бы вместо этого вязли да исправили код и сделали pull request, но нет, мы же русские, будем чесать языком еще 10 страниц форума. Херней какой-то страдаете, простите за грубое выражение.

pvvx правильно говорит, ставьте -Wall -Werror и вы увидите столько ошибок в китайском коде, что мама не горюй.
хотите идеальный код, дак пишите его, вам никто не запрещает, что толку обсуждать чужой код (он даже не мой, я про rboot, nodemcu).
Я Вам ничего не предлагаю, если внимательно посмотрите.
Вы просили сообщить об ошибках , я Вам сообщаю.
Если сообщать не надо, то так и напишите, что Вам по ... как работает Ваш UDK и я перестану вообще что-либо о нем сообщать.
А предложение поставить ключ и увидеть ошибки чего? Ошибки будут в Вашем UDK. и где доказательства что это ошибки в SDK.
Не надо ля-ля.
при все уважении к pvvx, но его манера модифицировать чужой софт что-то сделать , а там , где не получается, оправдать руганью в адрес китайцев. Благо никто, кроме него, не может разобраться в его творении. Вообще нет никакой документации.
----------------------------
Нечего на зеркало пенять ...
 

nikolz

Well-known member
и еще относительно фразы:
"Вы предлагаете мне ковырять чужой код"
А Вы с pvvx разве не этим изначально занимаетесь?
Вы что сами все написали и никакой чужой код не ковыряли?
 

nikolz

Well-known member
XP
-----------------------------
1) Выкладываю пример rboot, в котором исправлены предупреждения.
-------------------------------
2) В примере esphtppd вылезает предупреждение:
c:/espressif/xtensa-lx106-elf/bin/../lib/gcc/xtensa-lx106-elf/5.2.0/../../../../xtensa-lx106-elf/bin/ld.exe:ldscript_memspecific.ld:1: warning: redeclaration of memory region `irom0_0_seg'
кто знает причину?
---------------------------------------
3) В примере nodemcu-firmware вылезает ошибка:
c:/Espressif/xtensa-lx106-elf/bin/xtensa-lx106-elf-gcc -L../lib -Wl,--gc-sections -Xlinker -Map=mapfile -nostdlib -T../ld/eagle.app.v6.ld -Wl,--no-check-sections -Wl,--wrap=_xtos_set_exception_handler -Wl,-static -Wl,--start-group -lc -lgcc -lhal -lphy -lpp -lnet80211 -lwpa -lmain -ljson -lsmartconfig -lssl user/.output/eagle/debug/lib/libuser.a driver/.output/eagle/debug/lib/libdriver.a lwip/.output/eagle/debug/lib/liblwip.a json/.output/eagle/debug/lib/libjson.a upgrade/.output/eagle/debug/lib/libupgrade.a platform/.output/eagle/debug/lib/libplatform.a libc/.output/eagle/debug/lib/liblibc.a lua/.output/eagle/debug/lib/liblua.a coap/.output/eagle/debug/lib/coap.a mqtt/.output/eagle/debug/lib/mqtt.a u8glib/.output/eagle/debug/lib/u8glib.a smart/.output/eagle/debug/lib/smart.a wofs/.output/eagle/debug/lib/wofs.a spiffs/.output/eagle/debug/lib/spiffs.a cjson/.output/eagle/debug/lib/libcjson.a crypto/.output/eagle/debug/lib/libcrypto.a dhtlib/.output/eagle/debug/lib/libdhtlib.a modules/.output/eagle/debug/lib/libmodules.a -Wl,--end-group -lm -o .output/eagle/debug/image/eagle.app.v6.out
c:/espressif/xtensa-lx106-elf/bin/../lib/gcc/xtensa-lx106-elf/5.2.0/../../../../xtensa-lx106-elf/bin/ld.exe: .output/eagle/debug/image/eagle.app.v6.out section `.text' will not fit in region `iram1_0_seg'
c:/espressif/xtensa-lx106-elf/bin/../lib/gcc/xtensa-lx106-elf/5.2.0/../../../../xtensa-lx106-elf/lib\libc.a(lib_a-s_frexp.o):(.literal+0x8): undefined reference to `numtest'
c:/espressif/xtensa-lx106-elf/bin/../lib/gcc/xtensa-lx106-elf/5.2.0/../../../../xtensa-lx106-elf/lib\libc.a(lib_a-s_frexp.o): In function `frexp':
d:\Neo\Project\ESP8266\esp8266-devkit\Espressif\dl\newlib-2.0.0\build\xtensa-lx106-elf\newlib\libm\mathfp/../../../../../newlib/libm/mathfp/s_frexp.c:81: undefined reference to `numtest'
c:/espressif/xtensa-lx106-elf/bin/../lib/gcc/xtensa-lx106-elf/5.2.0/../../../../xtensa-lx106-elf/lib\libc.a(lib_a-s_ldexp.o):(.literal+0x0): undefined reference to `z_infinity'
c:/espressif/xtensa-lx106-elf/bin/../lib/gcc/xtensa-lx106-elf/5.2.0/../../../../xtensa-lx106-elf/lib\libc.a(lib_a-s_ldexp.o): In function `ldexp':
d:\Neo\Project\ESP8266\esp8266-devkit\Espressif\dl\newlib-2.0.0\build\xtensa-lx106-elf\newlib\libm\mathfp/../../../../../newlib/libm/mathfp/s_ldexp.c:87: undefined reference to `numtest'
collect2.exe: error: ld returned 1 exit status
../Makefile:318: recipe for target '.output/eagle/debug/image/eagle.app.v6.out' failed
mingw32-make[1]: *** [.output/eagle/debug/image/eagle.app.v6.out] Error 1
mingw32-make[1]: Leaving directory 'C:/Espressif/examples/ESP8266/nodemcu-firmware/app'
C:/Espressif/examples/ESP8266/nodemcu-firmware/Makefile:266: recipe for target '.subdirs' failed
mingw32-make.exe: *** [.subdirs] Error 2

15:56:48 Build Finished (took 10m:33s.194ms)


кто знает причину?
 

Вложения

CHERTS

Moderator
Команда форума
Если сообщать не надо, то так и напишите, что Вам по ... как работает Ваш UDK и я перестану вообще что-либо о нем сообщать.
Сообщать нужно, только если вы поставите -Wall -Werror и сообщите мне эту портянку ошибок и варнингов, мне легче не станет, вернее я не буду исправлять тысячи варнингов, дабы привести какой-то чужой проект в идеальное состояние - это бессмысленно.

при все уважении к pvvx, но его манера модифицировать чужой софт что-то сделать , а там , где не получается, оправдать руганью в адрес китайцев.
А Вы возьмите пример hello_world и поставьте -Wall -Werror и посмотрите на китай-программер красоту, даже если вы возьмете родной свежий китайский C:\Espressif\ESP8266_SDK\driver_lib\driver\uart.c и замените им старый C:\Espressif\examples\ESP8266\hello_world\driver\uart.c + uart.h и uart_register.h не забудьте, то увидите гору ошибок именно в китайском коде uart.c, дак о чем мы тут говорим?
Так что вся ругань @pvvx в сторону китайских програмеров абсолютна корректна, если бы они (китай-програмеру включили у себя -Wall -Werror и исправили все ошибки, то и не было бы таких косяков с SDK, о которых постоянно пишет pvvx).
Рыба гниет с головы, а чистят её с хвоста... Дак может стоит начать с оригинального китайского кода и в нем исправить все ошибки, а уж потом лезти в другие дебри? Правда исправить это невозможно, в силу понятных причин - код esp sdk закрыт, поэтому... выход один - не использовать китайский код, писать все свое, даже uart.c свой с нуля и включать -Wall -Werror

1) Выкладываю пример rboot, в котором исправлены предупреждения.
nikolz, сделайте pull request мне в github по поводу исправления rboot, это будет самое правильное решение.

В примере nodemcu-firmware вылезает ошибка:
Моет стоит попытаться собрать свежую версию nodemcu-firmware? Может и ошибки там не будет, у меня в UDK старье 2-х годичной давности.
 
Последнее редактирование:

nikolz

Well-known member
Моет стоит попытаться собрать свежую версию nodemcu-firmware? Может и ошибки там не будет, у меня в UDK старье 2-х годичной давности.
Проблема в том что на win10 этой ошибки нет . т е от версии nodemcu это не зависит . это ошибка сс1 так же как и float
 

serg28serg

New member
2. Запускаем файл C:\Espressif\utils\ESP8266\py2exe_esptool.cmd который свежий их репо, там я поправил определение разрядности питона для правильной установки нужной версии py2exe
скачивает 32-х (винда 10х64 , домашняя юбилейная)
SYSTEM_WGETRC = c:/progra~1/wget/etc/wgetrc
syswgetrc = c:/progra~1/wget/etc/wgetrc
--2016-09-13 12:29:35-- http://kent.dl.sourceforge.net/project/py2exe/py2exe/0.6.9/py2exe-0.6.9.win32-py2.7.exe
Resolving kent.dl.sourceforge.net... 212.219.56.185

ну это ладно, скачал вручную
py2exe-0.6.9.win64-py2.7.amd64.exe

далее запустился py2exe_esptool.cmd и закончился без ошибок

а вот в сборке
Run gen_appbin.exe
C:/Espressif/examples/ESP8266/1wire_ds18b20/Makefile:267: recipe for target 'build/app.out' failed
mingw32-make.exe: *** [build/app.out] Error 255

выпадает окно - Прекращена работа программы gen_appbin.exe
до запуска py2exe_esptool.cmd - собирался нормально например 1wire_ds18b20
 

pvvx

Активный участник сообщества
Проблема в том что на win10 этой ошибки нет . т е от версии nodemcu это не зависит . это ошибка сс1 так же как и float
Включите же -Wall -Werror и может что и проясниться (у меня во всех проектах стоят) . Лучше вообще на код пустить типа C-STAT Static Analysis. К примеру на Realtek sdk-ameba1-v3.4b3_without_NDA он говорит: Analysis completed. 585 message(s). 585 warning ! :p
В либах ESP8266 куча не инициализированных переменных, на которые ругается компилятор. Т.е. там расчет, что к функциям используются только параметры из их примера IoT_Demo. При другой последовательности вызова функций или с другими переменными = крах системы. Привет Espressif :) :p
Забудьте о рабочей Lua на ESP8266...
 

nikolz

Well-known member
Включите же -Wall -Werror и может что и проясниться (у меня во всех проектах стоят) . Лучше вообще на код пустить типа C-STAT Static Analysis. К примеру на Realtek sdk-ameba1-v3.4b3_without_NDA он говорит: Analysis completed. 585 message(s). 585 warning ! :p
В либах ESP8266 куча не инициализированных переменных, на которые ругается компилятор. Т.е. там расчет, что к функциям используются только параметры из их примера IoT_Demo. При другой последовательности вызова функций или с другими переменными = крах системы. Привет Espressif :) :p
Забудьте о рабочей Lua на ESP8266...
Спасибо за совет, но я Вам верю, что предупреждений много.
----------------------------
Я же хотел бы решить следующие приколы.
------------------------
1) Если работает на wim10 в той сборке которая есть, то все собирается без каких либо предупреждений и ошибок.
------------------------
2) Если собираем на XP то получаем ошибку float в примерх на C и С++, предупреждение в rboot и ошибку nodemcu о том, что не умещается в какую-то там секцию.
------------------------------
3) Заменяем cc1.exe из версии 5.1.0.
Ошибки float в примерах на C нет, на C++ - есть.
-----------------------------------
4) Заменяем сс1plus.exe из версии 5.1.0 ошибки float -нет.
---------------------------
При этом я никакие ключи у трансляторов не меняю.
Можете объяснить эти приколы или предложить вариант их исправления?
Спасибо
 

nikolz

Well-known member
УРА!!! ПРОБЛЕМА РЕШЕНА!!!
Как и ожидалось проблема в cc1.exe, сс1plus.exe и ld.exe.
Т е в ошибках float виноваты компиляторы
а в ошибке в nodemcu о том что не умещается в секцию виноват линковщик.
РЕШЕНИЕ ПРОБЛЕМЫ:
Берем целиком C:\Espressif\xtensa-lx106-elf с версией 5.1.0 из сборки SDK 1.3.0 и ставим в последнюю сборку UDK с SDK 2.0.
В результате на XP нет ошибок.
 

CHERTS

Moderator
Команда форума
качивает 32-х (винда 10х64 , домашняя юбилейная)
Потому, что py2exe должен ставиться под разрядность питона, на не под разрядность винды. Если вы поставили python-2.7.12.amd64.msi то и должны ставить py2exe-0.6.9.win64-py2.7.amd64.exe

Упс... Тот свежий батник , что я подправил оказаля с багом, неправильно оперделял разрядность питона, вернее он её не определял...

P.S. батник , обновлен, теперь разрядность питона определяет корректно.
 
Последнее редактирование:

pvvx

Активный участник сообщества
А как с этим
Код:
C:\MinGW\msys\1.0\bin\make.exe: *** couldn't commit memory for cygwin heap, Win32 error 0
make: *** [ram_all] Error 1
бороться в x32 когда много файлов (DEPENDENCY...)?
Mingw64 переваривает без проблем.
 

pvvx

Активный участник сообщества
x64 не вариант, надо искать способ чтобы работало на 32-х битках.
32-битных компов еще дохрена и так будет долго, особенно в недорогих ноут- и нет-буках.
Тогда есть различие в вызове 'make'.
В настройках Eclipse, вызывается make, по умолчанию это make.exe по PATH. Если заменить на mingw32-make.exe, то указанной ошибки у меня не возникает.
Eclipse имеет автоматическое определение mingw и там могут быть разные беды, в зависимости от переменных среды, типа PATH...
 

DarkSide

New member
Предлагаю поубивать все примеры из UDK кроме hello_world и стандартных с SDK. Большую часть всех примеров (если не все) можно свободно найти на github (к тому же более актуальные версии). Зачем тратить время на их актуализацию? Как говорится, "кто ищет - тот найдет", да и UDK будет чище.
 

pvvx

Активный участник сообщества
Предлагаю поубивать все примеры из UDK кроме hello_world и стандартных с SDK. Большую часть всех примеров (если не все) можно свободно найти на github (к тому же более актуальные версии). Зачем тратить время на их актуализацию? Как говорится, "кто ищет - тот найдет", да и UDK будет чище.
Предлагаю убить UDK. Можно свободно найти на github (к тому же более актуальные версии) компилятора для ESP. Кто "кто ищет - тот найдет"... :)
 

DarkSide

New member
Предлагаю убить UDK. Можно свободно найти на github (к тому же более актуальные версии) компилятора для ESP. Кто "кто ищет - тот найдет"... :)
Покажите мне, пожалуйста, SDK для ESP8266 которая работает "из коробки" под Windows. А именно, которую достаточно скачать и запустить 1 скрипт для сборки тулчейна (я уже не говорю про установщик). Может быть я плохо владею навыками поиска? ;)
 

CHERTS

Moderator
Команда форума
Не нужно никого убивать, оно само умрет со временем ;)
 

pvvx

Активный участник сообщества
Покажите мне, пожалуйста, SDK для ESP8266 которая работает "из коробки" под Windows. А именно, которую достаточно скачать и запустить 1 скрипт для сборки тулчейна (я уже не говорю про установщик). Может быть я плохо владею навыками поиска? ;)
Понимаете, что так не интересно - нажал капу и всё готово... Что будет тогда Тамагочей и кто будет тогда писать Блог "Как я установил компилятор"?
И как же тогда "процесс домашнего Творчества" ?
По этому в UDK две капы и их можно нажимать в разной последовательности с разными итогами :)
 
Последнее редактирование:

DarkSide

New member
Понимаете, что так не интересно - нажал капу и всё готово... Что будет тогда Тамагочей и кто будет тогда писать Блог "Как я установил компилятор"?
И как же тогда "процесс домашнего Творчества" ?
По этому в UDK две капы и их можно нажимать в разной последовательности с разными итогами :)
Улыбнули :) Теперь я понял скрытое назначение примеров в UDK :D
 
Сверху Снизу