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

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

CHERTS

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

- Старайтесь быть краткими и четко формулировать мысль.
- Опишите, что вы делали, когда обнаружили ошибку.
- Приложите по возможности логи/скриншоты (под Спойлер), куски кода (под Спойлер и в тег Код).

Внимание: Оффтоп будет удаляться, пожалуйста, придерживайтесь темы! Спасибо!
 

Alex

Member
Не компиляться примеры IOT Demo. В новом SDK нет в инклюдах version.h
В чем отличие IOT Demo от IOT Demo_New?
 

amatron

New member
Доступна новая версия моей сборки Espressif DevKit for Windows v1.0.4
Список изменений на первой странице

Процедура обновления:
1. Удалите старую версию DevKit
2. Установите новую версию DevKit
ВНИМАНИЕ!!! При удалении старой версии будет удален весь каталог C:\Espressif
После установки DevKit не компилируется RTOS. После копирования файлов http://bbs.espressif.com/download/file.php?id=103 в каталог C:\Espressif\xtensa-lx106-elf\lib\gcc\xtensa-lx106-elf\4.8.2\include\xtensa все заработало!
 

CHERTS

Moderator
Команда форума
Не компиляться примеры IOT Demo. В новом SDK нет в инклюдах version.h
В чем отличие IOT Demo от IOT Demo_New?
На самом деле вкралась ошибка с примерами IoT_Demo, в 1.0.5 все поправлю, а пока вот архив с исправленными (каталоги IOT Demo и IOT Demo_New нужно удалить).
В архиве 2 каталога, IOT_Demo от IOT_Demo_Mod:
IOT_Demo - это полный IOT_Demo из SDK, все один в один.
IOT_Demo_Mod - урезаный вариант IOT_Demo из SDK, из него удалены исходники библиотек json, upgrade, lwip и ssl и используются уже заранее собранные библиотеки из SDK, это сделано для облегчения понимания процесса сборки и разработки.

http://rghost.ru/59979768
 

CHERTS

Moderator
Команда форума
После установки DevKit не компилируется RTOS. После копирования файлов http://bbs.espressif.com/download/file.php?id=103 в каталог C:\Espressif\xtensa-lx106-elf\lib\gcc\xtensa-lx106-elf\4.8.2\include\xtensa все заработало!
В DevKit есть C:\Espressif\examples\esp_iot_rtos_sdk\ - это и есть оригинальный RTOS, он компилируется без проблем, но не работает по причине кривости реализации - привет Espressif, тут уж без претензий ко мне.
 

Alex

Member
Спасибо за оперативность. Будем изучать на выходных. Мне бы чего нибудь почитать про WiFi сети изнутри так сказать. Что бы хоть иметь общее представление. Что с чем едят. А то сложно разбираться не понимая что к чему.
По поводу RTOS у меня тоже все компилируется.
 

amatron

New member
В DevKit есть C:\Espressif\examples\esp_iot_rtos_sdk\ - это и есть оригинальный RTOS, он компилируется без проблем, но не работает по причине кривости реализации - привет Espressif, тут уж без претензий ко мне.
Проверил на win8.1 64bit. Компилируется в 32 битной версии . В 64 битной у меня не компилируется. Ну это так, к сведению...
 
Почему то не хочет компилироваться пример EspWebFramework.
Выдает вот этот лог ошибки:

c:/espressif/xtensa-lx106-elf/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: build/app.out section `.text' will not fit in region `iram1_0_seg'
collect2.exe: error: ld returned 1 exit status
C:/Espressif/examples/ESPWebFramework/Makefile:189: recipe for target 'build/app.out' failed
mingw32-make.exe: *** [build/app.out] Error 1
 

JustACat

Moderator
Команда форума
Климатехник, судя по ошибке - не влазит прошивка во flash (конкретная секция в конкретную область). Нужно разбираться...
 

pvvx

