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