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

UDK: Общие разговоры

CHERTS

Moderator
Команда форума
Здесь обсуждаем общие вопросы по UDK.

Внимание: Здесь можно флудить, но не увлекайтесь.
 

pvvx

Активный участник сообщества
Как-то сравнивал размер получаемых кусков прошивки при компиляции в VirtualBox, в блуждающем пакете cсамого начала пакета от китайцев, + с версией под виндовс с “лицензией” и вашей сборкой. Всегда выходит разный размер. Сильно не вдавался, но на других версиях в сумме выходит меньше, около полкило… :)
 

Andy Korg

Moderator
Команда форума
При выполнеии install-mingw-package.bat вот это вываливается

install: patch-2.6.1-1-msys-1.0.13-bin.tar.lzma
mingw-get: *** ERROR *** package patch-2.6.1-1-msys-1.0.13-bin.tar.lzma is already installed
install: patch-2.6.1-1-msys-1.0.13-doc.tar.lzma
installing patch-2.6.1-1-msys-1.0.13-doc.tar.lzma
install: patch-2.6.1-1-msys-1.0.13-lic.tar.lzma
installing patch-2.6.1-1-msys-1.0.13-lic.tar.lzma

но примеры вроде как компилируются
 

CHERTS

Moderator
Команда форума
При выполнеии install-mingw-package.bat вот это вываливается
mingw-get: *** ERROR *** package patch-2.6.1-1-msys-1.0.13-bin.tar.lzma is already installed
Ничего страшного, это говорит о том, что пакет patch уже был установлен как одна из зависимостей ранее установленого пакета. Это можно игнорировать.
 

pvvx

Активный участник сообщества
CHERTS - Вы так и не поправили маке для проектов. Они в трансляцию включают только директории user и driver!
Придется всем ставить новую версию? :)
 

CHERTS

Moderator
Команда форума
CHERTS - Вы так и не поправили маке для проектов. Они в трансляцию включают только директории user и driver!
Придется всем ставить новую версию? :)
Каких именно проектов? В C:\Espressif\examples\ все проекты простые как угол дома и состоят из директории user и driver, исключение IoT_Demo и esphttpd
 

CHERTS

Moderator
Команда форума

pvvx

Активный участник сообщества
В IoT_Demo Makefile инсправлен,

если в нем еще что-то нужно исправить, то пиши
Там не подключены в компиляцию директории lwip, ssl, json и изменение в них не воспринимаются. Мы это уже обсуждали - не делаются библиотеки... причина в маке. Любой может это сам поправить, но изначально, после "инсталляции" вашей сборки и вашим рекомендациям -этого нет.
Рекомендую почитать https://ru.wikipedia.org/wiki/Autoconf и http://squadette.ru/autoconf-ru/autoconf-ru.html для общего развития и понимания тематики, если конечно интересно. :)

by CHERTS " Fri Dec 12, 2014 10:42 pm
I have not tested the library i2c_hd44780, I do not have this lcd.

I tested the following examples:
1wire_ds18b20
at_v0.19_on_SDKv0.9.2
at_v0.20_on_SDKv0.9.3
blinky
blinky2
esphttpd
hello_world
i2c_24xx16
sysinfo
wifi-ap-tcp-client
wifi-sniffer
wifi-sta-tcp-client
IoT_Demo там нет. Значит не тестировали?

 
Последнее редактирование:

CHERTS

Moderator
Команда форума
Там не подключены в компиляцию директории lwip, ssl, json и изменение в них не воспринимаются. Мы это уже обсуждали - не делаются библиотеки... причина в маке. Любой может это сам поправить, но изначально, после "инсталляции" вашей сборки и вашим рекомендациям -этого нет.
Да, дело там в Makefile, нужно его исправлять для сборки с открытими исходниками lwip, ssl, json. У меня не было цели проверять работоспособность IoT_Demo, тем более её работоспособность сложно проверить, т.к. в этой прошивке данные отправляются на китайский сервер. То что прошивка собирается, я проверил, а то что она корректно работает - тут уж простите, но ковыряться в чужих исходниках это гиблое дело. Большинство примеров в C:\Espressif\examples\ не мои, я их только адаптировал под сборку в моем DevKit, а вот корректно ли они работают проверить сложно, в особенности примеры работы с разными датчиками, коих у меня нет. То что 100% рабочее и я проверил Вы уже процитировали выше в моем сообщении на esp8266.com
 

pvvx

Активный участник сообщества
IoT_Demo работает. Сайт задается. Но ошибки, связанные с espconn tcp там в наличии. Так-же имеется ошибка/недочет - при запросе у сервера на ESP8266 списка wifi устройств в эфире и любой отложенной информации, он отдает её первому попавшемуся соединению :) Короче "сикретность" на высоте :)
Писатель ПО из Espressif на всё это отвечает, что используйте только одно текущее соединение и ни шагу никуда от однозадачности и поэтапному нормированному опросу....
В итоге, там работает всё что взято стороннее с опен... Т.е. если видите в заголовке си файла Espressif - удаляйте его сразу из трансляции своего ПО. Иначе ... :)

