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

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

anakod

Moderator
Команда форума
Благодаря нашему уважаемому сообществу и в особенности, Дмитрию Кирееву, у Sming наконец появилась полноценная система автоматической инсталяции и сборки.

1. Full installation
It will install:
- Java Runtime 8
- Eclipse C/C++
- Unofficial Espressif Development Kit for Windows
- Sming

Install Chocolatey first:

- Run Command line (type 'cmd' in start menu) in Administration mode, and paste:
Код:
@powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin
- Then install full development package
Код:
choco install sming -source 'https://www.myget.org/F/kireevco-chocolatey/'
2. Only Sming code instalation
If you already have Eclipse and SDK just run:
Код:
choco install sming.core -source 'https://www.myget.org/F/kireevco-chocolatey/'
---
Просьба отписываться по результатам тестирования. Заранее спасибо!
 

anakod

Moderator
Команда форума
Добавлена поддержка MQTT
Первый комит.

Для гарантии полной совместимости с протоколом, за основу взята популярная библиотека libemqtt, при этом программный интерфейс выполнен в с соответствии со стандартным стилем Sming.
Текущее тестирование проводилось на http://test.mosquitto.org
 

JustACat

Moderator
Команда форума
anakod, имхо, очень не хватает кнопочки Donate в теме... Либо по ссылке на гитхабе... Я уже дважды порывался поддержать (немножко конечно, но чем богаты), а кнопочки не нашел...
 

anakod

Moderator
Команда форума
anakod, имхо, очень не хватает кнопочки Donate в теме... Либо по ссылке на гитхабе... Я уже дважды порывался поддержать (немножко конечно, но чем богаты), а кнопочки не нашел...
Пожалуйста, обновил первый пост. :) Я премного благодарен любой поддержке, т.к. Sming это по меньшей мере два месяца бессонных ночей, и всегда приятно кода работу оценивают её конечные пользователи.
 
Последнее редактирование модератором:

anakod

Moderator
Команда форума
Завершена работа над протоколом MQTT.
Релизная версия в репозитории. Буду рад вашему фидбеку.

Добавлена полная очистка файловой системы (примерно как fsformat) по цели Make файла "flashinit". Для использования достаточно кликнуть цель в Eclipse. Настоятельно рекомендуется делать это каждый раз при переходе от одного проекта к другому (если они используют файлы).
 

JustACat

Moderator
Команда форума
Внимание ВСЕМ!
Еще раз отмечу по поводу запросов по Sming. Пожалуйста, пишите в соответствующие темы:
- запрос примеров сюда
- запрос библиотек сюда
- общие глюки/баги и т.п. сюда
- ошибки в примерах сюда
Любой вопрос, подпадающий под эти 4-ре раздела, размещенный в данной общей теме - мною будет нещадно удаляться (не буду дальше за вас переносить). Потом не говорите, что не предупреждал... Надеюсь на понимание...

PS: последнюю страницу темы почистил (перенес/удалил), на остальные меня пока не хватило...
 
Последнее редактирование модератором:

pvvx

Активный участник сообщества
anakod - с deep-sleep что намечается? А то я затеял новый libmain.a, а там старт уже переписываю на свой лад. При просыпании из deep-sleep часто нет смысла стартовать весь SDK для опроса датчиков, что ну очень сильно уменьшает общее потребление. Так-же возможно (уже) вписывание (расширение) в esp_init_data_default.bin настроек пинов по умолчанию (отказ от вывода отладки в UART, их скорость по умолчанию и многое другое). Исходники измененной либы будут, но позже (надо доразобрать, дописать и выдумать названия полям задействованных структур в SDK у Espressif - кто-бы в этом оказал помощь?).
 

anakod

Moderator
Команда форума
А то я затеял новый libmain.a, а там старт уже переписываю на свой лад.
Мне так же очень интересно это направление, я хотел бы в перспективе видеть полностью открытый SDK. Готов поучаствовать в этой работе и помочь всем чем смогу (но сразу предупреждаю что опыта диасеблинга конкретно под микроконтролеры у меня нет). А в части разработки нового (замещающего) функционала - вообще вопросов нет.

Можем завести отдельный репозиторий на гитхабе под это направление, чтобы больше людей могло участвовать в процессе, т.к. работа очень большая и в одиночку ее сделать почти не реально. Т.е. это будет уже не текущая веб свалка а некоторая коллекция фрагментов СДК в которых все большая и большая часть будет замещаться переписанным очищенным и открытым кодом. У Вас, как я понимаю, уже есть для этого существенный базис + у нас есть ESP OPEN LWIP для сетевой части, на мой взгляд он сделан достаточно неплохо.