Активный участник сообщества
Климатехник, судя по ошибке - не влазит прошивка во flash (конкретная секция в конкретную область). Нужно разбираться...
Не влазит в IRAM - там коду на 35 килобайт хочет. С моей libgcc.a - влазит.
Код:
------------------------------------------------------------------------------
Section info:
   Section|                   Description| Start (hex)|   End (hex)|Used space
------------------------------------------------------------------------------
      data|        Initialized Data (RAM)|    3FFE8000|    3FFE87CC|    1996
    rodata|           ReadOnly Data (RAM)|    3FFE87D0|    3FFE9EBC|    5868
       bss|      Uninitialized Data (RAM)|    3FFE9EC0|    3FFF2E30|   36720
      text|            Cached Code (IRAM)|    40100000|    40106F50|   28496
irom0_text|           Uncached Code (SPI)|    40240000|    40273EF4|  212724
Total Used RAM : 44584
Free RAM : 37336
Free IRam : 4290
------------------------------------------------------------------------------
Но всё равно там не работает
ESP Console:
help : Show this help
reboot [ms] : Restart system in [ms] milliseconds
restore : Erase Flash stored settings
free : Display amount of free and used memory
ifconfig : Display network info
iwlist [scan] : Display or scan for available wireless networks
И сам web :)
Что вы хотели от C++? Это пожиратель памяти.
 

pvvx

Активный участник сообщества
Пожиратель памяти это оффициальный SDK ;)
Ну а куда в данном примере делась память?
Пример esp_rtos_sdk_example тоже никак не оптимизирован, RAM констант масса (rodata), bss загажен, но память то жрет меньше:
Total Used RAM : 44184
Free RAM : 37736
Free IRam : 7349
Это всё в EspWebFramework C++ отжирает :p
 

anakod

Moderator
Команда форума
Предполагаю что сам EspWebFramework и занимает некоторый объем, а так конечно нужно это тестировать чтобы делать какие-нибудь объективные выводы, думаю что холивары устраивать бессмысленно :)
 

anakod

Moderator
Команда форума
IOT_Demo_Mod - урезаный вариант IOT_Demo из SDK, из него удалены исходники библиотек json, upgrade, lwip и ssl и используются уже заранее собранные библиотеки из SDK, это сделано для облегчения понимания процесса сборки и разработки.
По-моему от такого "облегчения понимания" куда больше вреда чем пользы :)
А LWIP разве еще выпускается Espressif в опенсурсе? Мне казалось что с некоторого времени они его тоже закрыли. Или это только та версия (из 0.9.4 если не ошибаюсь)?
 

pvvx

Активный участник сообщества
Предполагаю что сам EspWebFramework и занимает некоторый объем, а так конечно нужно это тестировать чтобы делать какие-нибудь объективные выводы, думаю что холивары устраивать бессмысленно :)
Да занимает, именно плюс-плю-сом от СИ. А так по объему используемой памяти, распределенной транслятором (!), без alloc от С++ при run-time, примеры примерно одинаковы. :) При рунтайм безусловно выиграет СИ.
А LWIP разве еще выпускается Espressif в опенсурсе?
Нет. В RTOS он пикреплен как third_party - в качестве "отмазки", а либа Lwip собрана из другого :) Китайцы...

Ну и самый главный вопрос тут в том, а зачем вам Lwip на текущее состояние именно с исходниками?

Сравнение странслированного Lwip из старых сорцов от 0.9.4 показывает, что “обгрызанныя” либа у Espressif из Lwip.a занимает меньше памяти, чем сильно оптимизированные те-же куски из имеющихся исходников, странслированные компилятором из UDK.

Различие есть в IRAM– ковыряя исходники Lwip, можно перенести из IRAM в Flash всего пару коротких процедур:

static void tcp_output_segment(struct tcp_seg *seg, struct tcp_pcb *pcb);

static err_t tcp_close_shutdown(struct tcp_pcb *pcb, u8_t rst_on_unacked_data)файл: tcp.c

Китайцы забыли поставить у них ICACHE_FLASH_ATTR, т.к. расставляли атрибуты в *.h, а эти процедуры static:)