https://yadi.sk/d/pIEt5VtndQBqA - подборка для сборки всех либов из Iot_Demo (SDK 0.9.3) для данной среды компилятора.
В директориях используются Makefile из базовой версии SDK Espresif. Прошивка (команда flash) работает, но в данном проекте нет на выходе bin файлов - одни либы. При переносе базового Makefile в другой проект от Espresif, например в AT - он будет и там работать.
 
Последнее редактирование:

CHERTS

Moderator
Команда форума
https://yadi.sk/d/pIEt5VtndQBqA - подборка для сборки всех либов из Iot_Demo (SDK 0.9.3) для данной среды компилятора.
В директориях используются Makefile из базовой версии SDK Espresif. Прошивка (команда flash) работает, но в данном проекте нет на выходе bin файлов - одни либы. При переносе базового Makefile в другой проект от Espresif, например в AT - он будет и там работать.
Супер подборка, но как собрать bin файл? Я к вопросу о сборке IoT_Demo, положил я рядом с libs каталог user из IoT_Demo, получил на выходе libuser.a и кучу библиотек, а bin файл не собирается
 

pvvx

Активный участник сообщества
А надо в каталог положить. Данный "корневой маке" опрашивает все директории выше на наличие маке (и ниже - если разрешить :) ). Вписывание в него конкретных установок для текущего каталога - плохо. Это не моя идея - это перекрученный маке от Espressif.
Имеющиеся недоделки - не может работать в несколько потоков :( Да и кривоват он. Собрал в надежде, что вы доправите и причешите...
но как собрать bin файл?
Взять маке файл из папки Iot_Demo и положить в libs папку + User каталог туда-же.
Но надо исправить:
LDDIR = ../ld на LDDIR = $(SDK_BASE)/ld
и
-L../lib \ на -L$(SDK_BASE)/lib \
Или перенести эти каталоги в проект, в корневую папку.
Сделать эту опцию автоматически в маке нельзя - для каждого проекта, т.к. важна последовательность от куда и как подключатся lib-ы, если не найдены ....
AT проект аналогично - копируете в базовый коталог AT с внутренними директориями и маками от Espressif. В корневой проекта кидаете данный маке. В SDK, в lib вкладываете исправленный и переименованный LibLwip_cor.a и исправляете в AT-шном маке строку:
-llwip \ на -llwip_cor \
Компилируете и даете людям почти безглючный AT21 :)
Для улучшения в AT21 в инит вставляете:
if(espconn_tcp_get_max_con()!=5) {
espconn_tcp_set_max_con(5);
system_restart();
}
Но, убрать "перелив", когда входные данные открытого соединения по wifi идут быстрее, чем отправляет UART с espconn - увы невозможно.
espconn не предусматривает "ручное управление" размером приемного окна в tcp:
This can be used to throttle data reception (e.g. when received data is programmed to flash and data is received faster than programmed)....
Без ручного управления tcp окна данные прут от хорошего сервера за Мегобайт в секунду и остановить это возможностей у espconn нет.
 
Последнее редактирование:

CHERTS

Moderator
Команда форума

pvvx

Активный участник сообщества
Эмммм... а зачем оно в моем DevKit? Это не пример прошивки, а целый проект, у которого и свой сайт есть и репо.
А он не транслируется вашей сборкой у многих.
На httpd тоже есть "свой сайт есть и репо"
На AT и многие другие вставленные примеры - аналогично. :)
 

CHERTS

Moderator
Команда форума

pvvx

Активный участник сообщества
Но, многие указанные ранее ошибки работы с espconnтам остались:

1) Пока данные не переданы, их буфер (источник) нельзя освобождать, а он у вас в стеке! У вас это работает, по причине, что при вызове передачи данных в сокет есть место в буфере передачи к части wifiчипа, т.к. задача в данном проекте всего одна и буфера пусты.

2) При установке нового соединения не отслеживается, какой назначается локальный порт. Он может быть уже открыт или находиться в TIME_WAITстека Lwip. espconn_port() дает случайный номер порта и не сверяет с lwip. Это коверкает ваш алгоритм – получаете ошибку открытия сокета.

3) Версия espconnот SDK0.9.4 некорректно работает с отложением в TIME_WAIT(не по стандарту tcp) и в ней введен флаг - pcommon.espconn_opt == ESPCONN_REUSEADDR.

4) Ещё много по мелочи…

Инициализация модуля ESP8266 и его WiFiв данном примере не полная. Я добавил немного, но это не всё. :)
 
Сверху Снизу