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

UDK: Общие баги/глюки/проблемы

pvvx

Активный участник сообщества
nodemcu-firmware + rapid_loader (48k IRAM)
https://yadi.sk/d/SZy5ff3Mhr3Kh
Код:
   Section|                   Description| Start (hex)|   End (hex)|Used space
------------------------------------------------------------------------------
      data|        Initialized Data (RAM)|    3FFE8000|    3FFE8B4C|    2892
    rodata|           ReadOnly Data (RAM)|    3FFE8B4C|    3FFE8B54|       8
       bss|      Uninitialized Data (RAM)|    3FFE8B58|    3FFF1A80|   36648
      text|            Cached Code (IRAM)|    40100000|    4010A778|   42872
irom0_text|           Uncached Code (SPI)|    4020C000|    40264CAA|  363690
Total Used RAM : 39548
Free RAM : 42372
Free IRam : -10086
Код:
NodeMCU.ru 0.9.6 build 20150715  powered by Lua 5.1.4
lua: cannot open init.lua
> =node.heap()
34520
> --- "FS info"
Total : 68021 bytes
Used  : 0 bytes
Remain: 68021 bytes
 
nodemcu-firmware + rapid_loader (48k IRAM)
Привет!
Спасибо за завтрашний проект 20150715 :) сегодня 20150714.
собрался,
ESP07+25q32
При загрузке в конце выдал ошибку:
Код:
Exception: Failed to connect
../Makefile:217: recipe for target 'progr' failed
mingw32-make[1]: *** [progr] Error 1
mingw32-make[1]: Leaving directory 'D:/ESP8266_Projekt/My_Project_Start/nodemcu-firmware.ru/nodemcu-firmware/app'
D:/ESP8266_Projekt/My_Project_Start/nodemcu-firmware.ru/nodemcu-firmware/Makefile:211: recipe for target 'flash' failed
mingw32-make.exe: *** [flash] Error 2
14:05:41 Build Finished (took 34s.656ms)
но ESP запустился. :(
Код:
NodeMCU.ru 0.9.6 build 20150715  powered by Lua 5.1.4
lua: cannot open init.lua
> =node.heap()
34520
>
Total : 3441461 bytes
Used  : 1384014 bytes
Remain: 2057447 bytes

> file.format()
format done.
>
Что, это?
Сам себе ответил:
нужно на демоборде удерживать кнопку GPIO0 до конца записи.
не очень удобно, ну ладно...
а на макете c ESP07 давать еще и RESET
используете RTS для RESET?
 
Последнее редактирование:
Залил на демобоард Nodemcu v1.0
Работать не хочет:
Код:
load 0x40100000, len 156, room 16
tail 12
chksum 0xef
csum 0xef
csum err
ets_main.c
Есть предположение:
на борде не работает 4-x проводной режим записи/чтения 25Q32
у Вас он используется ?
или ADDR_FW2 = 0x0C000
у всех других 0x10000
 
Последнее редактирование:
Результат моего Тест5 FS
Код:
NodeMCU.ru 0.9.6 build 20150715  powered by Lua 5.1.4
lua: cannot open init.lua
>
----------------------------
Test5.lua       : 437 bytes
x1.txt          : 1000000 bytes
x2.txt          : 511600 bytes
----------------------------
Total file(s)   : 3
Total size      : 1512037 bytes

> r,u,t=file.fsinfo() print("Total : "..t.." bytes\r\nUsed  : "..u.." bytes\r\nRemain: "..r.." bytes\r\n") r=nil u=nil t=nil
Total : 3441461 bytes
Used  : 1525327 bytes
Remain: 1916134 bytes
не зависла, вылетела нормально.
 

CHERTS

Moderator
Команда форума
Это известно, что не в компиляторе. Но NodeMCU с SDK 0.9.6 (b1) никому не нужна, а в SDK 1.2.0 предлагаемое исправление не пойдет.

@CHERTS - совершенно не ясно, зачем в UDK ESP8266_SDK_095 и прочие старые глючные SDK, если они не используются. NodeMCU содержит все "инклуды" и "либы" в своем проекте. Зачем в маке NodeMCU стоит
SDK_BASE ?= c:/Espressif/ESP8266_SDK_095 ?
Впрочем там и так много лишнего и итого всё равно не выходит. Позже попробую дать исправления, чтобы транслировался и работал пример C:\Espressif\examples\nodemcu-firmware...
А затем, что Espressif какой нить да прикол выдаст, например такой -> http://www.esp8266.com/viewtopic.php?f=9&t=820&start=300#p23253
Прикол в том, что начиная c SDK > 1.0.1 ни один C++ пример не работает, сплошные экзепшены при старте ESP, вот для этого у меня и лежат старые SDK, поменял в Makefile переменную SDK_BASE и хоть как-то можно решить проблему.

Возможно jcmvbkbc, подскажет где собака порылась с примерами hello_world_cpp и hello_world_cpp_2, компилятор тут точно не причем, дело в SDK.
 

pvvx

Активный участник сообщества
А затем, что Espressif какой нить да прикол выдаст, например такой -> http://www.esp8266.com/viewtopic.php?f=9&t=820&start=300#p23253
Прикол в том, что начиная c SDK > 1.0.1 ни один C++ пример не работает, сплошные экзепшены при старте ESP, вот для этого у меня и лежат старые SDK, поменял в Makefile переменную SDK_BASE и хоть как-то можно решить проблему.
Но это никак не относится к примеру NodeMCU. В нем SDK_BASE вообще не используется и указания 'инклудов' для Eclipse в каталоги на C:/xxxx там у вас не верны. У неё "всё с собой" в папке проекта. Из-за этого возникают ошибки и путаница. Вызываете описание, а оно вылезает из C:/xxxx, а не из проекта.
И в чем беда, что вектора перенесли в IRAM? (это вопрос по вашей ссылке). Влиять на CИ или C++ это не может. Или ошибки в общей выбранной концепции построения make и ld.
Поменялась система WDT в SDK - это больше влияет на другие проекты, т.к. не могут это осознать, а старые решения сброса WDT через регистр не проходят. Но в последней версии SDK 1.2.0 китайцы добавили для таких системную команду отключения WDT...
Я бы на месте китайцев поставил бы "оконную" систему подтверждения WDT, когда возможность подтвердить WDT возможна только в узком промежутке времени и с высшим приоритетом, да с засылкой спец кода, который зависит от прошлого. И если пытаться влезть в не то время, то - перезагруз. Да завязал бы с другими жизненно важными процедурами системы. Иначе это не WDT, а жалкое подобие и использование возможностей чипа на 1%.
Возможно jcmvbkbc, подскажет где собака порылась с примерами hello_world_cpp и hello_world_cpp_2, компилятор тут точно не причем, дело в SDK.
Тут подсказать не могу - я C++ на ESP8266 не занимаюсь и не считаю правильным его использование при таких аппаратных ограничениях. Не люблю полумеры.
 
Последнее редактирование:

jcmvbkbc

New member
А затем, что Espressif какой нить да прикол выдаст, например такой -> http://www.esp8266.com/viewtopic.php?f=9&t=820&start=300#p23253
Прикол в том, что начиная c SDK > 1.0.1 ни один C++ пример не работает, сплошные экзепшены при старте ESP, вот для этого у меня и лежат старые SDK, поменял в Makefile переменную SDK_BASE и хоть как-то можно решить проблему.

Возможно jcmvbkbc, подскажет где собака порылась с примерами hello_world_cpp и hello_world_cpp_2, компилятор тут точно не причем, дело в SDK.
Начнём с того, что скриптов линковщика для С++ нет ни в ESP8266_SDK_101/ld ни в ESP8266_SDK_110/ld, поэтому надо бы уточнить, как люди рапортующие проблемы выполняют линковку.
Если же эти скрипты изготовить из имеющегося там файла eagle.app.v6.ld по известному рецепту, например, применяя следующий дифф:
Код:
--- eagle.app.v6.ld     2015-07-13 19:52:17.780468942 +0300
+++ eagle.app.v6.cpp.ld 2015-07-15 03:32:42.516144097 +0300
@@ -101,11 +101,14 @@
     *(.gnu.linkonce.e.*)
     *(.gnu.version_r)
     *(.eh_frame)
+    . = (. + 3) & ~ 3;
     /*  C++ constructor and destructor tables, properly ordered:  */
+    __init_array_start = ABSOLUTE(.);
     KEEP (*crtbegin.o(.ctors))
     KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
     KEEP (*(SORT(.ctors.*)))
     KEEP (*(.ctors))
+    __init_array_end = ABSOLUTE(.);
     KEEP (*crtbegin.o(.dtors))
     KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
     KEEP (*(SORT(.dtors.*)))
то у меня всё работает, и с 1.0.1 и c 1.1.0. Мммм?
 

nikolz

Well-known member
добрый день,
проблема сборки nodemcu решается просто.
Секрет в том, что используется другой загрузчик. Он есть в исходниках.
-----------------------
я сделал так :
переименовал его,
поместил в utils,
и добавил в майк следующие строки:
------------------------------------
ROOT=c:/Espressif
SPI_SIZE=4096
SDK_TOOLS = $(ROOT)/utils
ESPTOOL = C:/Python27/python.exe $(SDK_TOOLS)/esptool_4.py
-------------------------
чтобы не искали прикрепил этот файл
Всем хорошего настроения
 

Вложения

Tomahawk

New member
v2.0.7 у меня компилирует и прошивает, но потом не работает (gnu90 ставил), откатил до v2.0.6 - пришло всё в норму.
 

Tomahawk

New member
CHERTS, не поднимается AP на модуле (пример esphttpd). А на 2.0.6 точка доступа поднимается сразу в такой же ситуации.
p.s.: AP становится видимой как только прошьём blank.bin и esp_init_data_default.bin После сброса питания или ресетом точка доступа пропадает насовсем, пока снова не прошьём этими двумя файлами. Это чем-нибудь лечится?)
 