Но и это не поможет вам уменьшить итого, по сравнению с копиляторм у Espressif от xtensa. Вы бьетесь не с той задачей. Задача в начальном уровне - запустить свой SDK с WiFi, а прикрутить LwiP - дело десятое.
PS: Пока нет всех исходников - "обгрызайте" Lwip.a от Espressif. Он пока нормальный и сильных глюков нет.
 
Последнее редактирование:

pvvx

Активный участник сообщества
@anakod Вы боретесь не стой задачей - необходима своя SDK с WiFi, а прикручивание Lwip - дело десятое.
 

Victor

Administrator
Команда форума
1. Не настроены зависимости в примере [inline]esp_mqqt[/inline].
Вношу изменения в [inline]user_config.h[/inline], сохраняю, выбираю цель [inline]all[/inline]
Код:
20:57:08 **** Build of configuration Default for project esp_mqtt ****
mingw32-make.exe -f C:/Espressif/examples/esp_mqtt/Makefile all
mingw32-make.exe: Nothing to be done for 'all'.

20:57:09 Build Finished (took 236ms)
2. Использую 4 мегабайтную флеш c esp_mqqt, в makefile [inline]SPI_SIZE?=4096[/inline]
вношу изменения в [inline]user_config.h[/inline], собираю, прошиваю, но чип стартует и настройки берутся предыдущие из флеш, [inline]ICACHE_FLASH_ATTR[/inline] даже если предварительно сделать [inline]flashinit[/inline].
Я так понимаю, что не затирается 16k user_data
 

CHERTS

Moderator
Команда форума
. Не настроены зависимости в примере esp_mqqt.
Вношу изменения в user_config.h, сохраняю, выбираю цель all
Если прошивка была уже собрана, то при изменении *.h файлов нужно делать clean + all или их эквивалент rebuild

2. Использую 4 мегабайтную флеш c esp_mqqt, в makefile SPI_SIZE?=4096
вношу изменения в user_config.h, собираю, прошиваю, но чип стартует и настройки берутся предыдущие из флеш, ICACHE_FLASH_ATTR даже если предварительно сделать flashinit.
makefile с указанием SPI_SIZE?=4096 и user_config.h никак не связаны между собой, в плане зависимости параметров флэш.

параметры SPI_SIZE, SPI_SPEED и SPI_MODE используются в Makefile при сборке прошивки и при непосредственной прошивки ESP, но следует знать, что после изменения любого параметра SPI_* в Makefile нужно делать clean + all или их эквивалент rebuild (если каждый раз clean не хочется делать, например в прошивке nodemcu сборка идет достаточно долго, то достаточно удалить файл build\app.out и выполнить all) и произойдет пересоздание файлов в папке firmware с уже новыми параметрами SPI_*
 

pvvx

Активный участник сообщества
параметры SPI_SIZE, SPI_SPEED и SPI_MODE используются в Makefile при сборке прошивки и при непосредственной прошивки ESP, но следует знать, что после изменения любого параметра SPI_* в Makefile нужно делать clean + all или их эквивалент rebuild (если каждый раз clean не хочется делать, например в прошивке nodemcu сборка идет достаточно долго, то достаточно удалить файл build\app.out и выполнить all) и произойдет пересоздание файлов в папке firmware с уже новыми параметрами SPI_*
$(ESPTOOL) -p $(ESPPORT) -b $(ESPBAUD) write_flash $(flashimageoptions) 0x79000 $(SDK_BASE)/bin/clear_eep.bin 0x7c000 $(SDK_BASE)/bin/esp_init_data_default.bin 0x7e000 $(SDK_BASE)/bin/blank.bin
Не туда шьются и нет зависимостей для конфигов.
И это "0x79000 $(SDK_BASE)/bin/clear_eep.bin" лишнее - эта область вроде только в моей Web "свалке" используется как эмуляция EEPROM с увеличенным кол-вом циклов перезаписи мелких объектов сохраняемых по заданным им ID (Web_Base\app\web\flash_eep.c) ...
 
Последнее редактирование:
Сверху Снизу