Так же на днях я запустил новый проект, цель он преследует ту же самую, правда реализация практически обратная - пока это задействование возможностей SDK :)
https://github.com/anakod/esp_microc
В нем я пытаюсь максимально избавиться от дублирования кода и при этом иметь весь основной функционал стандартной библиотеки Си.
 

anakod

Moderator
Команда форума
pvvx, извиняюсь за долгий ответ, хотел перед продолжением обсуждения изучить декомпилированные исходники. Это Очень крутая работа, спасибо! Учитывая что libnet80211 - опенсурс (с вероятно небольшими и глупыми изменениями эспресовцов), то как мне кажется, есть вполне реальный шанс полностью выпилить лишний бредокод китайцев и сделать весь стек ESP открытым от начала до конца и кастомизируемым под конкретный проект.

А на гитхабе пока никакой толпы ни в одном проекте на ESP8266 не наблюдаю.
Вы зря недооцениваете гитхаб, толпа, конечно же, не появится, но если развивать проект, писать о нем, то люди начнут участвовать и помогать с релизацией. К примеру, в Sming сейчас уже 5 сторонних контрибьютеров, и даже не смотря на то что многие внесли небольшой вклад (за что им большое-прибольшое спасибо), суммарно это дает существенное ускорение работы и, конечно, огромную помощь в тестировании и выявлении багов. С другой стороны гитхаб это очень хорошая площадка для совместной работы. Например если я сейчас включусь и декомпилирую\отрефакторю какой-нибудь модуль, мне его даже Вам никак не передать, не по почте же мы будем исходниками обмениваться (конфликты и т.п.). В вопросах освещения проекта, привлечении публики и т.д. я готов активно участвовать. Уверен эта тема быстро соберет комунити если объяснить сколько выгод мы можем получить в конечном итоге (это даже еще без учета самых продвинутых вариантов типа динамического загрузчика модулей и т.п.).

Чем больше "реверсируется", тем больше будет отличий и так проще - нет никакого смысла городить то, что вышло у Espressif.
Изначально был не согласен с этой мыслью, но теперь после изучения декомпилированных исходников, пожалуй соглашусь :D

А народ в таком деле только помеха. Они будут требовать слепить такую-же как..шку, как и у Espressif, но c "перламутровыми пуговицами"
Народ может только предлагать (и подсказывать что наиболее важно\популярно), а решать что делать - только автору. Поэтому публика точно не повредит.

Мое видение возможной концепции проекта:
  • Микроядро - самый базовый необходимый функционал типа инициализации чипа, флеш, сетевого оборудования(?) и т.д. Никакого бредокода, пользовательского кода и фич
  • Системный API - инструментарий для взаимодействия с ESP типа режимов сна, работы с переферией, wdt и т.д.
  • Сеть и все что с ней связанно - LWIP и прочее.
  • Обертки, эмулирующие стандартный Esspressif SDK на базе предыдущих трех элементов - самый бесполезный блок, думаю можно с чистой совестью выбросить :)
В каждом слое только то что нужно, никаких "а давайте мы тут еще будем все это дело в файл сохранять, почему бы и нет" и "возьмем все вместе и смешаем в одну кучу" - любимых подходов китайцев. Мне кажется так можно получить очень гибкую и мощную ситему, да и из чипа выжать полный максимум, потому что он сейчас сильно недооценен и ограничен, причем во многом это заслуга китайских "разработчиков".
 

anakod

Moderator
Команда форума
Новая версия Sming
  • Добавлен UDP и пример его использования
  • Автоматическое стирание старой файловой системы при загрузке прошивки (должно решить все проблемы со старыми файлами)
  • Библиотека WS2812 RGB LED (спасибо markusgritsch!)
  • Другие небольшие но вкусные плюшки :)
 

pvvx

Активный участник сообщества
хотел перед продолжением обсуждения изучить декомпилированные исходники.
Они меняются каждый день. Выкладываю только промежуточные варианты в WEB "свалке". И то там только часть адаптированная к "свалке".
Мое видение возможной концепции проекта:
В том-то и дело, что путей очень много и разбирать полностью "галиматью" от китайцев не требуется. По этому создать общий гитхаб никак, только в случае полного разбора SDK со всеми глупостями - он один будет однозначен - все другие будут иметь отличия под конкретную "заточку".
Пример направления для модуля и датчиков описал тут: http://esp8266.ru/forum/threads/raz...go-webservera-na-esp8266.56/page-24#post-5187
На первое я уже говорил - необходимо сделать описание всех заголовков для ROM-BIOS (eagle.rom.addr.v6.ld) и аппаратуры отдельно от SDK. Я уже начал это, но выложена только часть. Пример прилеплен.
Этот разговор пора переносить в тему
'Реверс' SDK Espressif и ROM-BIOS для создания открытого SDK.
 