я сделал так :
переименовал его,
поместил в utils,
и добавил в майк следующие строки:
Помогло, работает.
Спасибо.

В конце записи модуля вот такая ошибка:
Код:
Exception:
File "c:/Espressif/utils/esptool_4.py", line 502, in <module>
  esp.connect()
  File "c:/Espressif/utils/esptool_4.py", line 157, in connect
  raise Exception('Failed to connect')
Exception: Failed to connect
../Makefile:211: recipe for target 'progr' failed
mingw32-make[1]: Leaving directory 'C:/Espressif/examples/nodemcu-firmware/app'
mingw32-make[1]: *** [progr] Error 1
C:/Espressif/examples/nodemcu-firmware/Makefile:205: recipe for target 'flash' failed
mingw32-make.exe: *** [flash] Error 2
10:31:10 Build Finished (took 55s.484ms)
но, прошивка запускается.
и просит GPIO0 на землю.
как убрать эти команды перезапуска.
или соединять RTS DTR.
понимаю, чистит инит.
Код:
Leaving...
C:/Python27/python.exe c:/Espressif/utils/esptool_4.py -p COM2 -b 115200 write_flash -ff 40m -fm qio -fs 32m 0x7c000 ..//bin//esp_init_data_default.bin 0x7e000 ..//bin//blank.bin
Connecting...
Erasing flash...

