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

Sming Open Source Framework для нативной разработки прошивок ESP8266

JustACat

Moderator
Команда форума
@anakod, ах да, и еще одно. Мы тут с @CHERTS обсуждали систему завязывания библиотек в ваших примерах.
Правильно ли я понимаю, что у вас при компиляции любого примера, пусть даже Basic_Blink в итоговую прошивку попадает все то добро, что у вас в Sming есть?
То есть, например, я в Basic_Blink (понятное дело) работу с WiFi не использую, UART не использую, общение с DS18B20 не использую - но в прошивку оно все равно попадает?

Если так, то может все таки имеет смысл как-то от этого избавиться? В той же Ардуине к прошивке обычно прикрепляется лишь то, что реально используется в коде приложения.
Чаще всего это делается через #include в начале основного файла программы только нужных пользователю библиотек.
Единнтвенное, что у них инклудится автоматом: это всякие внутренние вещи, к которым даже Serial (UART) относится (как мне кажется) с большой натяжкой. Хотя, емнип, если в самом коде ты работу с Serial не используешь, то и размер прошивки итоговый становится меньше. Значит как-то это все же обрабатывается на этапе компиляции.

Если я тут полный бред пишу, который к нашему случаю (ESP) никак не применим, вы уж меня простите и не тратьте время :) Просто хочется разобраться, пусть и не сразу :) Спасибо!
 

Sermus

New member
Блин, если такую штуку да еще довести до полного вида Ардуино
Сделано, прямо в Arduino IDE собирается и прошивается. http://sermus.github.io/ESP8266_ArduinoIDE/
Драфтовая версия, сильно не пинать. С конструктивными замечаниями и предложениями - велком.

Anakod, респект Вам и уважуха за инфраструктурный код. Нам бы с Вами как-то скооперироваться, чтобы два раза одну работу не делать. Я воспользовался Вашей работой, но что-то пришлось подпилить, а что-то выпилить.

Еще надо упомянуть, что в моей билдовой процедуре:
1) А ВЕСЬ код идет в ROM, а не только тот, что помечен ICACHE_FLASH_ATTR
2) В конечном ELF-файле остается только то, что используется, неиспользуемый код выковыривается линковщиком.

В составе два примера - блинк и неправильный ))). Блинк и HttpServer_Bootstrap.ino, но второй я не успел попробовать за катастрофической нехваткой времени.
 

anakod

Moderator
Команда форума
Нам бы с Вами как-то скооперироваться, чтобы два раза одну работу не делать. Я воспользовался Вашей работой, но что-то пришлось подпилить, а что-то выпилить.
Мне кажется что простая IDE - это именно то что нужно неопытным пользователям, поэтому это направление очень верное.

Но я, к примеру, не хочу переходить с Эклипса на Арудино IDE, поэтому скооперироваться я за, но в этом случае надо поддерживать двухстороннюю совместимость (чтобы Sming собирался и работал как под Вашей сборкой так и в UDK).

А что касается Pull-request'ов - их я всегда рад принять, причем как по багам так и по любым доработкам\усовершенствованиям на Ваше усмотрение. Единственное просьба учитывать стиль кода\именовки.

А ВЕСЬ код идет в ROM, а не только тот, что помечен ICACHE_FLASH_ATTR
Точно ли весь? Дело в том что некоторый код нельзя класть в ROM (тот что может быть вызван из прерываний, системный и т.д.). Что касается того что по умолчанию кладем в флеш - да, у меня тоже именно так. Т.е. логика атрибутов инвертирована и помечается RAM код.

Правильно ли я понимаю, что у вас при компиляции любого примера, пусть даже Basic_Blink в итоговую прошивку попадает все то добро, что у вас в Sming есть?
Да, но разве кому-нибудь жалко, когда там еще 200 с лишним кило свободными остаются? А памяти это ни капли не занимает (RAM). Мне кажется тут можно предусмотреть более аккуратное решение, но острой необходимости нет.

