UDK: Запрос/обсуждение нового функционала

CHERTS

Moderator
Команда форума
По этому и надо примеры для детей в один пакет, а среду в другой :) А счас всё в куче.
Обычная практика распространения разных DevKit указывает на то, что они распрастраняются в составе SDK+Doc+Samples. Я не вижу смысла дробить UDK на части, это усложняет его сопровождение, за которое кстате говоря мне никто не платит, пожертвования были, но очень смешные.

Но, данный UDK, рассчитан для "игры" в нажатие кнопки "компиле". Его ставят поиграть - после поиска как нажать кнопку копиляции, обычно, пишут на форумы что что-то там не компилится. На этом игра для большинства заканчивается.
Вы не правы, основная проблема не в том, что UDK кривой или плохо документирован, а в том, что им пользуются люди, которые ни разу не собирали проекты с использованием gcc и Eclipse, тем более с кросс-компиляцией.
Я занимаюсь сборкой разных проектов с кросс-компиляцией более 7 лет и знаю многие тонкости и нюансы, например мой проект http://oscam.novell.chel.ru по сборке эмулятора Oscam собирается у меня на серверах под 40 различных аппаратных платформ.

Больше вопросов по нему ни у кого нет и не встречается на форумах, да нет ни одного рабочего и сопровождаемого проекта на нем в gitхабе
Для ESP на github вообще нет серьезных проектов, кроме nodemcu, все остальное - это поделки на коленке, как правило не проверены и зачастую брошены авторами после 10 коммитов, я регулярно мониторю через поиск обновления проектов для ESP, на текущий момент у меня 72 проекта в мониторинге, 80% из них уже давно не обновлялись.

Список проектов на Github:
BH1750-Driver-ESP8266
ctrl-android-test1
ctrl-esp8266-test
ctrl-esp8266-v0.9.4
ctrl-server
ctrl-webadmin
drcom-dialer-esp8266
esp-lwip
ESP8266-button
esp8266-dht
esp8266-frankenstein
esp8266-httpd
esp8266-lpd6803
ESP8266-MQTT-config-patcher
ESP8266-MQTT-io-node
esp8266-sdk
esp8266-smartconfig
esp8266-smartlink
esp8266-sniffer
ESP8266-SSM
ESP8266-Wireless-Sensors
ESP8266Box
esp8266ircbot
esp8266_at
esp8266_easygpio
esp8266_htu21d
esp8266_i2c_24xx16
esp8266_i2c_bmp180
esp8266_i2c_driver
esp8266_i2c_driver_mod
esp8266_i2c_hd44780
esp8266_i2c_ina219
esp8266_i2c_sht21
esp8266_ili9341
esp8266_mcp23017
esp8266_mcp23017_example
esp8266_pcd8544
esp8266_pcd8544_example
esp8266_sensors
esp8266_status_display
esp8266_tpm2net_ws2812
esp8266_webserver
espeink
esphttpclient
esphttpd
EspLightNode
esploader
esptool
esptool-ck
ESPWebFramework
esp_dht22
esp_iot_rtos_sdk
esp_iot_rtos_sdk_lib
esp_mqtt
esp_mqtt_oled
ida-xtensa
ITEADLIB-ESP8266
LuaLoader
luatool
nodelua
nodemcu-firmware
nodemcu-flasher
nodemcu-modules
nodemcu-studio-csharp
nodemcu_file_util
ribanESP8266
spiffy
TSL2561
ws2812esp8266
xPL-ESP8266

ИМХО Связано это причиной отсутствия автоматического конфигуратора проекта под SDK.
Не нужен этот конфигуратор, чтобы сделать новый проект нужно минимун телодвижений, я снимал видео показывающие как создавать проект с нуля, но проще всего взять проект hello_world, переименовать папку, подправить имя в 2 файлах и импортировать в Eclipse, потом нужно исправить Makefile под свои нужны, как правило правится только список библиотек и каталогов.
Но не в этом проблема, а в том, что люди не имеют понятия как вообще происходит сборка при помощи утилиты make и что такое файл Makefile, и тем более что такое automake и autoconf и как он устроено, чтобы это знать нужно либо владеть навыками сборки программ под Linux, либо почитать основы make тут или тут а лучше почитать в первоисточнике.
 