Writing at 0x0007c000... (100 %)
Erasing flash...

Writing at 0x0007e000... (25 %)
Writing at 0x0007e400... (50 %)
Writing at 0x0007e800... (75 %)
Writing at 0x0007ec00... (100 %)

Leaving...
mingw32-make[1]: Leaving directory 'C:/Espressif/examples/nodemcu-firmware/app'

10:36:12 Build Finished (took 54s.812ms)
 
Последнее редактирование:

CHERTS

Moderator
Команда форума
Начнём с того, что скриптов линковщика для С++ нет ни в ESP8266_SDK_101/ld ни в ESP8266_SDK_110/ld, поэтому надо бы уточнить, как люди рапортующие проблемы выполняют линковку.
Они есть в C:\Espressif\extra\ld\ и примеры hello_world_cpp и hello_world_cpp_2 и hello_world_cpp_irom используют их, но это не спасает.

P.S. Проблема с hello_world_cpp решилась путем исправления файлов из C:\Espressif\extra\ld\, @jcmvbkbc, огромное спасибо!
 
Последнее редактирование:

jcmvbkbc

New member
Они есть в C:\Espressif\extra\ld\ и примеры hello_world_cpp и hello_world_cpp_2 и hello_world_cpp_irom используют их, но это не спасает.
Эээмм... Конечно не спасает: скрипты же разные в разных версиях SDK. Примени мой патч к скрипту из ESP8266_SDK_110/ld и зацени отличия?
 

