• Система автоматизации с открытым исходным кодом на базе 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 в разы больше.
 
Сверху Снизу