Вложения

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

anakod

Moderator
Команда форума
Добавлена поддержка OTA (Cloud update)
Теперь обновлять прошивку можно по воздуху вызовом нескольких строчек кода.
Пример: Basic_AirUpdate

---
Китайские программисты местами просто убивают. В SDK 1.0 они вставили вызов system_get_time в функцию spi_flash_erase_sector. Казалось бы причем тут системное время в низкоуровневой функции работы с флеш? Ну даже просто с точки зрения любой хотя бы немного разумной логики. Но самое страшное не это, главный бонус таиться в том, что system_get_time лежит в iram и благодаря этому, мы полностью теряем возможность писать в программную область флеш благодаря этому "нововведению". Что-то подсказывает мне что китайцы сами не поняли как это произошло. В 1.0.1 b1 вызов убрали обратно. Но все это наводит меня на грустные мысли что:
  1. Пока что в Sming надо переходить на фиксированную версию SDK и обновлять ее строго вручную и только после тщательного тестирования (мало ли что еще "вкусного" нам готовит генератор случайного кода Espressif)
  2. Надо как можно скорее реверсить SDK и отказываться от всех наработок Espressif.
 

pvvx

Активный участник сообщества
они вставили вызов system_get_time в функцию spi_flash_erase_sector.
Боялись, что время потеряется :)
Переписал уже все функции связанные с flash. Чтение flash по SPI в BIOS идет максимальными блоками по 32 байта. Это к сведению, для "оптимизации" по скорости запросов к функции чтения для "лечения" SpifFS...
 

JustACat

Moderator
Команда форума
anakod, а на какой все таки фиксироваться будем? На 1.0.1 b1 или b2?
Они вон там чего-то еще во FLASH_DOWNLOAD_TOOLS обновили...
 

anakod

Moderator
Команда форума
Новая версия Sming
  • Полная поддержка кроссплатформенности: Windows, Mac, Linux
  • Большой, многофункциональный и очень полезный пример выбора и настройки WiFi сетей (все благодарности Климатехник'у, он заказчик этого проекта, публикуется, разумеется, с его согласия)
  • Множество исправлений и оптимизаций в ядре
  • Временно произведен переход на стандартный lwip для совместимости с любыми версиями SDK
  • Поддержка указания полных параметров IP в режиме Station
 

clinkme

Member
Новая версия Sming
  • Полная поддержка кроссплатформенности: Windows, Mac, Linux
Под Windows есть небольшая проблема: sh.exe на базе MSYS не поддерживает команду stat.
Т.е. вот эта строка в файле Makefile-windows.mk не работает
Код:
GET_FILESIZE ?= stat --printf="%s"
Можно что-нибудь придумать?
 

anakod

Moderator
Команда форума
  1. Можно перейти на стандартное окружение (подробности по правильной установке Sming есть в вики)
  2. Вы можете это пока просто убрать, т.к. данная функция является дополнением и не обязательна
  3. Неплохо было бы пообщаться с автором самой кроссплатформенной ветки, я пока больше сосредоточен на функционале ядра. Я у него поинтересуюсь.
 

JustACat

Moderator
Команда форума
anakod, если gitter-чат по Sming не "только для разработчиков" - то может напишете о нем в описании Sming в 1 посте?
Да, понятно, что его можно "найти" через дебри github, но, сами понимаете, далеко не все об этом знают.
Ну это к слову о "Неплохо было бы пообщаться с автором самой кроссплатформенной ветки".
То есть, если в первом сообщении крупно написать: "онлайн-чат обсуждение Sming находится тут (ссылка) - вы можете обсудить функционал, работу и т.п." - ну или как-то так.
Если нет - то нет, я не настаиваю :-Р
 

clinkme

Member
Под Windows есть небольшая проблема: sh.exe на базе MSYS не поддерживает команду stat.
Т.е. вот эта строка в файле Makefile-windows.mk не работает
Код:
GET_FILESIZE ?= stat --printf="%s"
Можно что-нибудь придумать?
Отвечу са себе. stat.exe нашелся в MinGW, все заработало :D
 
Сверху Снизу