Вышел Sming v1.1
* Доработан FTP, теперь он вполне закрывает тут круг задач, ради которого он создавался
* Исправлена ошибка со скачиванием файлов с удаленного сервера (моя вина, недоглядел :()
+ API для изменения частоты процессора, спасибо alonewolfx2 за пуллреквест
+ API для deep-sleep (пока никто не тестировал), опять же спасибо alonewolfx2

У кого сервер при старте не подтягивал файлы, проверьте пожалуйста, новую версию и отпишитесь все ли ок? Буду крайне благодарен.

P.S. Скоро будет MQTT!
 

JustACat

Moderator
Команда форума
Sermus и anakod, ребята! У меня слов нет :) В хорошем смысле! Главное - только не бросайте! И да, если действительно выйдет скооперировать ваши проекты, то синергия, уверен, будет адовая!
Да, но разве кому-нибудь жалко, когда там еще 200 с лишним кило свободными остаются?
Ну, как по мне это все таки как-то неправильно, что ли... По крайней мере об этом стоит упомянуть явно в доках.
И еще одно: а если меньше занимать прошивка будет, ведь она же будет быстрее шиться и флеш будет меньше тереться? Быстрее шиться - это вот прям очень на самом деле важно, когда приложение отлаживаешь.
Если у нас, к примеру, прошивка 4 кило, то и шить нужно 4 кило, а если каждый раз шить 200 (цифры от балды), то это и дольше и хуже для flash, имхо...
В остальном - не принципиально конечно. А есть в этом какие-то преимущества? Ну, в том, что оно все разом в прошивку попадает?

А да, еще один такой, имхо, минус: у человека меньше понимания, что и откуда берется. Это не всегда хорошо. То есть он пишет код, и не понимает, откуда взялось то или иное в нем. А потом если вдруг в новых версиях что-то будет выпилено, человек будет оооочень долго искать, откуда оно раньше бралось, так как он сам ни разу не подключал это в код инклюдами...

Sermus, мне кажется, вам нужно создать свою отдельную тему (или даже несколько) рядом тут в этом же разделе, и оформить туда пока то, что есть. Чтобы не попадало все в одну солянку.

PS: пока больше не напишу, времени нету сейчас особо...

PS2: anakod, вот только что запостил тут тест энергопотребления на Sming с HTTP сервером.
 

Sermus

New member
Но я, к примеру, не хочу переходить с Эклипса на Арудино IDE
Да, серьезного программирования в Arduino IDE, конечно, не может получиться. Но с возможностью строить код для ESP8266 в ArduinoIDE приходят возможности типа программирования под нее в VisualStudio, который IMHO гораздо удобнее, чем Eclipse. О популяризации ESP я вообще молчу. Зря что ли ESP подключают к Ардуинам вместо того, чтобы программировать его напрямую? Высокий порог входимости в программирование ESP не в последнюю очередь обусловлен именно сложностью текущего набора инструментов для рядового гика малой автоматизации.

Если у нас, к примеру, прошивка 4 кило, то и шить нужно 4 кило, а если каждый раз шить 200 (цифры от балды), то это и дольше и хуже для flash, имхо...
Несколько разочарую Вас, но, во-первых, основную часть прошиваемого кода составляет содержимое либ из SDK. Так что даже если вы соберете пустой пример, там будет 180КБ. По поводу износа флеша. Какая разница сколько вы шьете - 4КБ или 1000КБ? Первые 4КБ все равно изнашиваются и после того как они полетят, Вы больше не прошьете нисколько.
 

aloika

Active member
У кого сервер при старте не подтягивал файлы, проверьте пожалуйста, новую версию и отпишитесь все ли ок? Буду крайне благодарен.
У меня так и не грузится...

Такой вопрос - если в браузере написать http://simple.anakod.ru/templates/index.html - оно и в браузер не грузится. Это так и должно быть? И с другими двумя файлами та же история.

UPD: заработало. Нужно было сделать spiffs_format(); . Видимо, что-то с файловой системой было.
 
Последнее редактирование:

JustACat

Moderator
Команда форума
Но с возможностью строить код для ESP8266 в ArduinoIDE приходят возможности типа программирования под нее в VisualStudio
Вот и я об том же :) Мысли про Arduino очень верные. Я и под Arduino, кстати, пишу не в Arduino IDE - нафиг-нафиг :) Ставлю в нем галочку - "Использовать внешний редактор" и программирую в своем любимом Notepad++, а в Ардуине лишь прошиваю, смотрю ошибки, если есть, иногда пользуюсь встроенным терминалом.
В общем, подписываюсь практически под каждым вашим словом в этом смысле :)

Несколько разочарую Вас, но, во-первых, основную часть прошиваемого кода составляет содержимое либ из SDK.
Что ж, этого я и боялся, тогда особо без разницы конечно. Единственное что может скорости все таки чуть быстрее? Хотя, если 180 кило либ, то остальное - уже копейки.

если в браузере написать http://simple.anakod.ru/templates/index.html - оно и в браузер не грузится.
У меня грузится. Делаю вывод: у вас до simple.anakod.ru из домашней сети плохой контакт, и, возможно, так совпало, что и при первой попытке загрузить как раз он был плохой. Ну а дальше ошибка осталась, пока вы все не форматнули. Неудачное стечение обстоятельств.
 