pvvx

Активный участник сообщества
Не нужен этот конфигуратор, чтобы сделать новый проект нужно минимун телодвижений, я снимал видео показывающие как создавать проект с нуля, но проще всего взять проект hello_world, переименовать папку, подправить имя в 2 файлах и импортировать в Eclipse, потом нужно исправить Makefile под свои нужны, как правило правится только список библиотек и каталогов.
Но не в этом проблема, а в том, что люди не имеют понятия как вообще происходит сборка при помощи утилиты make и что такое файл Makefile, и тем более что такое automake и autoconf и как он устроено, чтобы это знать нужно либо владеть навыками сборки программ под Linux, либо почитать основы make тут или тут а лучше почитать в первоисточнике.
В том то и дело, что изучать makefile никто не хочет. Автоконфиг вообще не подразумевает лазание в makefile. Он есть в Eclipse (сборке eclipse-cpp-luna), но для луниха и на вашей сборке не работает. Он как раз и лезет в ld файлы, которые у вас скопированы из лицензионного IDE :)
Для ESP на github вообще нет серьезных проектов, кроме nodemcu, все остальное - это поделки на коленке, как правило не проверены и зачастую брошены авторами после 10 коммитов, я регулярно мониторю через поиск обновления проектов для ESP, на текущий момент у меня 72 проекта в мониторинге, 80% из них уже давно не обновлялись.
А всё уже - ажиотаж на ESP8266 идет к концу. А Nodemcu это и есть детская поделка - она не решает ни одной задачи, где TCP пакет не один и сообщение раздроблено на несколько пакетов...
 
Последнее редактирование:

nikolz

Well-known member
Добрый день,
CHERTS,

Вы хорошую сделали сборку.
И Вы правы, что проблема в том,
что большинство либо никогда не работало с Makefile,
либо работали очень давно(это я про себя).
--------------------------------------
Вообще-то лучшее враг хорошего.
-----------------------------------
Поэтому оставьте все как есть. Если мне что-то понадобится, я сам это исправлю.
-------------------------------------
Сегодня получил The Development Kit based on ESP8266, integates GPIO, PWM, IIC, 1-Wire and ADC all in one board.
http://nodemcu.com/index_en.html#fr_54747661d775ef1a3600009e
Буду на этом чуде отлаживать драйвера.
 

pvvx

Активный участник сообщества
Вот не трогая никаких makefile, создал проект "HelloWord" в eclipse-cpp-luna-SR2, повтыкал оции в меню компилятору и линковщику в самой eclipse.
22:11:41 **** Build of configuration Release for project Tst ****
make all
Building file: ../src/Tst.c
Invoking: Cross GCC Compiler
xtensa-lx106-elf-gcc -DICACHE_FLASH -DAT_OPEN_SRC -I"E:\ESP8266\workspace\Tst\include" -Ic:/Espressif/ESP8266_SDK/include -O2 -c -fmessage-length=0 -Wpointer-arith -Wundef -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -MMD -MP -MF"src/Tst.d" -MT"src/Tst.d" -o "src/Tst.o" "../src/Tst.c"
Finished building: ../src/Tst.c

Building target: Tst
Invoking: Cross GCC Linker
xtensa-lx106-elf-gcc -nostdlib -Lc:/Espressif/ESP8266_SDK/lib -Tc:/Espressif/ESP8266_SDK/ld/eagle.app.v6.ld -u call_user_start -Wl,-static -Wl,--no-check-sections -o "Tst" -Wl,--start-group ./src/Tst.o -lc -lgcc -lhal -lphy -lpp -lnet80211 -lwpa -lmain -llwip -Wl,--end-group
Finished building target: Tst