DarkSide

New member
Не могу собрать тулчейн в версии v2.0.8
При компиляции (build-xtensa-lx106-elf.sh) выдает следующую ошибку:
Код:
c:/esp8266-devkit/Espressif/dl/gcc-xtensa/build-2/xtensa-lx106-elf/libstdc++-v3/include/cstdint:78:11: error: 'uint_leas
t32_t' is already declared in this scope
   using ::uint_least32_t;
           ^
make[4]: *** [xtensa-lx106-elf/bits/stdc++.h.gch/O2ggnu++0x.gch] Error 1
make[4]: Leaving directory `/c/esp8266-devkit/Espressif/dl/gcc-xtensa/build-2/xtensa-lx106-elf/libstdc++-v3/include'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/c/esp8266-devkit/Espressif/dl/gcc-xtensa/build-2/xtensa-lx106-elf/libstdc++-v3'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/c/esp8266-devkit/Espressif/dl/gcc-xtensa/build-2/xtensa-lx106-elf/libstdc++-v3'
make[1]: *** [all-target-libstdc++-v3] Error 2
make[1]: Leaving directory `/c/esp8266-devkit/Espressif/dl/gcc-xtensa/build-2'
make: *** [all] Error 2
Как побороть?
 

jcmvbkbc

New member
Не могу собрать тулчейн в версии v2.0.8
При компиляции (build-xtensa-lx106-elf.sh) выдает следующую ошибку:
Код:
c:/esp8266-devkit/Espressif/dl/gcc-xtensa/build-2/xtensa-lx106-elf/libstdc++-v3/include/cstdint:78:11: error: 'uint_least32_t' is already declared in this scope
Как побороть?
https://raw.githubusercontent.com/j...-t-bring-extra-u-int_least32_t-into-std.patch
 

aloika

Active member
Что может быть - не собирается проект на другом (не основном моем) компьютере:

Код:
00:57:47 **** Build of configuration Default for project Web_Base ****
mingw32-make.exe -f C:/Karpesh/ESP8266/UARTCommander3/Makefile all
mingw32-make[1]: Entering directory 'C:/Karpesh/ESP8266/UARTCommander3/app'
mingw32-make[2]: Entering directory 'C:/Karpesh/ESP8266/UARTCommander3/app/main'
mingw32-make[2]: Leaving directory 'C:/Karpesh/ESP8266/UARTCommander3/app/main'
mingw32-make[2]: *** No rule to make target 'c:\espressif\xtensa-lx106-elf\lib\gcc\xtensa-lx106-elf\4.8.2\include\stdarg.h', needed by '.output/eagle/obj/wdt.o'.  Останов.
../Makefile:154: recipe for target '.subdirs' failed
mingw32-make[1]: *** [.subdirs] Error 2
mingw32-make[1]: Leaving directory 'C:/Karpesh/ESP8266/UARTCommander3/app'
C:/Karpesh/ESP8266/UARTCommander3/Makefile:154: recipe for target '.subdirs' failed
mingw32-make.exe: *** [.subdirs] Error 2

00:57:51 Build Finished (took 3s.719ms)
Подскажите, плиз, если это возможно сделать по этому логу...
 
Сверху Снизу