• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Правильный подход программирования под RTOS

progserega

New member
Добрый день!

Насколько я понял есть три основных вырианта программирования esp8266:
1) В среде ардуино - в результате из esp8266 как бы эмулируется некое arduino-подобное устройство с setup(), loop(). Но есть возможность использовать вал библиотек, созданных под arduino, но и можно вызывать функции RTOS для работы с прерываниями, потоками и прочими мьютексами и очередями. Из минусов вижу, что из-за слоёв надстроек - не совсем может быть понятно где проблема, если что-то не заработает. А так же часть примеров откажется работать, т.к. "платформа не ардуино!". В общем как-то "сырова-то". Разбираться в проблемах кучи надстроек - мало приятного.
2) SDK nonOS - тут наверное для каких-то особо тяжеловесных задач, где не нужен RTOS.
3) SDK RTOS - тут всё бы хорошо, но тут гольный Си (что хорошо), но нет практически библиотек (что плохо). Можно портировать с ардуино, но это переписывать С++ -> Си, плюс разные проблемы внутри. Для LCD 1602 переписал под RTOS , а попробовал глянуть 1Wire - и ужаснулся сколько там зависимостей внутри и сколько переписывать. А для ESP826, например OneWire библиотеки не нашёл - все, что есть - написаны под ESP32, где есть модуль RMT (последовательной передачи). И в результати RTOS вроде и красиво, но столько всего переписывать, а готовых либ практически нет. А если и есть, то зачастую заточены именно под ESP32. И как-то это ставит в тупик.

Получается, что ESP8266 - это либо оконечное устройство для какой-нибудь HomeAssistent в виде ESPHome, либо эмулировать Arduino (пункт 1). А в чистом виде писать под RTOS - это брать спеки и писать, зачастую всё с нуля, что достаточно затратно по времени, в сравнении с "покидал кусков примеров на arduino, скрутил изолентой и в прод" - первого варианта.

Может быть я чего-то фундаментального не понимаю - прошу подсказать опытных товарищей.
 

aZholtikov

Active member
Framework Arduino для ESP8266 включает (и основан на) в себя NonOS и RTOS SDK.
Любая "основная" библиотека для ESP8266 (WiFi например) использует функции NonOS SDK. Просто она более "дружественна" к пользователю.
В Arduino можно написать WiFi.begin(). В NonOS SDK это же будет в десятках строчках кода. Собственно если "посмотреть внутрь" WiFi.begin() их можно увидеть.

Framework Arduino достаточно для 99% выполнения нужных задач.

А вот если хочется "лезть в дебри, не включенные в Arduino" - тогда можно и на чистом NonOS и RTOS SDK.

P.S. По моему опыту - ESP8266 для RTOS слабоват...
 

progserega

New member
Удивительно просто насколько мало библиотек под RTOS. Большинство людей, получается не заморачивается и пишет в ардуино-стиле через прослойку. При этом, заметил, что часть библиотек не работает, ругаясь, что они предназначены только для ардуино. В общем определённая морока... :-(
 

enjoynering

Well-known member
Если вы в начале пути, то начинайте сразу с esp32. Цены на них порой иногда меньше чем на esp8266, а возможностей (кол. gpio, cores, переферии) и примеров под arduino и RTOS в разы больше.
 
Сверху Снизу