make --no-print-directory post-build
c:/Python27/python.exe c:/Espressif/utils/esptool.py elf2image -o E:\ESP8266\workspace\Tst\Release/ -ff 80m -fm qio -fs 4m Tst


22:11:42 Build Finished (took 1s.130ms)
Итог: на выходе имеем два bin файла для прошивки:
EclipseCppSr2.gif

Но есть беда, что автоматом вставляются опции компилятору -MMD -MP -MF"src/Tst.d" -MT"src/Tst.d", но и по умолчанию данная автоконфига заточена на компиляцию elf для gnu и луниха... Сильно не ковырял - возможно есть какая галка в меню, чтобы убрать это безобразие :)
На XDE Xtensa Xplorer так всё Ok и пример на его версию Eclipse давал в другой теме с кучей файлов (своей свалкой web) и сборкой библитек...
 
Последнее редактирование:

pvvx

Активный участник сообщества
Видео бы для новичков, было бы очень здорово.
Но там не сделать полностью - он хочет для компилятора все исходники всех упоминаний. Это требуется для создания линка к ядру, т.к. оно заточено на компиляцию приложений к линухо-подобным системам. А для ESP8266 надо допиливать автоконфиг и менющки в Eclipse... Достаточно удобно включать и выключать либы и другие опции и т.д., не лазая во всякие make... Про это и был начальный разговор, но объяснить сложно...
И в готовом не требуется видео. Достаточно будет выбрать - создать проект на "ESP8266" и всё. А далее хоть каждому си файлу в проекте меняйте опции трансляции для разных заданных конфигураций.
Наверняка всё уже есть готовое для создания таких конфигураторов в плагинах Eclipse.
Xplorer 3.0.1 слишком тяжел для этого - там задаются и мелкие подробности модификаций процессора и требует дополнительных коммерческих утилит (зато проблем с сегментами, где и как распределять RAM, кэщ, flash для каждого проекта не имеет, но сама Eclipse там старенькая и новые наворотов по самому СИ редактору там нет) ...
 
Последнее редактирование:

nikolz

Well-known member
Вот не трогая никаких makefile, создал проект "HelloWord" в eclipse-cpp-luna-SR2, повтыкал оции в меню компилятору и линковщику в самой eclipse.
Добрый день,
pvvx,
Спасибо за информацию и пример.
На чем собирать не проблема,
если проще на линуксе, то можно и на нем,
но он у меня на втором компе есть 64 bit.
-----------------------------------
Пока изучаю железо и опыт предшественников.
 

pvvx

Активный участник сообщества
На чем собирать не проблема,
если проще на линуксе, то можно и на нем,
Не - другое. Там меню и авто-создание makefiles по умолчанию рассчитано на компиляцию исполняемых файлов для лунихоподной среды и автоматом вставляются опции для создания динамической линковки типа exe и dll. Для этого нужны все описания всех внешних функций, а у SDK от Espressif по большей части хидеров просто нет и нам не требуется линковка подгружаемых файлов на ходу - у нас одна прошивка, без оверлеев и т.д. Специализация встроенного по умолчанию конфигуратора в Eclipse рассчитана на создание проектов под операционную систему, а не для блока прошивки flash к микроконтроллеру. Надо ставить или писать другой плагин.
 
Последнее редактирование:

nikolz

Well-known member
Добрый день,
Сделал следующие изменения в организации UDK, возможно будет полезно другим:
1) Вынес все драйвера периферии ESP в отдельный каталог в корень ESPressif
2) Вынес приложения типа mqtt fota spiffs в отдельный каталог в корень ESPressif
3) Makefile разделил на несколько частей.
В примерах всегда присутствует такой майк:
ROOT =../..
include $(ROOT)/Makefile.common
В Makefile.common
присутствуют такие майк
Makefile.port
Makefile.boot
Makefile.spi
Makefile.comp
Makefile.flash
Майки с расширением расположены в корне ESPressif
--------------------------
В результате просто создавать новые приложения так как их каталоги все (почти) одинаковые
Новые изменения и дополнения вносятся в соответствующий общий майк один раз для всех примеров
Нет дублирования одинаковых программ в приложениях
Легко модифицировать драйверы датчиков и приложений
Ну и т д
 
