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

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

Alex

Member
удалил, потому что не решил.
Странное конечно решение удалять. Зачем тогда нужен форум, если Все, всё что не решили будут удалять, то и решения никогда не будет. Ну да ладно. Понимаю без помощи модераторов не обошлось. Путь на их совести будет.

Странно что у других собирается без ошибок. Попробовать на чистую машину поставить что ли для проверки.
 

nikolz

Well-known member
собственно не собираются ,всего 4 примера.
вернее сказать, если ключ -WError уберете, то они тоже соберутся.
Но константы очевидно будут без дробной части.
 

nikolz

Well-known member
Переустановил все на win7.
Эта ошибка исчезла
Но все равно 15 ошибок и 3 предупреждения.
в программах espt00l2.c,esp_rtos, esp_mesh,at,esp8266-ir-remote
--------------------------
На XP работает стабильная версия всего 15 ошибок и 4 предупреждения.
Эта ошибка исчезла .
Пока непонятно, почему она исчезает.
Есть гипотеза, что ее появление связано с нехваткой памяти.
При свопировании потоков возможно что что-то теряется.
Сейчас все выгрузил кроме эклипса и эта ошибка исчезла.
 
Последнее редактирование:

nikolz

Well-known member
Наконец-то получил одинаковый результат для XP и Win7 на стабильной версии.
15 ошибок и 4 предупреждения.
Ошибки можно получить если собрать снова все примеры.
Вот какие ошибки:
upload_2016-5-26_21-37-36.png
 

jcmvbkbc

New member
Каким образом у Вас собирается пример i2c_bmp180 без ошибок, если в нем есть такая строчка:
return (int32_t)(pow(((float)MYALTITUDE/44330)+1,5.255F)*pressure);
1,5.255F - это что такое? Можете объяснить? и почему у Вас нет ошибки?
Это запятая, разделяющая параметры функции pow, ((float)MYALTITUDE/44330) + 1 в степени 5.255.
 

nikolz

Well-known member
Это запятая, разделяющая параметры функции pow, ((float)MYALTITUDE/44330) + 1 в степени 5.255.
Я же удалил этот пост, так как ответ не нужен, когда написал , то разобрался.
-------------------------------
может поясните почему появляется ошибка, Werror=oferflow и вроде бы исчезает если убрать другие задачи.
 

jcmvbkbc

New member
может поясните почему появляется ошибка, Werror=oferflow и вроде бы исчезает если убрать другие задачи.
Можете задать вопрос целиком? И заодно привести командную строку вызова компилятора и текст функции, где возникает ошибка?
 

nikolz

Well-known member
Можете задать вопрос целиком? И заодно привести командную строку вызова компилятора и текст функции, где возникает ошибка?
--------------------------
Добрый день,
Использую UDK
-----------------------------
опции компилятора :
CFLAGS = -Os -g -O2 -std=gnu90 -Wpointer-arith -Wundef -Werror -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -mno-serialize-volatile -D__ets__ -DICACHE_FLASH
-----------------------------
строка программы :
return (int32_t)(pow(((float)MYALTITUDE/44330)+1,5.255F)*pressure);
----------------------------
ошибка :
floating constant truncated to zero [-Werror=overflow] i2c_bmp180.c /i2c_bmp180/driver line 299 C/C++ Problem
---------------------------
 

jcmvbkbc

New member
а откуда я ее возьму?
Вы make запускаете чтобы пример скомпилировать? Из его вывода.
Мне нужна полная командная строка, с которой у вас вызывается компилятор для компиляции i2c_bmp180.c, в процессе чего выводится floating constant truncated to zero.
 

nikolz

Well-known member
не в тему, но хотел бы заметить ,
что этот форум очень сильно грузит канал связи.
Возможно у Вас рекламы напичкано много.
Из всех форумов самый тяжелый.
 

nikolz

Well-known member
вопрос по ошибкам:
как убрать и что это означает?
--------------------------------
build/app.out section `.irom0.text' will not fit in region `irom0_0_seg' esp_rtos_sdk_example_2 C/C++ Problem
mingw32-make.exe: *** [build/app.out] Error 1 at C/C++ Problem
mingw32-make.exe: *** [build/app.out] Error 1 esp8266-ir-remote C/C++ Problem
mingw32-make.exe: *** [build/app.out] Error 1 esp_rtos_sdk_example_2 C/C++ Problem
-------------------------
как убрать предупреждения:
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
--------------------
Спасибо.
 

Alex

Member
Не-не-не, опции компилятора я и сам вижу в makefile, вы покажите пожалуйста целую командную строку.
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]
 

nikolz

Well-known member
предложение по модернизации makefile.
1) сейчас UDK привязано к диску C: и Espressif
-----------------------------------
Если в makefile записать первой строкой
ROOT =../..
--------------------------
и затем вместо c:/Espressif
вставить во всех строках $(ROOT),
то получим возможность работать с любым диском и каталогом, куда копируем UDK.
-----------------------
При этом можно каталог примеров разместить вне UDK.
Тогда можно обновлять отдельно лишь UDK и если есть новые примеры, то отдельно примеры.
Сейчас же каждый раз все сносится и начинается сначала.
---------------------------
2) Сейчас, в случае использования пользователем других параметров порта необходимо править makefile всех примеров. А если примеров будет 1000 ?
поэтому предлагаю вынести параметры порта в текстовый файл port.txt
# port
ESPPORT ?= COM4
BAUD ?= 256000
a во всех makefile вместо этих строк написать
include $(ROOT)/port.txt
В результате, если порт другой, то надо исправить лишь одну строку для всех примеров.

3) аналогично с портом, возникает проблема с правкой параметров spi.
Ее можно решить аналогично.
---------------------------
Вообще, в makefile примеров очень много общей информации, изменение в которой надо вносить во все примеры. Разумно вынести эту информацию в отдельные файлы, чтобы не заниматься копированием ее 1000 раз для 1000 примеров.
--------------------
 

nikolz

Well-known member
отдельно пару слов про примеры.
Так как данный UDK предназначен исключительно для программирования ESP8266, то разумно сделать каталог driver один для всех примеров.
т е если мы написали драйвер для SPI то он одинаковый для всех примеров . И зачем же держать кучу его копий и каждый раз транслировать?
Более того, если будет создан новый драйвер, еще лучше, то заменив старый один раз, мы обновим его во всех примерах.
Таким образом, можно создавать библиотеку лучших драйверов переферии eSP8266 и не плодить множество уродов.
 

jcmvbkbc

New 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
Прекрасно. А не могли бы вы теперь выполнить следующую команду, и выложить куда-нибудь файл .output/eagle/obj/fost02.i :

Код:
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.i -E fost02.c
 
Сверху Снизу