anakod

Moderator
Команда форума
Что ж, этого я и боялся, тогда особо без разницы конечно
Подтверждаю, всю основную часть объема занимают SDKшные либы, которые ни порезать ни разобрать (по крайней мере пока).

Вышла новая версия Sming
  • Добавлена поддержка специальной FTP команды "fsformat" - для быстрой и полной очистки файловой системы
  • Исправлены найденные ошибки FTP
  • Исправлена ошибка, которая приводила к тому, что если при первой загрузки с сервера файл не прошел, потом он уже не может скачаться до полного форматирования
Последняя ошибка - это проблема spifFS a не моей части, но вроде бы удалось найти работающий обходной путь.
Чтобы выполнять произвольные команды на FTP соединении, используйте менеджер который это умеет, например Total Commander.

Просьба ко всем отписываться по результатам тестирования.
 

shaman1010

Member
Просьба ко всем отписываться по результатам тестирования.
Не считая того, что при компиляции ругается на system_get_cpu_freq (пока в system.cpp подставляем в лоб: return eCF_80MHz)

В WinSCP наблюдается странное поведение. Скидываю через него на FTP файл, размером 59 623 байт. В WinSCP светится размер 8760 байт. Скидываю этот файл обратно, сравниваю с исходным - идентичны. Нажимаю "обновить" в WinSCP - вижу нормальный размер. Думал показалось, Перекомпилил (пробовал частоту 160), перешил модуль. Повторяю действия - аналогично размер файла отфанарный, но меньше оригинального. Обновление - исправляет размер. Модуль подвис. Повторяю с перепрошивкой на 80МГц - опять неверный размер и подвисание. fsformat иногда удаляет все, иногда только мой добавленный файл. Рапортует всегда 200 File system successfully formated.

Перепрошился at-шной однофайловой с бутом 1.3b, затем опять ftp-сервером.

Первый раз файл залился на FTP, обратно вытягиваться не захотел. fsformat удалил инфу на диске, но после перезагрузки модуля - два тестовых файла на месте. Просто их удалил, обновился - файлов нет. Перезагрузил модуль - опять есть и читаются.

И еще... это все на 128-й флеши. Как получить доступ к оставшимся 15,5МБ?
 
Последнее редактирование:

anakod

Moderator
Команда форума
Тут речь не о том, как сделать красиво. Речь о том, как взаимодействовать из странички с модулем. Например, лично меня очень интересует вопрос, на который я пока не могу найти ответ - а можно как-нибудь отображать, например, значение переменной (допустим, состояние входа) на страничке динамически, т.е. если состояние входа изменится, чтобы сразу же изменилось и значение в веб-интерфейсе (без перезагрузки странички).
Просили? Получайте :)

Вышла новая версия Sming
+ AJAX Server Example. Dynamic processing user commands in realtime!

400 миллисекунд. И это, я думаю, еще далеко не предел, если вдруг кому-то потребуется быстрее.
 

ToteMeiSter

New member
anakod, подкорректируй в шапке
"
  • Написано на базе Espressif SDK v0.9.5
"
Или там просто под спойлером вести измы.
 

shaman1010

Member
Просили? Получайте :)
Похоже что-то в DHCP-запросе поломалось.
Собрал, прошил - мой DHCP сервер ругается на запрос, и не лизит его.
Соответственно, нет IP - нет серверов :)

Topics - dhcp warning
Message default offering lease 192.168.1.15 for 18:FE:34:A0:8C:53 without success
 
Последнее редактирование:

aloika

Active member
Вышла новая версия Sming
+ AJAX Server Example. Dynamic processing user commands in realtime!
Спасибо огромное, это очень полезный для меня пример! Надо разбираться, просто совсем новая для меня тема...
Скомпилировал, прошил - все работает, красота.
 

shaman1010

Member
SDK 1.0.0 http://bbs.espressif.com/viewtopic.php?f=5&t=286
Known issues:
1. DHCP client may get wrong IP address
2. Lib c string issue
3. wifi_station_get_connect_status won‘t change immediately.
Скорее всего. Просто почему возник вопрос - HttpServer_Bootstrap получает IP, а HttpServer_AJAX нет. Собственно можно попытаться определить, где бочинит, и как обходить грабли с SDK.
Сейчас прошил HttpServer_Bootstrap, получил IP и прошил HttpServer_AJAX. Аякс отозвался. Файлы из папки web заливаю (то одну, то другую) - ни в одном случае не вижу даже отданную модулем частоту. У меня flash - 128я.
 
Сверху Снизу