Последнее редактирование:

Victor

Administrator
Команда форума
nikolz, раз уж вы взялись за это дело, то может зависимости через автоматически генерируемые .dep файлы сделаете, чтобы при изменении любого файла исходника само все автоматически перекомпилировалось, а то сейчас нужно make clean каждый раз делать (если изменили, например, какой-нибудь .h файл). Это бы добавило немного комфорта в работе
 

pvvx

Активный участник сообщества
Интересно бы было увидеть в примерах этот проект https://github.com/SuperHouse/esp-open-rtos
А в чем его отличие от оф. RTOS? В нерабочей (устаревшей) стыковке с LwIP 1.4.1 от kadamski ? kadamski что-то не обновляет проект OpenLwIP для ESP и он стал несовместим с новыми SDK :(
Да появились разновидности RTOS библиотек. В проекте MP3 используется другие либы RTOS... Номеров они все не имеют, отличить какой новее возможности нет.
 

CHERTS

Moderator
Команда форума
Интересно бы было увидеть в примерах этот проект https://github.com/SuperHouse/esp-open-rtos
Это даже не пример, а обособленный проект, как и Sming, там не 10 строчек кода и не 50, а много больше и заточено оно быть обособленным.
Можно конечно его добавить в UDK, вот только добавить это пол беды, а поддерживать в актуальном рабочем состоянии - это другое. Сейчас вот готовится на вылет из примеров ESPWebFramework, т.к. судя по всему автор не собирается его пилить под новую FreeRTOS SDK, на ней он банально не собирается.

Я сейчас занят сборкой gcc 5.1 для UDK, сам компилятор собран, провожу тесты на разных примерах, если у кого есть желание потестировать gcc 5.1, то пишите, выложу архив.
 

Victor

Administrator
Команда форума
если у кого есть желание потестировать gcc
Если это не очень затруднительно, то вы выкладывайте - там глядишь кто-то скачает и потестит - у нас на форуме в среднем 5 человек в день регистрируется, а просматривают и того больше, но далеко не все что-то постят, а тем более просят выложить. Можно в ресурсы, например или как обычно.

А по openRTS понятно, но вы все равно попробуйте, если время позволит - может будет собираться с минимальными правками. Если нет, тогда конечно не стоит на него много времени тратить.

Мне, конечно же, сейчас наиболее интересен @pvvx PvSDK вырезанный из TCP2UART - вот было бы прикольно пересобрать примеры на нем :)
 

CHERTS

Moderator
Команда форума
Привет, CHERTS
В Вашей проекте есть пример (20150318) "nodemcu-firmware"
не планируете обновить его на 20150704
https://github.com/nodemcu/nodemcu-firmware/tags
в новом nodemcu heap =35000.
Добавить самостоятельно не получается - 59 errors.
Попробую вечером обновиться, о результате отпишусь здесь.
 

nikolz

Well-known member
хорошо бы по умолчанию отключить
1) автоматическую сборку всех проектов (приходится отключать вручную)
2) C/С+ indexer (не знаю где это отключить)
а то задолбало ждать пока проиндексирует 1500 источников и соберет три десятка примеров(хорошо еще что примеров не тысяча)
Спасибо
 

pvvx

Активный участник сообщества
хорошо бы по умолчанию отключить
1) автоматическую сборку всех проектов (приходится отключать вручную)
Нет такого, после установки.
2) C/С+ indexer (не знаю где это отключить)
Нормально работает. Обновите комп с SSD и ждать не придется.
 
Сверху Снизу